Freigeben über


PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY Struktur (winnt.h)

Enthält Richtlinieneinstellungen zur Prozessminderung für den Hardware-erzwungenen Stapelschutz (HSP) im Benutzermodus. Die Funktionen GetProcessMitigationPolicy und SetProcessMitigationPolicy verwenden diese Struktur.

Syntax

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;

Member

DUMMYUNIONNAME

DUMMYUNIONNAME.Flags

Dieses Element ist für die Systemverwendung reserviert.

DUMMYUNIONNAME.DUMMYSTRUCTNAME

DUMMYUNIONNAME.DUMMYSTRUCTNAME.EnableUserShadowStack

Bei TRUE ist der vom Benutzermodus durch Hardware erzwungene Stapelschutz für den Prozess im Kompatibilitätsmodus aktiviert. Dies bedeutet, dass die CPU die Funktionsrückgabeadressen zur Laufzeit überprüft, indem sie einen Schattenstapelmechanismus verwendet, sofern dies von der Hardware unterstützt wird. Im Kompatibilitätsmodus sind nur Schattenstapelverletzungen in Modulen, die als kompatibel mit Schattenstapeln (CETCOMPAT) gelten, schwerwiegend. Damit ein Modul als CETCOMPAT gilt, muss es entweder mit CETCOMPAT für Binärdateien kompiliert oder mit SetProcessDynamicEnforcedCetCompatibleRanges für dynamischen Code markiert werden. Dieses Feld kann nicht über SetProcessMitigationPolicy geändert werden.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.AuditUserShadowStack

Bei TRUE werden Schattenstapelverletzungen, die fatal gewesen wären, stattdessen als nicht fatal behandelt, und Diagnoseereignisse werden im Ereignisprotokoll protokolliert. Wenn dieses Feld TRUE ist, muss EnableUserShadowStack TRUE und EnableUserShadowStackStrictMode true sein, je nachdem, ob der Kompatibilitätsmodus überwacht oder der strenge Modus überwacht wird. Dieses Feld kann nicht über SetProcessMitigationPolicy geändert werden.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.SetContextIpValidation

Wenn true, wird beim Aufrufen von APIs, die den Ausführungskontext eines Threads wie SetThreadContext und RtlRestoreContext ändern, die Überprüfung für den im neuen Ausführungskontext angegebenen Anweisungszeiger ausgeführt. Dieses Feld kann nicht über SetProcessMitigationPolicy geändert werden.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.AuditSetContextIpValidation

Bei TRUE sind stattdessen Anweisungszeiger zulässig, die zu einem Fehler bei der Überprüfung geführt hätten, und Diagnoseereignisse werden im Ereignisprotokoll protokolliert. Wenn dieses Feld TRUE ist, muss SetContextIpValidation TRUE und SetContextIpValidationRelaxedMode true sein, je nachdem, in welchem Modus die Anweisungszeigerüberprüfung derzeit ausgeführt wird. Dieses Feld kann nicht über SetProcessMitigationPolicy geändert werden.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.EnableUserShadowStackStrictMode

Bei TRUE ist der vom Benutzermodus durch Hardware erzwungene Stapelschutz für den Prozess im strikten Modus aktiviert. Alle Schattenstapelverletzungen sind fatal. Wenn dieses Feld TRUE ist, muss EnableUserShadowStack TRUE sein. Wenn HSP im Kompatibilitätsmodus aktiviert ist, kann es zur Laufzeit auf den strikten Modus aktualisiert werden, indem dieses Feld auf TRUE festgelegt und SetProcessMitigationPolicy aufgerufen wird. HSP kann nicht über SetProcessMitigationPolicy herabgestuft oder deaktiviert werden. Wenn HSP deaktiviert ist, kann er nicht über SetProcessMitigationPolicy aktiviert werden.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.BlockNonCetBinaries

Wenn TRUE, werden Binärdateien, die nicht mit CETCOMPAT kompiliert sind, am Laden in den Prozess blockiert. Diese Richtlinie kann aktiviert werden, nachdem ein Prozess gestartet wurde, indem SetProcessMitigationPolicy aufgerufen wird. Nach der Aktivierung kann sie nicht deaktiviert werden.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.BlockNonCetBinariesNonEhcont

Wenn TRUE, werden Binärdateien, die nicht mit CETCOMPAT kompiliert sind oder keine Fortsetzungsmetadaten für die Ausnahmebehandlung (/guard:ehcont) enthalten, am Laden in den Prozess blockiert. Wenn dieses Feld TRUE ist, muss BlockNonCetBinaries TRUE sein. Diese Richtlinie kann aktiviert werden, nachdem ein Prozess gestartet wurde, indem SetProcessMitigationPolicy aufgerufen wird. Sie kann nach der Aktivierung nicht deaktiviert oder herabgestuft werden.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.AuditBlockNonCetBinaries

Bei TRUE sind binäre Ladevorgänge, die blockiert worden wären, stattdessen zulässig, und Diagnoseereignisse werden im Ereignisprotokoll protokolliert. Wenn dieses Feld TRUE ist, müssen BlockNonCetBinaries TRUE und BlockNonCetBinariesNonEhcont true sein, je nachdem, welche Typen von Binärdateien derzeit am Laden in den Prozess blockiert werden. Dieses Feld kann nicht über SetProcessMitigationPolicy geändert werden.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.CetDynamicApisOutOfProcOnly

Bei TRUE können bestimmte HSP-APIs, die zum Angeben von Sicherheitseigenschaften von dynamischem Code verwendet werden, aus Sicherheitsgründen nur von außerhalb des Prozesses aufgerufen werden. Diese APIs sind SetProcessDynamicEHContinuationTargets und SetProcessDynamicEnforcedCetCompatibleRanges. Diese Richtlinie kann aktiviert werden, nachdem ein Prozess gestartet wurde, indem SetProcessMitigationPolicy aufgerufen wird. Nach der Aktivierung kann sie nicht deaktiviert werden.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.SetContextIpValidationRelaxedMode

Wenn TRUE, wird die Überprüfung des Befehlszeigers des Prozesses auf den Entspannten Modus heruntergestuft, der alle Anweisungszeiger zulässt, die sich in dynamischem Code oder in Binärdateien befinden, die keine Ausnahmebehandlungsfortsetzungsmetadaten enthalten. Wenn dieses Feld TRUE ist, muss SetContextIpValidation TRUE sein. Der Prozess kann zur Laufzeit vom entspannten Modus auf den normalen Modus aktualisiert werden, indem dieses Feld auf FALSE festgelegt und SetProcessMitigationPolicy aufgerufen wird.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.ReservedFlags

Dieses Element ist für die Systemverwendung reserviert.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 10, Version 2004 (10.0; Build 19041)
Unterstützte Mindestversion (Server) Windows Server, Version 2004 (10.0; Build 19041)
Kopfzeile winnt.h

Weitere Informationen

CETCOMPAT

GetProcessMitigationPolicy

SetProcessMitigationPolicy