Compartir a través de


estructura PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY (winnt.h)

Contiene la configuración de la directiva de mitigación de procesos para la protección de pila aplicada por hardware (HSP) en modo de usuario. Las funciones GetProcessMitigationPolicy y SetProcessMitigationPolicy usan esta estructura.

Sintaxis

typedef struct _PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY {
  union {
    DWORD Flags;
    struct {
      DWORD EnableUserShadowStack : 1;
      DWORD AuditUserShadowStack : 1;
      DWORD SetContextIpValidation : 1;
      DWORD AuditSetContextIpValidation : 1;
      DWORD EnableUserShadowStackStrictMode : 1;
      DWORD BlockNonCetBinaries : 1;
      DWORD BlockNonCetBinariesNonEhcont : 1;
      DWORD AuditBlockNonCetBinaries : 1;
      DWORD CetDynamicApisOutOfProcOnly : 1;
      DWORD SetContextIpValidationRelaxedMode : 1;
      DWORD ReservedFlags : 22;
    } DUMMYSTRUCTNAME;
  } DUMMYUNIONNAME;
} PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY, *PPROCESS_MITIGATION_USER_SHADOW_STACK_POLICY;

Miembros

DUMMYUNIONNAME

DUMMYUNIONNAME.Flags

Este miembro está reservado para uso del sistema.

DUMMYUNIONNAME.DUMMYSTRUCTNAME

DUMMYUNIONNAME.DUMMYSTRUCTNAME.EnableUserShadowStack

Si es TRUE, la protección de pila aplicada por hardware en modo de usuario está habilitada para el proceso en modo de compatibilidad. Esto significa que la CPU comprueba que la función devuelva direcciones en tiempo de ejecución mediante el uso de un mecanismo de pila de sombras, si es compatible con el hardware. En el modo de compatibilidad, solo las infracciones de la pila de sombras que se producen en los módulos que se consideran compatibles con las pilas de sombras (CETCOMPAT) son fatales. Para que un módulo se considere CETCOMPAT, debe compilarse con CETCOMPAT para archivos binarios o marcarse con SetProcessDynamicEnforcedCetCompatibleRanges para el código dinámico. Este campo no se puede cambiar a través de SetProcessMitigationPolicy.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.AuditUserShadowStack

Si es TRUE, las infracciones de la pila de sombras que habrían sido fatales se tratan en su lugar como eventos irrecuperables y los eventos de diagnóstico se registran en el registro de eventos. Cuando este campo es TRUE, EnableUserShadowStack debe ser TRUE y EnableUserShadowStackStrictMode puede ser TRUE, dependiendo de si se audita el modo de compatibilidad o se está auditando el modo estricto. Este campo no se puede cambiar a través de SetProcessMitigationPolicy.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.SetContextIpValidation

Si es TRUE, al llamar a las API que modifican el contexto de ejecución de un subproceso como SetThreadContext y RtlRestoreContext, la validación se realiza en el puntero de instrucción especificado en el nuevo contexto de ejecución. Este campo no se puede cambiar a través de SetProcessMitigationPolicy.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.AuditSetContextIpValidation

Si es TRUE, los punteros de instrucción que habrían provocado un error en la validación se permiten y los eventos de diagnóstico se registran en el registro de eventos. Cuando este campo es TRUE, SetContextIpValidation debe ser TRUE y SetContextIpValidationRelaxedMode puede ser TRUE, dependiendo del modo en que la validación del puntero de instrucción esté funcionando actualmente. Este campo no se puede cambiar a través de SetProcessMitigationPolicy.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.EnableUserShadowStackStrictMode

Si es TRUE, la protección de pila aplicada por hardware en modo de usuario está habilitada para el proceso en modo estricto. Todas las infracciones de la pila de sombras son fatales. Cuando este campo es TRUE, EnableUserShadowStack debe ser TRUE. Si HSP está habilitado en modo de compatibilidad, se puede actualizar al modo estricto en tiempo de ejecución estableciendo este campo en TRUE y llamando a SetProcessMitigationPolicy. HSP no se puede degradar ni deshabilitar mediante SetProcessMitigationPolicy. Si HSP está deshabilitado, no se puede habilitar a través de SetProcessMitigationPolicy.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.BlockNonCetBinaries

Si es TRUE, los archivos binarios que no se compilan con CETCOMPAT no se pueden cargar en el proceso. Esta directiva se puede habilitar después de que se haya iniciado un proceso llamando a SetProcessMitigationPolicy. No se puede deshabilitar una vez habilitado.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.BlockNonCetBinariesNonEhcont

Si es TRUE, los archivos binarios que no se compilan con CETCOMPAT o no contienen metadatos de continuación de control de excepciones (/guard:ehcont) no se pueden cargar en el proceso. Cuando este campo es TRUE, BlockNonCetBinaries debe ser TRUE. Esta directiva se puede habilitar después de que se haya iniciado un proceso llamando a SetProcessMitigationPolicy. No se puede deshabilitar ni degradar una vez habilitado.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.AuditBlockNonCetBinaries

Si es TRUE, las cargas binarias que se habrían bloqueado se permiten en su lugar y los eventos de diagnóstico se registran en el registro de eventos. Cuando este campo es TRUE, BlockNonCetBinaries debe ser TRUE y BlockNonCetBinariesNonEhcont puede ser TRUE, dependiendo de los tipos de archivos binarios que se están bloqueando actualmente para cargarse en el proceso. Este campo no se puede cambiar a través de SetProcessMitigationPolicy.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.CetDynamicApisOutOfProcOnly

Si es TRUE, determinadas API de HSP usadas para especificar propiedades de seguridad del código dinámico solo se pueden llamar desde fuera del proceso con fines de seguridad. Estas API son SetProcessDynamicEHContinuationTargets y SetProcessDynamicEnforcedCetCompatibleRanges. Esta directiva se puede habilitar después de que se haya iniciado un proceso llamando a SetProcessMitigationPolicy. No se puede deshabilitar una vez habilitado.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.SetContextIpValidationRelaxedMode

Si es TRUE, la validación del puntero de instrucción del proceso se degrada al modo relajado, lo que permite que todos los punteros de instrucción que estén en código dinámico o en archivos binarios que no contengan metadatos de continuación de control de excepciones. Cuando este campo es TRUE, SetContextIpValidation debe ser TRUE. El proceso se puede actualizar del modo relajado al modo normal en tiempo de ejecución estableciendo este campo en FALSE y llamando a SetProcessMitigationPolicy.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.ReservedFlags

Este miembro está reservado para uso del sistema.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 10, versión 2004 (10.0; Compilación 19041)
Servidor mínimo compatible Windows Server, versión 2004 (10.0; Compilación 19041)
Encabezado winnt.h

Consulte también

CETCOMPAT

GetProcessMitigationPolicy

SetProcessMitigationPolicy