UpdateProcThreadAttribute-Funktion (processthreadsapi.h)
Aktualisiert das angegebene Attribut in einer Liste von Attributen für die Prozess- und Threaderstellung.
Syntax
BOOL UpdateProcThreadAttribute(
[in, out] LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList,
[in] DWORD dwFlags,
[in] DWORD_PTR Attribute,
[in] PVOID lpValue,
[in] SIZE_T cbSize,
[out, optional] PVOID lpPreviousValue,
[in, optional] PSIZE_T lpReturnSize
);
Parameter
[in, out] lpAttributeList
Ein Zeiger auf eine Attributliste, die von der InitializeProcThreadAttributeList-Funktion erstellt wurde.
[in] dwFlags
Dieser Parameter ist reserviert und muss null sein.
[in] Attribute
Der Attributschlüssel, der in der Attributliste aktualisiert werden soll. Dieser Parameter kann einen der folgenden Werte annehmen.
Wert | Bedeutung |
---|---|
|
Der lpValue-Parameter ist ein Zeiger auf eine GROUP_AFFINITY-Struktur , die die Prozessorgruppenaffinität für den neuen Thread angibt.
Unterstützt in Windows 7 und höher und Windows Server 2008 R2 und höher. |
|
Der lpValue-Parameter ist ein Zeiger auf eine Liste von Handles, die vom untergeordneten Prozess geerbt werden sollen.
Diese Handles müssen als vererbbare Handles erstellt werden und dürfen keine Pseudohandles enthalten, wie sie von der GetCurrentProcess - oder GetCurrentThread-Funktion zurückgegeben werden. Wenn Sie dieses Attribut verwenden, übergeben Sie den Wert TRUE für den bInheritHandles-Parameter der CreateProcess-Funktion .
|
|
Der lpValue-Parameter ist ein Zeiger auf eine PROCESSOR_NUMBER-Struktur , die den idealen Prozessor für den neuen Thread angibt.
Unterstützt in Windows 7 und höher und Windows Server 2008 R2 und höher. |
|
Der lpValue-Parameter ist ein Zeiger auf einen WORD-Wert , der die Computerarchitektur des untergeordneten Prozesses angibt.
Unterstützt in Windows 11 und höher. Das WORD , auf das von lpValue verwiesen wird, kann ein Wert sein, der unter IMAGE FILE MACHINE CONSTANTS aufgeführt ist. |
|
Der parameter lpValue ist ein Zeiger auf einen DWORD - oder DWORD64 , der die Exploit-Entschärfungsrichtlinie für den untergeordneten Prozess angibt. Ab Windows 10, Version 1703, kann dieser Parameter auch ein Zeiger auf ein Array mit zwei Elementen DWORD64 sein.
Die angegebene Richtlinie überschreibt die für die Anwendung und das System festgelegten Richtlinien und kann nicht geändert werden, nachdem der untergeordnete Prozess ausgeführt wird. Der DWORD - oder DWORD64 , auf den lpValue verweist, kann einer oder mehrere der in den Hinweisen aufgeführten Werte sein. Unterstützt in Windows 7 und höher und Windows Server 2008 R2 und höher. |
|
Der lpValue-Parameter ist ein Zeiger auf das Handle eines Prozesses, der (anstelle des aufrufenden Prozesses) als übergeordnetes Element für den zu erstellenden Prozess verwendet werden soll. Das Handle für den verwendeten Prozess muss über das zugriffsrecht PROCESS_CREATE_PROCESS verfügen.
Zu den Attributen, die vom angegebenen Prozess geerbt werden, gehören Handles, Gerätezuordnung, Prozessoraffinität, Priorität, Kontingente, das Prozesstoken und das Auftragsobjekt. (Beachten Sie, dass einige Attribute, z. B. der Debugport, aus dem Erstellungsprozess stammen, nicht der durch dieses Handle angegebene Prozess.) |
|
Der lpValue-Parameter ist ein Zeiger auf die Knotennummer des bevorzugten NUMA-Knotens für den neuen Prozess.
Unterstützt in Windows 7 und höher und Windows Server 2008 R2 und höher. |
|
Der lpValue-Parameter ist ein Zeiger auf eine UMS_CREATE_THREAD_ATTRIBUTES Struktur, die einen UMS-Threadkontext (User Mode Scheduling) und eine UMS-Vervollständigungsliste angibt, die dem Thread zugeordnet werden soll.
Nachdem der UMS-Thread erstellt wurde, wird er vom System in die Warteschlange der angegebenen Vervollständigungsliste gestellt. Der UMS-Thread wird nur ausgeführt, wenn der UMS-Planer einer Anwendung den UMS-Thread aus der Vervollständigungsliste abruft und zur Ausführung auswählt. Weitere Informationen finden Sie unter Benutzermodusplanung. Unterstützt in Windows 7 und höher und Windows Server 2008 R2 und höher. In Windows 11 und höher nicht unterstützt (siehe Benutzermodusplanung). |
|
Der lpValue-Parameter ist ein Zeiger auf eine SECURITY_CAPABILITIES-Struktur , die die Sicherheitsfunktionen eines App-Containers definiert. Wenn dieses Attribut festgelegt ist, wird der neue Prozess als AppContainer-Prozess erstellt.
Unterstützt in Windows 8 und höher und Windows Server 2012 und höher. |
|
Der lpValue-Parameter ist ein Zeiger auf den DWORD-WertPROTECTION_LEVEL_SAME. Dadurch wird angegeben, dass die Schutzebene des untergeordneten Prozesses mit der Schutzebene des übergeordneten Prozesses identisch ist.
Unterstützt in Windows 8.1 und höher und Windows Server 2012 R2 und höher. |
|
Der parameter lpValue ist ein Zeiger auf einen DWORD-Wert , der die untergeordnete Prozessrichtlinie angibt. Die Richtlinie gibt an, ob das Erstellen eines untergeordneten Prozesses zugelassen werden soll.
Informationen zu den möglichen Werten für das DWORD , auf das lpValue verweist, finden Sie unter Hinweise. Unterstützt in Windows 10 und höher sowie Windows Server 2016 und höher. |
|
Dieses Attribut ist nur für win32-Anwendungen relevant, die mithilfe der Desktop Bridge in UWP-Pakete konvertiert wurden.
Der parameter lpValue ist ein Zeiger auf einen DWORD-Wert , der die Desktop-App-Richtlinie angibt. Die Richtlinie gibt an, ob nachfolgernde Prozesse weiterhin in der Desktopumgebung ausgeführt werden sollen. Informationen zu den möglichen Werten für das DWORD , auf das lpValue verweist, finden Sie unter Hinweise. Unterstützt in Windows 10 Version 1703 und höher und Windows Server Version 1709 und höher. |
|
Der lpValue-Parameter ist ein Zeiger auf eine Liste von Auftragshandles, die dem untergeordneten Prozess in der angegebenen Reihenfolge zugewiesen werden sollen.
Unterstützt in Windows 10 und höher sowie Windows Server 2016 und höher. |
|
Der lpValue-Parameter ist ein Zeiger auf einen DWORD64 Wert, der den Satz optionaler XState-Features angibt, die für den neuen Thread aktiviert werden sollen.
Unterstützt in Windows 11 und höher sowie Windows Server 2022 und höher. |
[in] lpValue
Ein Zeiger auf den Attributwert. Dieser Wert muss beibehalten werden, bis die Attributliste mithilfe der DeleteProcThreadAttributeList-Funktion zerstört wird.
[in] cbSize
Die Größe des Attributwerts, der vom lpValue-Parameter angegeben wird.
[out, optional] lpPreviousValue
Dieser Parameter ist reserviert und muss NULL sein.
[in, optional] lpReturnSize
Dieser Parameter ist reserviert und muss NULL sein.
Rückgabewert
Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null.
Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.
Hinweise
Eine Attributliste ist eine undurchsichtige Struktur, die aus einer Reihe von Schlüssel-Wert-Paaren besteht, eines für jedes Attribut. Ein Prozess kann nur die in diesem Thema beschriebenen Attributschlüssel aktualisieren.
Der DWORD - oder DWORD64 , auf den lpValue verweist, kann mindestens einer der folgenden Werte sein, wenn Sie PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY für den Parameter Attribute angeben:
- PROCESS_CREATION_MITIGATION_POLICY_DEP_ENABLE (0x00000001)Aktiviert die Verhinderung der Datenausführung (Data Execution Prevention, DEP) für den untergeordneten Prozess. Weitere Informationen finden Sie unter Verhinderung von Datenausführungen.
- PROCESS_CREATION_MITIGATION_POLICY_DEP_ATL_THUNK_ENABLE (0x00000002)Aktiviert die DEP-ATL-Thunk-Emulation für den untergeordneten Prozess. Die DEP-ATL-Thunk-Emulation bewirkt, dass das System NX-Fehler abfängt, die von der THUNK-Schicht (Active Template Library) stammen. Dieser Wert kann nur mit PROCESS_CREATION_MITIGATION_POLICY_DEP_ENABLE angegeben werden.
- PROCESS_CREATION_MITIGATION_POLICY_SEHOP_ENABLE (0x00000004)Aktiviert den strukturierten Ausnahmehandler-Überschreibungsschutz (SEHOP) für den untergeordneten Prozess. SEHOP blockiert Exploits, die den strukturierten Ausnahmehandler (SEH) overwrite-Technik verwenden.
-
Windows 7, Windows Server 2008 R2, Windows Server 2008 und Windows Vista: Die folgenden Werte werden erst unter Windows 8 und Windows Server 2012 unterstützt.
-
Die AsLR-Richtlinie (Address Space Layout Randomization, Zufällige Anordnung des Adressraumlayouts erzwingen) erstellt, wenn sie aktiviert ist, die Bilder, die nicht mit der dynamischen Basis kompatibel sind, zwangsweise neu, indem sie so verhält, als ob zur Ladezeit eine Imagebasiskollision aufgetreten wäre. Wenn Verlagerungen erforderlich sind, werden Bilder, die keinen Basisumlagerungsabschnitt haben, nicht geladen.
Die folgenden Entschärfungsoptionen sind für die obligatorische ASLR-Richtlinie verfügbar:
- PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_ALWAYS_ON (0x00000001 << 8)
- PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_ALWAYS_OFF (0x00000002 << 8)
- PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_ALWAYS_ON_REQ_RELOCS (0x00000003 << 8)
-
Die Heap-Beendigungsrichtlinie bei Beschädigungen bewirkt, dass der Heap beendet wird, wenn er beschädigt wird. Beachten Sie, dass "always off" die Standardaktivierung für Binärdateien mit aktuellen Subsystemversionen, die im Imageheader festgelegt sind, nicht außer Kraft setzt. Heap-Beendigung bei Beschädigung wird im Benutzermodus erzwungen.
Die folgenden Entschärfungsoptionen sind für heap terminate on corruption policy verfügbar:
- PROCESS_CREATION_MITIGATION_POLICY_HEAP_TERMINATE_ALWAYS_ON (0x00000001 << 12)
- PROCESS_CREATION_MITIGATION_POLICY_HEAP_TERMINATE_ALWAYS_OFF (0x00000002 << 12)
-
Die Bottom-up-Randomisierungsrichtlinie, die Stapel randomisierungsoptionen enthält, bewirkt, dass ein zufälliger Standort als niedrigste Benutzeradresse verwendet wird.
Die folgenden Entschärfungsoptionen sind für die Bottom-up-Randomisierungsrichtlinie verfügbar:
- PROCESS_CREATION_MITIGATION_POLICY_BOTTOM_UP_ASLR_ALWAYS_ON (0x00000001 << 16)
- PROCESS_CREATION_MITIGATION_POLICY_BOTTOM_UP_ASLR_ALWAYS_OFF (0x00000002 << 16)
-
Die High-Entropie-Bottom-up-Randomisierungsrichtlinie, sofern aktiviert, bewirkt, dass bis zu 1 TB bottom-up-Varianz verwendet werden. Beachten Sie, dass die Randomisierung mit hoher Entropie nach unten nach oben nur dann wirksam ist, wenn auch bottom-up ASLR aktiviert ist. Die High-Entropie-Bottom-up-Randomisierung ist nur für native 64-Bit-Prozesse sinnvoll.
Die folgenden Entschärfungsoptionen sind für die High-Entropy Bottom-up-Randomisierungsrichtlinie verfügbar:
- PROCESS_CREATION_MITIGATION_POLICY_HIGH_ENTROPY_ASLR_ALWAYS_ON (20. << 0x00000001)
- PROCESS_CREATION_MITIGATION_POLICY_HIGH_ENTROPY_ASLR_ALWAYS_OFF (20. << 0x00000002)
-
Die Strenge Handle-Überprüfungs-Erzwingungsrichtlinie bewirkt, dass bei einem fehlerhaften Handle-Verweis sofort eine Ausnahme ausgelöst wird. Wenn diese Richtlinie nicht aktiviert ist, wird stattdessen vom Handle-Verweis ein Fehlerstatus zurückgegeben.
Die folgenden Entschärfungsoptionen sind für die Richtlinie zur Erzwingung der strengen Handleüberprüfung verfügbar:
- PROCESS_CREATION_MITIGATION_POLICY_STRICT_HANDLE_CHECKS_ALWAYS_ON (0x00000001 << 24)
- PROCESS_CREATION_MITIGATION_POLICY_STRICT_HANDLE_CHECKS_ALWAYS_OFF (0x00000002 << 24)
-
Die Win32k-Systemaufruf-Deaktivierungsrichtlinie verhindert, wenn sie aktiviert ist, dass ein Prozess Win32k-Aufrufe durchführt.
Die folgenden Entschärfungsoptionen sind für die Win32k-Richtlinie zum Deaktivieren von Systemaufrufen verfügbar:
- PROCESS_CREATION_MITIGATION_POLICY_WIN32K_SYSTEM_CALL_DISABLE_ALWAYS_ON (0x00000001 << 28)
- PROCESS_CREATION_MITIGATION_POLICY_WIN32K_SYSTEM_CALL_DISABLE_ALWAYS_OFF (0x00000002 << 28)
-
Die Deaktivierungsrichtlinie für Erweiterungspunkt verhindert, wenn sie aktiviert ist, dass bestimmte integrierte Erweiterungspunkte von Drittanbietern verwendet werden. Diese Richtlinie blockiert die folgenden Erweiterungspunkte:
- AppInit-DLLs
- Winsock Layered Service Providers (LSPs)
- Globale Windows-Hooks
- Legacyeingabemethoden-Editoren (IMEs)
Die folgenden Entschärfungsoptionen sind für die Deaktivierungsrichtlinie des Erweiterungspunkts verfügbar:
- PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_ALWAYS_ON (0x00000001 << 32)
- PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_ALWAYS_OFF (0x00000002 << 32)
-
Wenn die CFG-Richtlinie (Control Flow Guard) aktiviert ist, gelten zusätzliche Einschränkungen für indirekte Aufrufe in Code, der mit aktiviertem CFG erstellt wurde.
Für die Steuerung der CFG-Richtlinie stehen die folgenden Entschärfungsoptionen zur Verfügung:
- PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_MASK (0x000000003ui64 << 40)
- PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_DEFER (0x000000000ui64 << 40)
- PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_ALWAYS_ON (0x00000001ui64 << 40)
- PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_ALWAYS_OFF (0x000000002ui64 << 40)
- PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_EXPORT_SUPPRESSION (0x000000003ui64 << 40)
-
Darüber hinaus kann die folgende Richtlinie angegeben werden, um zu erzwingen, dass EXEs/DLLs CFG aktivieren müssen. Wenn versucht wird, eine EXE/DLL zu laden, die CFG nicht aktiviert, tritt beim Laden ein Fehler auf:
- PROCESS_CREATION_MITIGATION_POLICY2_STRICT_CONTROL_FLOW_GUARD_MASK (0x00000003ui64 << 8)
- PROCESS_CREATION_MITIGATION_POLICY2_STRICT_CONTROL_FLOW_GUARD_DEFER (0x000000000ui64 << 8)
- PROCESS_CREATION_MITIGATION_POLICY2_STRICT_CONTROL_FLOW_GUARD_ALWAYS_ON (0x00000001ui64 << 8)
- PROCESS_CREATION_MITIGATION_POLICY2_STRICT_CONTROL_FLOW_GUARD_ALWAYS_OFF (0x000000002ui64 << 8)
- PROCESS_CREATION_MITIGATION_POLICY2_STRICT_CONTROL_FLOW_GUARD_RESERVED (0x000000003ui64 << 8)
-
Wenn die Richtlinie für dynamischen Code aktiviert ist, wird verhindert, dass ein Prozess dynamischen Code generiert oder ausführbaren Code ändert.
Die folgenden Entschärfungsoptionen sind für die Richtlinie für dynamischen Code verfügbar:
- PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_MASK (0x000000003ui64 << 36)
- PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_DEFER (0x000000000ui64 << 36)
- PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_ALWAYS_ON (0x00000001ui64 << 36)
- PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_ALWAYS_OFF (0x000000002ui64 << 36)
- PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_ALWAYS_ON_ALLOW_OPT_OUT (0x000000003ui64 << 36)
-
Die Binärsignaturrichtlinie erfordert, dass EXEs/DLLs ordnungsgemäß signiert werden.
Die folgenden Entschärfungsoptionen sind für die Richtlinie für binäre Signaturen verfügbar:
- PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_MASK (0x000000003ui64 << 44)
- PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_DEFER (0x000000000ui64 << 44)
- PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_ALWAYS_ON (0x00000001ui64 << 44)
- PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_ALWAYS_OFF (0x00000002ui64 << 44)
- PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_ALLOW_STORE (0x00000003ui64 << 44)
-
Die Richtlinie zum Laden von Schriftarten für den Prozess bestimmt, ob nicht systemfremde Schriftarten für einen Prozess geladen werden können. Wenn die Richtlinie aktiviert ist, wird verhindert, dass der Prozess Nicht-Systemschriftarten lädt.
Die folgenden Entschärfungsoptionen sind für die Richtlinie zur Verhinderung des Ladens von Schriftarten verfügbar:
- PROCESS_CREATION_MITIGATION_POLICY_FONT_DISABLE_MASK (0x000000003ui64 << 48)
- PROCESS_CREATION_MITIGATION_POLICY_FONT_DISABLE_DEFER (0x000000000ui64 << 48)
- PROCESS_CREATION_MITIGATION_POLICY_FONT_DISABLE_ALWAYS_ON (0x000000001ui64 << 48)
- PROCESS_CREATION_MITIGATION_POLICY_FONT_DISABLE_ALWAYS_OFF (0x000000002ui64 << 48)
- PROCESS_CREATION_MITIGATION_POLICY_AUDIT_NONSYSTEM_FONTS (0x000000003ui64 << 48)
-
Die Richtlinie zum Laden von Images des Prozesses bestimmt die Typen von ausführbaren Images, die dem Prozess zugeordnet werden können. Wenn die Richtlinie aktiviert ist, können Bilder nicht von einigen Speicherorten geladen werden, z. B. Geräte oder Dateien mit der obligatorischen Bezeichnung "Niedrig" entfernen.
Die folgenden Entschärfungsoptionen sind für die Richtlinie zum Laden von Images verfügbar:
- PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_MASK (0x000000003ui64 << 52)
- PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_DEFER (0x000000000ui64 << 52)
- PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_ALWAYS_ON (0x00000001ui64 << 52)
- PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_ALWAYS_OFF (0x000000002ui64 << 52)
- PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_RESERVED (0x000000003ui64 << 52)
- PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_LOW_LABEL_MASK (0x000000003ui64 << 56)
- PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_LOW_LABEL_DEFER (0x000000000ui64 << 56)
- PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_LOW_LABEL_ALWAYS_ON (0x00000001ui64 << 56)
- PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_LOW_LABEL_ALWAYS_OFF (0x000000002ui64 << 56)
- PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_LOW_LABEL_RESERVED (0x000000003ui64 << 56)
- PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_PREFER_SYSTEM32_MASK (0x000000003ui64 << 60)
- PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_PREFER_SYSTEM32_DEFER (0x000000000ui64 << 60)
- PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_PREFER_SYSTEM32_ALWAYS_ON (0x00000001ui64 << 60)
- PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_PREFER_SYSTEM32_ALWAYS_OFF (0x000000002ui64 << 60)
- PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_PREFER_SYSTEM32_RESERVED (0x000000003ui64 << 60)
-
Die AsLR-Richtlinie (Address Space Layout Randomization, Zufällige Anordnung des Adressraumlayouts erzwingen) erstellt, wenn sie aktiviert ist, die Bilder, die nicht mit der dynamischen Basis kompatibel sind, zwangsweise neu, indem sie so verhält, als ob zur Ladezeit eine Imagebasiskollision aufgetreten wäre. Wenn Verlagerungen erforderlich sind, werden Bilder, die keinen Basisumlagerungsabschnitt haben, nicht geladen.
-
Windows 10, Version 1709: Der folgende Wert ist nur in Windows 10, Version 1709 oder höher, und nur mit den Windows-Sicherheitsupdates vom Januar 2018 und allen anwendbaren Firmwareupdates des OEM-Geräteherstellers verfügbar. Informationen zum Schutz vor spekulativen ausführungsseitigen Kanalrisiken finden Sie unter Windows-Clientleitfaden für IT-Experten.
-
- PROCESS_CREATION_MITIGATION_POLICY2_RESTRICT_INDIRECT_BRANCH_PREDICTION_ALWAYS_ON (0x000000001ui64 << 16)Dieses Flag kann von Prozessen verwendet werden, um sich vor gleichgeordneten Hardwarethreads (Hyperthreads) zu schützen, um indirekte Verzweigungsvorhersagen zu beeinträchtigen. Prozesse, die vertrauliche Informationen in ihrem Adressraum enthalten, sollten erwägen, dieses Flag zu aktivieren, um vor Angriffen mit indirekter Verzweigungsvorhersage (z. B. CVE-2017-5715) zu schützen.
-
-
Windows 10, Version 1809: Der folgende Wert ist nur in Windows 10, Version 1809 oder höher, verfügbar.
-
- PROCESS_CREATION_MITIGATION_POLICY2_SPECULATIVE_STORE_BYPASS_DISABLE_ALWAYS_ON (0x00000001ui64 << 24)Dieses Flag kann von Prozessen verwendet werden, um die SSB-Funktion (Speculative Store Bypass) von CPUs zu deaktivieren, die anfällig für spekulative Ausführungsseitenkanalangriffe mit SSB sind (CVE-2018-3639). Dieses Flag wird nur von bestimmten Intel-CPUs unterstützt, die über die erforderlichen Hardwarefeatures verfügen. Auf CPUs, die dieses Feature nicht unterstützen, hat das Flag keine Auswirkungen.
-
Windows 10, Version 2004: Die folgenden Werte sind nur in Windows 10, Version 2004 oder höher, verfügbar.
Hardwaregestützter Stapelschutz (HSP) ist ein hardwarebasiertes Sicherheitsfeature, bei dem die CPU zur Laufzeit mithilfe eines Schattenstapelmechanismus die Rückgabeadressen der Funktion überprüft. Für HSP im Benutzermodus ist der Standardmodus der Kompatibilitätsmodus, bei dem nur Schattenstapelverletzungen in Modulen, die als kompatibel mit Schattenstapeln (CETCOMPAT) gelten, schwerwiegend sind. Im strikten Modus sind alle Verstöße gegen Schattenstapel fatal.
Die folgenden Entschärfungsoptionen sind für den Hardware-erzwungenen Stapelschutz im Benutzermodus und zugehörige Features verfügbar:
- PROCESS_CREATION_MITIGATION_POLICY2_CET_USER_SHADOW_STACKS_ALWAYS_ON (0x000000001ui64 << 28)
- PROCESS_CREATION_MITIGATION_POLICY2_CET_USER_SHADOW_STACKS_ALWAYS_OFF (0x000000002ui64 << 28)
- PROCESS_CREATION_MITIGATION_POLICY2_CET_USER_SHADOW_STACKS_STRICT_MODE (0x000000003ui64 << 28)
- PROCESS_CREATION_MITIGATION_POLICY2_USER_CET_SET_CONTEXT_IP_VALIDATION_ALWAYS_ON (0x00000001ui64 << 32)
- PROCESS_CREATION_MITIGATION_POLICY2_USER_CET_SET_CONTEXT_IP_VALIDATION_ALWAYS_OFF (0x000000002ui64 << 32)
- PROCESS_CREATION_MITIGATION_POLICY2_USER_CET_SET_CONTEXT_IP_VALIDATION_RELAXED_MODE (0x000000003ui64 << 32)
- PROCESS_CREATION_MITIGATION_POLICY2_BLOCK_NON_CET_BINARIES_ALWAYS_ON (0x000000001ui64 << 36)
- PROCESS_CREATION_MITIGATION_POLICY2_BLOCK_NON_CET_BINARIES_ALWAYS_OFF (0x000000002ui64 << 36)
- PROCESS_CREATION_MITIGATION_POLICY2_BLOCK_NON_CET_BINARIES_NON_EHCONT (0x000000003ui64 << 36)
- PROCESS_CREATION_MITIGATION_POLICY2_CET_DYNAMIC_APIS_OUT_OF_PROC_ONLY_ALWAYS_ON (0x000000001ui64 << 48)
- PROCESS_CREATION_MITIGATION_POLICY2_CET_DYNAMIC_APIS_OUT_OF_PROC_ONLY_ALWAYS_OFF (0x000000002ui64 << 48)
- PROCESS_CREATION_MITIGATION_POLICY2_FSCTL_SYSTEM_CALL_DISABLE_ALWAYS_ON (0x000000001ui64 << 56)
- PROCESS_CREATION_MITIGATION_POLICY2_FSCTL_SYSTEM_CALL_DISABLE_ALWAYS_OFF (0x000000002ui64 << 56)
Anweisungszeigerüberprüfung:
Blockieren des Ladens von Nicht-CETCOMPAT/Non-EHCONT-Binärdateien:
Einschränken bestimmter HSP-APIs, die zum Angeben von Sicherheitseigenschaften von dynamischem Code verwendet werden, so dass sie nur von außerhalb des Prozesses aufgerufen werden können:
Der FSCTL-Systemaufruf deaktiviert die Richtlinie, falls aktiviert, verhindert, dass ein Prozess NtFsControlFile-Aufrufe durchführt. Die folgenden Entschärfungsoptionen sind für die Richtlinie zum Deaktivieren des FSCTL-Systemaufrufs verfügbar:
Der DWORD-Wert , auf den lpValue verweist, kann mindestens einer der folgenden Werte sein, wenn Sie PROC_THREAD_ATTRIBUTE_CHILD_PROCESS_POLICY für den Attributparameter angeben:
PROCESS_CREATION_CHILD_PROCESS_RESTRICTED 0x01
Der zu erstellende Prozess darf keine untergeordneten Prozesse erstellen. Diese Einschränkung wird zu einer Eigenschaft des Tokens, als das der Prozess ausgeführt wird. Beachten Sie, dass diese Einschränkung nur in Sandboxanwendungen (z. B. AppContainer) wirksam ist, die sicherstellen, dass privilegierte Prozesshandles für den Prozess nicht zugänglich sind. Wenn beispielsweise ein Prozess, der die Erstellung untergeordneter Prozesse einschränkt, auf ein anderes Prozesshandle mit PROCESS_CREATE_PROCESS oder PROCESS_VM_WRITE Zugriffsrechten zugreifen kann, kann es möglich sein, die Einschränkung des untergeordneten Prozesses zu umgehen.
PROCESS_CREATION_CHILD_PROCESS_OVERRIDE 0x02
Der zu erstellende Prozess darf einen untergeordneten Prozess erstellen, wenn er andernfalls eingeschränkt wäre. Sie können diesen Wert nur angeben, wenn der Prozess, der den neuen Prozess erstellt, nicht eingeschränkt ist.
Das DWORD , auf das von lpValue verwiesen wird, kann mindestens einer der folgenden Werte sein, wenn Sie PROC_THREAD_ATTRIBUTE_DESKTOP_APP_POLICY für den Attributparameter angeben:
PROCESS_CREATION_DESKTOP_APP_BREAKAWAY_ENABLE_PROCESS_TREE 0x01
Der zu erstellende Prozess erstellt alle untergeordneten Prozesse außerhalb der Desktop-App-Runtimeumgebung. Dieses Verhalten ist die Standardeinstellung für Prozesse, für die keine Richtlinie festgelegt wurde.
PROCESS_CREATION_DESKTOP_APP_BREAKAWAY_DISABLE_PROCESS_TREE 0x02
Der zu erstellende Prozess erstellt alle untergeordneten Prozesse innerhalb der Desktop-App-Runtimeumgebung. Diese Richtlinie wird von den untergeordneten Prozessen geerbt, bis sie durch Erstellen eines Prozesses mit PROCESS_CREATION_DESKTOP_APP_BREAKAWAY_ENABLE_PROCESS_TREE überschrieben wird.
PROCESS_CREATION_DESKTOP_APP_BREAKAWAY_OVERRIDE 0x04
Der zu erstellende Prozess wird in der Desktop-App-Runtimeumgebung ausgeführt. Diese Richtlinie gilt nur für den zu erstellenden Prozess, nicht für dessen nachfolger.
Um den untergeordneten Prozess mit der gleichen Schutzebene wie der übergeordnete Prozess zu starten, muss der übergeordnete Prozess das attribut PROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL für den untergeordneten Prozess angeben. Dies kann sowohl für geschützte als auch für ungeschützte Prozesse verwendet werden. Wenn dieses Flag beispielsweise von einem nicht geschützten Prozess verwendet wird, startet das System einen untergeordneten Prozess auf ungeschützter Ebene. Das CREATE_PROTECTED_PROCESS-Flag muss in beiden Fällen angegeben werden.
Im folgenden Beispiel wird ein untergeordneter Prozess mit derselben Schutzstufe wie der übergeordnete Prozess gestartet:
DWORD ProtectionLevel = PROTECTION_LEVEL_SAME;
SIZE_T AttributeListSize;
STARTUPINFOEXW StartupInfoEx = { 0 };
StartupInfoEx.StartupInfo.cb = sizeof(StartupInfoEx);
InitializeProcThreadAttributeList(NULL, 1, 0, &AttributeListSize)
StartupInfoEx.lpAttributeList = (LPPROC_THREAD_ATTRIBUTE_LIST) HeapAlloc(
GetProcessHeap(),
0,
AttributeListSize
);
if (InitializeProcThreadAttributeList(StartupInfoEx.lpAttributeList,
1,
0,
&AttributeListSize) == FALSE)
{
Result = GetLastError();
goto exitFunc;
}
if (UpdateProcThreadAttribute(StartupInfoEx.lpAttributeList,
0,
PROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL,
&ProtectionLevel,
sizeof(ProtectionLevel),
NULL,
NULL) == FALSE)
{
Result = GetLastError();
goto exitFunc;
}
PROCESS_INFORMATION ProcessInformation = { 0 };
if (CreateProcessW(ApplicationName,
CommandLine,
ProcessAttributes,
ThreadAttributes,
InheritHandles,
EXTENDED_STARTUPINFO_PRESENT | CREATE_PROTECTED_PROCESS,
Environment,
CurrentDirectory,
(LPSTARTUPINFOW)&StartupInfoEx,
&ProcessInformation) == FALSE)
{
Result = GetLastError();
goto exitFunc;
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows Vista [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | processthreadsapi.h (einschließlich Windows.h unter Windows 7, Windows Server 2008 Windows Server 2008 R2) |
Bibliothek | Kernel32.lib |
DLL | Kernel32.dll |