Partager via


structure PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY (winnt.h)

Contient les paramètres de stratégie d’atténuation des processus pour la protection de la pile matérielle appliquée en mode utilisateur (HSP). Les fonctions GetProcessMitigationPolicy et SetProcessMitigationPolicy utilisent cette structure.

Syntaxe

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;

Membres

DUMMYUNIONNAME

DUMMYUNIONNAME.Flags

Ce membre est réservé à l’utilisation du système.

DUMMYUNIONNAME.DUMMYSTRUCTNAME

DUMMYUNIONNAME.DUMMYSTRUCTNAME.EnableUserShadowStack

Si la valeur est TRUE, la protection de la pile matérielle appliquée en mode utilisateur est activée pour le processus en mode de compatibilité. Cela signifie que le processeur vérifie les adresses de retour de fonction au moment de l’exécution en utilisant un mécanisme de pile d’ombres, s’il est pris en charge par le matériel. En mode de compatibilité, seules les violations de pile d’ombres qui se produisent dans les modules considérés comme compatibles avec les piles d’ombres (CETCOMPAT) sont irrécupérables. Pour qu’un module soit considéré comme CETCOMPAT, il doit être compilé avec CETCOMPAT pour les fichiers binaires ou marqué à l’aide de SetProcessDynamicEnforcedCetCompatibleRanges pour le code dynamique. Ce champ ne peut pas être modifié via SetProcessMitigationPolicy.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.AuditUserShadowStack

Si la valeur est TRUE, les violations de pile d’ombres qui auraient été irrécupérables sont traitées comme non fatales et les événements de diagnostic sont enregistrés dans le journal des événements. Lorsque ce champ a la valeur TRUE, EnableUserShadowStack doit avoir la valeur TRUE et EnableUserShadowStackStrictMode peut avoir la valeur TRUE, selon que le mode de compatibilité est en cours d’audit ou que le mode strict est en cours d’audit. Ce champ ne peut pas être modifié via SetProcessMitigationPolicy.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.SetContextIpValidation

Si la valeur est TRUE, lors de l’appel d’API qui modifient le contexte d’exécution d’un thread tel que SetThreadContext et RtlRestoreContext, la validation est effectuée sur le pointeur d’instruction spécifié dans le nouveau contexte d’exécution. Ce champ ne peut pas être modifié via SetProcessMitigationPolicy.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.AuditSetContextIpValidation

Si la valeur EST TRUE, les pointeurs d’instruction qui auraient provoqué l’échec de la validation sont autorisés et les événements de diagnostic sont enregistrés dans le journal des événements. Lorsque ce champ a la valeur TRUE, SetContextIpValidation doit avoir la valeur TRUE et SetContextIpValidationRelaxedMode peut avoir la valeur TRUE, en fonction du mode dans lequel la validation du pointeur d’instruction fonctionne actuellement. Ce champ ne peut pas être modifié via SetProcessMitigationPolicy.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.EnableUserShadowStackStrictMode

Si la valeur est TRUE, la protection de la pile matérielle appliquée en mode utilisateur est activée pour le processus en mode strict. Toutes les violations de la pile d’ombres sont irrécupérables. Lorsque ce champ a la valeur TRUE, EnableUserShadowStack doit avoir la valeur TRUE. Si HSP est activé en mode de compatibilité, il peut être mis à niveau vers le mode strict au moment de l’exécution en définissant ce champ sur TRUE et en appelant SetProcessMitigationPolicy. HSP ne peut pas être rétrogradé ou désactivé via SetProcessMitigationPolicy. Si HSP est désactivé, il ne peut pas être activé via SetProcessMitigationPolicy.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.BlockNonCetBinaries

Si la valeur est TRUE, les fichiers binaires qui ne sont pas compilés avec CETCOMPAT ne peuvent pas être chargés dans le processus. Cette stratégie peut être activée une fois qu’un processus a démarré en appelant SetProcessMitigationPolicy. Il ne peut pas être désactivé une fois activé.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.BlockNonCetBinariesNonEhcont

Si la valeur est TRUE, les fichiers binaires qui ne sont pas compilés avec CETCOMPAT ou qui ne contiennent pas d’exception gérant les métadonnées de continuation (/guard :ehcont) ne sont pas chargés dans le processus. Lorsque ce champ a la valeur TRUE, BlockNonCetBinaries doit avoir la valeur TRUE. Cette stratégie peut être activée une fois qu’un processus a démarré en appelant SetProcessMitigationPolicy. Il ne peut pas être désactivé ou rétrogradé une fois activé.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.AuditBlockNonCetBinaries

Si la valeur est TRUE, les charges binaires qui auraient été bloquées sont autorisées et les événements de diagnostic sont enregistrés dans le journal des événements. Lorsque ce champ a la valeur TRUE, BlockNonCetBinaries doit avoir la valeur TRUE et BlockNonCetBinariesNonEhcont peut avoir la valeur TRUE, en fonction des types de fichiers binaires actuellement bloqués dans le processus. Ce champ ne peut pas être modifié via SetProcessMitigationPolicy.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.CetDynamicApisOutOfProcOnly

Si la valeur est TRUE, certaines API HSP utilisées pour spécifier les propriétés de sécurité du code dynamique ne peuvent être appelées qu’en dehors du processus à des fins de sécurité. Ces API sont SetProcessDynamicEHContinuationTargets et SetProcessDynamicEnforcedCetCompatibleRanges. Cette stratégie peut être activée une fois qu’un processus a démarré en appelant SetProcessMitigationPolicy. Il ne peut pas être désactivé une fois activé.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.SetContextIpValidationRelaxedMode

Si la valeur est TRUE, la validation du pointeur d’instruction du processus est rétrogradée en mode détendu, ce qui autorise tous les pointeurs d’instruction qui se trouvent dans du code dynamique ou dans des fichiers binaires qui ne contiennent pas d’exception gérant les métadonnées de continuation. Lorsque ce champ a la valeur TRUE, SetContextIpValidation doit avoir la valeur TRUE. Le processus peut être mis à niveau du mode détendu vers le mode normal au moment de l’exécution en définissant ce champ sur FALSE et en appelant SetProcessMitigationPolicy.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.ReservedFlags

Ce membre est réservé à l’utilisation du système.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10, version 2004 (10.0 ; Build 19041)
Serveur minimal pris en charge Windows Server, version 2004 (10.0 ; Build 19041)
En-tête winnt.h

Voir aussi

CETCOMPAT

GetProcessMitigationPolicy

SetProcessMitigationPolicy