UpdateProcThreadAttribute-Funktion (processthreadsapi.h)

Aktualisierungen das angegebene Attribut in einer Liste der Attribute 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 Funktion InitializeProcThreadAttributeList erstellt wurde.

[in] dwFlags

Dieser Parameter ist reserviert und muss null sein.

[in] Attribute

Der Attributschlüssel zum Aktualisieren in der Attributliste. Dieser Parameter kann einen der folgenden Werte annehmen.

Wert Bedeutung
PROC_THREAD_ATTRIBUTE_GROUP_AFFINITY
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 neuer und Windows Server 2008 R2 und neuer.

PROC_THREAD_ATTRIBUTE_HANDLE_LIST
Der lpValue-Parameter ist ein Zeiger auf eine Liste der Handle, die vom untergeordneten Prozess geerbt werden sollen.

Diese Handle müssen als geerbbare Handle erstellt werden und dürfen keine Pseudohandpunkte enthalten, z. B. die von der Funktion GetCurrentProcess oder GetCurrentThread zurückgegeben werden.

Beachten Sie , wenn Sie dieses Attribut verwenden, übergeben Sie einen Wert von TRUE für den bInheritHandles-Parameter der CreateProcess-Funktion .
 
PROC_THREAD_ATTRIBUTE_IDEAL_PROCESSOR
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 neuer und Windows Server 2008 R2 und neuer.

PROC_THREAD_ATTRIBUTE_MACHINE_TYPE
Der lpValue-Parameter ist ein Zeiger auf ein WORD , das die Computerarchitektur des untergeordneten Prozesses angibt.

Unterstützt in Windows 11 und neuer.

Das vonlpValue hervorgehobene WORD kann ein Wert sein, der auf IMAGE FILE MACHINE CONSTANTS aufgeführt ist.

PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY
Der lpValue-Parameter ist ein Zeiger auf ein DWORD oder DWORD64, das die Exploit-Minderungsrichtlinie für den untergeordneten Prozess angibt. Ab Windows 10, Version 1703, kann dieser Parameter auch ein Zeiger auf ein Zweielement-DWORD64-Array sein.

Die angegebene Richtlinie überschreibt die richtlinien, die für die Anwendung und das System festgelegt sind und nach dem Ausführen des untergeordneten Prozesses nicht geändert werden können.

Das DWORD oder DWORD64 , auf das von lpValue verwiesen wird, kann eine oder mehrere der werte sein, die in den Anmerkungen aufgeführt sind.

Unterstützt in Windows 7 und neuer und Windows Server 2008 R2 und neuer.

PROC_THREAD_ATTRIBUTE_PARENT_PROCESS
Der lpValue-Parameter ist ein Zeiger auf ein Handle zu einem Prozess, der anstelle des Aufrufvorgangs als übergeordnetes Element für den erstellten Prozess verwendet werden soll. Der zu verwendende Prozess muss über das PROCESS_CREATE_PROCESS Zugriffsrecht verfügen.

Attribute, die vom angegebenen Prozess geerbt wurden, umfassen Handle, die Gerätezuordnung, die Prozessoraffinität, priorität, Kontingente, das Prozesstoken und das Auftragsobjekt. (Beachten Sie, dass einige Attribute wie der Debugport aus dem Erstellungsprozess stammen, nicht der Prozess, der von diesem Handle angegeben wird.)

PROC_THREAD_ATTRIBUTE_PREFERRED_NODE
Der lpValue-Parameter ist ein Zeiger auf die Knotennummer des bevorzugten NUMA-Knotens für den neuen Prozess.

Unterstützt in Windows 7 und neuer und Windows Server 2008 R2 und neuer.

PROC_THREAD_ATTRIBUTE_UMS_THREAD
Der lpValue-Parameter ist ein Zeiger auf eine UMS_CREATE_THREAD_ATTRIBUTES Struktur, die einen UmS-Threadkontext (User Mode Scheduling, UMS) und eine UMS-Abschlussliste angibt, die dem Thread zugeordnet werden soll.

Nachdem der UMS-Thread erstellt wurde, werden die Systemwarteschlangen an die angegebene Abschlussliste warteschlangen. Der UMS-Thread wird nur ausgeführt, wenn der UMS-Zeitplaner einer Anwendung den UMS-Thread aus der Abschlussliste abruft und die Ausführung auswählt. Weitere Informationen finden Sie unter "Terminplanung im Benutzermodus".

Unterstützt in Windows 7 und neuer und Windows Server 2008 R2 und neuer.

In Windows 11 und neuer nicht unterstützt (siehe Terminplanung im Benutzermodus).

PROC_THREAD_ATTRIBUTE_SECURITY_CAPABILITIES
Der lpValue-Parameter ist ein Zeiger auf eine SECURITY_CAPABILITIES Struktur, die die Sicherheitsfunktionen eines App-Containers definiert. Wenn dieses Attribut festgelegt wird, wird der neue Prozess als AppContainer-Prozess erstellt.

Unterstützt in Windows 8 und neuer und Windows Server 2012 und neuer.

PROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL
Der lpValue-Parameter ist ein Zeiger auf einen DWORD-Wert von PROTECTION_LEVEL_SAME. Dies gibt die Schutzstufe des untergeordneten Prozesses an, die identisch mit dem Schutzniveau des übergeordneten Prozesses sein soll.

Unterstützt in Windows 8.1 und neuer und Windows Server 2012 R2 und neuer.

PROC_THREAD_ATTRIBUTE_CHILD_PROCESS_POLICY
Der lpValue-Parameter ist ein Zeiger auf einen DWORD-Wert , der die untergeordnete Prozessrichtlinie angibt. Die Richtlinie gibt an, ob ein untergeordneter Prozess erstellt werden soll.

Informationen zu den möglichen Werten für das DWORD , auf die lpValue verweist, finden Sie unter Hinweise.

Unterstützt in Windows 10 und neuer und Windows Server 2016 und neuer.

PROC_THREAD_ATTRIBUTE_DESKTOP_APP_POLICY
Dieses Attribut ist nur für win32-Anwendungen relevant, die mithilfe der Desktop-Brücke in UWP-Pakete konvertiert wurden.

Der lpValue-Parameter ist ein Zeiger auf einen DWORD-Wert , der die Desktop-App-Richtlinie angibt. Die Richtlinie gibt an, ob absteigende Prozesse weiterhin in der Desktopumgebung ausgeführt werden sollen.

Informationen zu den möglichen Werten für das DWORD , auf die lpValue verweist, finden Sie unter Hinweise.

Unterstützt in Windows 10 Version 1703 und neuer und Windows Server Version 1709 und neuer.

PROC_THREAD_ATTRIBUTE_JOB_LIST
Der lpValue-Parameter ist ein Zeiger auf eine Liste der Auftragsziehpunkte, die dem untergeordneten Prozess zugewiesen werden sollen, in der angegebenen Reihenfolge.

Unterstützt in Windows 10 und neuer und Windows Server 2016 und neuer.

PROC_THREAD_ATTRIBUTE_ENABLE_OPTIONAL_XSTATE_FEATURES
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 neuer und Windows Server 2022 und neuer.

[in] lpValue

Ein Zeiger auf den Attributwert. Dieser Wert muss beibehalten werden, bis die Attributliste mithilfe der Funktion DeleteProcThreadAttributeList 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.

Bemerkungen

Eine Attributliste ist eine undurchsichtige Struktur, die aus einer Reihe von Schlüssel-/Wertpaaren besteht, einer für jedes Attribut. Ein Prozess kann nur die in diesem Thema beschriebenen Attributschlüssel aktualisieren.

Das DWORD oder DWORD64, das auf lpValue verweist, kann eine oder mehrere der folgenden Werte sein, wenn Sie PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY für den Attributparameter angeben:

PROCESS_CREATION_MITIGATION_POLICY_DEP_ENABLE (0x00000001)Aktiviert die Verhinderung von Datenausführung (DEP) für den untergeordneten Prozess. Weitere Informationen finden Sie unter Data Execution Prevention.
PROCESS_CREATION_MITIGATION_POLICY_DEP_ATL_THUNK_ENABLE (0x00000002)Ermöglicht DEP-ATL-Thunk-Emulation für den untergeordneten Prozess. DEP-ATL thunk-Emulation bewirkt, dass das System NX-Fehler abfangen kann, die aus der AtL-Thunk-Ebene (Active Template Library, ATL) 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 überschriebenen Schutz (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 unterstützt, wenn Windows 8 und Windows Server 2012.
Die Richtlinie "Force Address Space Layout Randomization" (ASLR), wenn aktiviert, werden bilder, die nicht dynamisch basiskompatibel sind, durch das Verhalten einer Bildbasiskollision bei der Ladezeit neu sortiert. Wenn Verschiebungen erforderlich sind, werden Bilder, die keinen Basisverlagerungsbereich 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)
Der Heap wird bei der Korruptionsrichtlinie beendet, wenn dies aktiviert ist, bewirkt, dass der Heap beendet wird, wenn es beschädigt wird. Beachten Sie, dass "always off" die Standard-Opt-In für Binärdateien nicht überschreiben kann, wenn die aktuellen Subsystemversionen im Bildheader festgelegt sind. Heap-Beendigung bei Beschädigung wird durch den Benutzermodus erzwungen.

Die folgenden Entschärfungsoptionen stehen für die Heap-Beendigung der Korruptionsrichtlinie zur Verfügung:

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 eine zufällige Position 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 nach oben aktivierte High-Entropy-Randomisierungsrichtlinie verursacht bis zu 1 TB bottom-up-Varianz. Beachten Sie, dass high-entropy bottom-up randomization wirksam ist, wenn und nur, wenn bottom-up ASLR aktiviert ist; High-entropy Bottom-up-Randomisierung ist nur für native 64-Bit-Prozesse sinnvoll.

Die folgenden Entschärfungsoptionen sind für die Nach-oben-Randomisierungsrichtlinie mit hoher Entropie verfügbar:

PROCESS_CREATION_MITIGATION_POLICY_HIGH_ENTROPY_ASLR_ALWAYS_ON (0x00000001 << 20)
PROCESS_CREATION_MITIGATION_POLICY_HIGH_ENTROPY_ASLR_ALWAYS_OFF (0x00000002 << 20)
Durch die strenge Handle-Überprüfungserzwingungsrichtlinie, falls aktiviert, wird eine Ausnahme sofort auf einen fehlerhaften Handle-Verweis ausgelöst. Wenn diese Richtlinie nicht aktiviert ist, wird stattdessen ein Fehlerstatus aus dem Handle-Verweis zurückgegeben.

Die folgenden Entschärfungsoptionen sind für die strenge Überprüfungserzwingungsrichtlinie 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-Systemaufrufrichtlinie wird deaktiviert, falls aktiviert, verhindert, dass ein Prozess Win32k-Aufrufe tätigen kann.

Die folgenden Entschärfungsoptionen sind für die Win32k-Systemanruf-Deaktivierungsrichtlinie 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 Richtlinie zum Deaktivieren des Erweiterungspunkts, falls aktiviert, verhindert, dass bestimmte integrierte Erweiterungspunkte von Drittanbietern verwendet werden. Diese Richtlinie blockiert die folgenden Erweiterungspunkte:
  • AppInit-DLLs
  • Winsock Layered Service Providers (LSPs)
  • Globale Windows-Hooks
  • Editoren für ältere Eingabemethoden (IMEs)
Lokale Hooks funktionieren weiterhin mit aktivierter Richtlinie "Erweiterungspunkt deaktivieren". Dieses Verhalten wird verwendet, um zu verhindern, dass ältere Erweiterungspunkte in einen Prozess geladen werden, der sie nicht verwendet.

Die folgenden Entschärfungsoptionen sind für die Richtlinie zum Deaktivieren der Erweiterungspunkt verfügbar:

PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_ALWAYS_ON (0x00000001 << 32)
PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_ALWAYS_OFF (0x00000002 << 32)
Die Control Flow Guard (CFG)-Richtlinie , falls aktiviert, legt zusätzliche Einschränkungen für indirekte Aufrufe im Code fest, der mit CFG aktiviert wurde.

Die folgenden Entschärfungsoptionen stehen zur Steuerung der CFG-Richtlinie zur Verfügung:

  • PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_MASK (0x000000003ui64 40 << )
  • PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_DEFER (0x00000000ui64 << 40)
  • PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_ALWAYS_ON (0x00000001ui64 40 << )
  • PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_ALWAYS_OFF (0x00000002ui64 40 << )
  • PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_EXPORT_SUPPRESSION (0x00000003ui64 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, schlägt die Last fehl:
  • PROCESS_CREATION_MITIGATION_POLICY2_STRICT_CONTROL_FLOW_GUARD_MASK (0x00000003ui64 << 8)
  • PROCESS_CREATION_MITIGATION_POLICY2_STRICT_CONTROL_FLOW_GUARD_DEFER (0x00000000ui64 << 8)
  • PROCESS_CREATION_MITIGATION_POLICY2_STRICT_CONTROL_FLOW_GUARD_ALWAYS_ON (0x00000001ui64 << 8)
  • PROCESS_CREATION_MITIGATION_POLICY2_STRICT_CONTROL_FLOW_GUARD_ALWAYS_OFF (0x00000002ui64 << 8)
  • PROCESS_CREATION_MITIGATION_POLICY2_STRICT_CONTROL_FLOW_GUARD_RESERVED (0x00000003ui64 << 8)
Die dynamische Coderichtlinie verhindert, dass ein Prozess dynamischen Code generiert oder ausführbaren Code geändert wird.

Die folgenden Entschärfungsoptionen sind für die dynamische Coderichtlinie verfügbar:

PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_MASK (0x00000003ui64 << 36)
PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_DEFER (0x00000000ui64 << 36)
PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_ALWAYS_ON (0x00000001ui64 << 36)
PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_ALWAYS_OFF (0x00000002ui64 << 36)
PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_ALWAYS_ON_ALLOW_OPT_OUT (0x00000003ui64 << 36)
Die Binärsignaturrichtlinie erfordert, dass EXEs/DLLs ordnungsgemäß signiert werden.

Die folgenden Entschärfungsoptionen sind für die Binärsignaturrichtlinie verfügbar:

  • PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_MASK (0x000000003ui64 << 44)
  • PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_DEFER (0x00000000ui64 << 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 (0x000000003ui64 << 44)
Die Richtlinie zum Laden von Schriftarten für den Prozess bestimmt, ob nicht systemfreie Schriftarten für einen Prozess geladen werden können. Wenn die Richtlinie aktiviert ist, wird der Prozess daran gehindert, Nicht-Systemschriftarten zu laden.

Die folgenden Entschärfungsoptionen sind für die Richtlinie zum Laden von Schriftarten verfügbar:

PROCESS_CREATION_MITIGATION_POLICY_FONT_DISABLE_MASK (0x00000003ui64 << 48)
PROCESS_CREATION_MITIGATION_POLICY_FONT_DISABLE_DEFER (0x00000000ui64 << 48)
PROCESS_CREATION_MITIGATION_POLICY_FONT_DISABLE_ALWAYS_ON (0x00000001ui64 << 48)
PROCESS_CREATION_MITIGATION_POLICY_FONT_DISABLE_ALWAYS_OFF (0x00000002ui64 << 48)
PROCESS_CREATION_MITIGATION_POLICY_AUDIT_NONSYSTEM_FONTS (0x00000003ui64 << 48)
Die Bildladerichtlinie des Prozesses bestimmt die Typen von ausführbaren Bildern, die dem Prozess zugeordnet werden können. Wenn die Richtlinie aktiviert ist, können Bilder nicht von einigen Speicherorten geladen werden, z. B. Entfernen von Geräten oder Dateien mit der obligatorischen Bezeichnung "Niedrig".

Die folgenden Entschärfungsoptionen sind für die Richtlinie zum Laden von Bildern verfügbar:

PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_MASK (0x00000003ui64 << 52)
PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_DEFER (0x00000000ui64 << 52)
PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_ALWAYS_ON (0x00000001ui64 << 52)
PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_ALWAYS_OFF (0x00000002ui64 << 52)
PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_RESERVED (0x000000003ui64 << 52)
PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_LOW_LABEL_MASK (0x00000003ui64 << 56)
PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_LOW_LABEL_DEFER (0x00000000ui64 << 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 (0x00000002ui64 << 56)
PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_LOW_LABEL_RESERVED (0x00000003ui64 << 56)
PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_PREFER_SYSTEM32_MASK (0x00000003ui64 << 60)
PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_PREFER_SYSTEM32_DEFER (0x00000000ui64 << 60)
PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_PREFER_SYSTEM32_ALWAYS_ON (0x00000001ui64 << 60)
PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_PREFER_SYSTEM32_ALWAYS_OFF (0x00000002ui64 << 60)
PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_PREFER_SYSTEM32_RESERVED (0x00000003ui64 << 60)
Windows 10, Version 1709: Der folgende Wert ist nur in Windows 10, Version 1709 oder höher verfügbar und nur mit den Windows-Sicherheitsupdates vom Januar 2018 und allen anwendbaren Firmwareupdates vom OEM-Gerätehersteller. Weitere Informationen finden Sie unter Windows-Clientleitfaden für IT-Spezialisten zum Schutz vor spekulativen Sicherheitsrisiken für die Ausführung.
PROCESS_CREATION_MITIGATION_POLICY2_RESTRICT_INDIRECT_BRANCH_PREDICTION_ALWAYS_ON (0x000000001ui64 << 16)Dieses Kennzeichen kann von Prozessen verwendet werden, um vor gleichgeordneten Hardwarethreads (Hyperthreads) zu schützen, dass indirekte Verzweigungsvorhersagen beeinträchtigt werden. Prozesse, die vertrauliche Informationen im Adressbereich enthalten, sollten diese Kennzeichnung zum Schutz vor Angriffen mit indirekter Verzweigungsvorhersage (z. B. CVE-2017-5715) in Betracht ziehen.
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 das Feature "Speculative Store Bypass (SSB) von CPUs zu deaktivieren, die möglicherweise anfällig für spekulative Ausführungsseitige Kanalangriffe mit SSB (CVE-2018-3639) sind. Dieses Kennzeichen wird nur von bestimmten Intel-CPUs unterstützt, die über die erforderlichen Hardwarefeatures verfügen. Bei CPUs, die dieses Feature nicht unterstützen, hat das Flag keine Auswirkung.

Windows 10, Version 2004: Die folgenden Werte sind nur in Windows 10, Version 2004 oder höher verfügbar.

Hardware-erzwungener Stack Protection (HSP) ist ein hardwarebasiertes Sicherheitsfeature, bei dem die CPU die Funktionsrückgabeadressen zur Laufzeit überprüft, indem ein Schattenstapelmechanismus verwendet wird. Für den Benutzermodus-HSP ist der Standardmodus Kompatibilitätsmodus, bei dem nur Schattenstapelverletzungen in Modulen auftreten, die als mit Schattenstapeln (CETCOMPAT) kompatibel sind, fatal sind. Im strikten Modus sind alle Schattenstapelverletzungen tödlich.

Die folgenden Entschärfungsoptionen sind für den Hardware-erzwungenen Stapelschutz und verwandte Features verfügbar:

PROCESS_CREATION_MITIGATION_POLICY2_CET_USER_SHADOW_STACKS_ALWAYS_ON (0x00000001ui64 << 28)
PROCESS_CREATION_MITIGATION_POLICY2_CET_USER_SHADOW_STACKS_ALWAYS_OFF (0x0000002ui64 << 28)
PROCESS_CREATION_MITIGATION_POLICY2_CET_USER_SHADOW_STACKS_STRICT_MODE (0x00000003ui64 << 28)

Anleitungszeigerüberprüfung:

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 (0x0000002ui64 << 32)
PROCESS_CREATION_MITIGATION_POLICY2_USER_CET_SET_CONTEXT_IP_VALIDATION_RELAXED_MODE (0x00000003ui64 << 32)

Blockieren des Ladens von nicht-CETCOMPAT/nicht-EHCONT-Binärdateien:

PROCESS_CREATION_MITIGATION_POLICY2_BLOCK_NON_CET_BINARIES_ALWAYS_ON (0x00000001ui64 << 36)
PROCESS_CREATION_MITIGATION_POLICY2_BLOCK_NON_CET_BINARIES_ALWAYS_OFF (0x0000002ui64 << 36)
PROCESS_CREATION_MITIGATION_POLICY2_BLOCK_NON_CET_BINARIES_NON_EHCONT (0x00000003ui64 << 36)

Einschränken bestimmter HSP-APIs, die verwendet werden, um Sicherheitseigenschaften von dynamischem Code anzugeben, die nur außerhalb des Prozesses aufgerufen werden können:

PROCESS_CREATION_MITIGATION_POLICY2_CET_DYNAMIC_APIS_OUT_OF_PROC_ONLY_ALWAYS_ON (0x00000001ui64 << 48)
PROCESS_CREATION_MITIGATION_POLICY2_CET_DYNAMIC_APIS_OUT_OF_PROC_ONLY_ALWAYS_OFF (0x00000002ui64 << 48)

Das von lpValue hervorgehobeneDWORD kann eine oder mehrere der folgenden Werte sein, wenn Sie PROC_THREAD_ATTRIBUTE_CHILD_PROCESS_POLICY für den Attributparameter angeben:

PROCESS_CREATION_CHILD_PROCESS_RESTRICTED 0x01

Der erstellte Prozess darf keine untergeordneten Prozesse erstellen. Diese Einschränkung wird zu einer Eigenschaft des Token, als das der Prozess ausgeführt wird. Es sollte darauf hingewiesen werden, dass diese Einschränkung nur in Sandkastenanwendungen (z. B. AppContainer) wirksam ist, die sicherstellen, dass privilegierte Prozesshandpunkte nicht für den Prozess zugänglich sind. Wenn beispielsweise ein Prozess, der die Untergeordnete Prozesserstellung beschränkt, auf einen anderen Prozesshandpunkt 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 erstellte 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 von lpValue hervorgehobeneDWORD kann eine oder mehrere 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-Laufzeitumgebung. 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 prozess, der erstellt wird, erstellt alle untergeordneten Prozesse innerhalb der Desktop-App-Laufzeitumgebung. Diese Richtlinie wird von den absteigenden Prozessen geerbt, bis sie durch das Erstellen eines Prozesses mit PROCESS_CREATION_DESKTOP_APP_BREAKAWAY_ENABLE_PROCESS_TREE außer Kraft gesetzt wird.

PROCESS_CREATION_DESKTOP_APP_BREAKAWAY_OVERRIDE 0x04

Der erstellte Prozess wird in der Desktop-App-Laufzeitumgebung ausgeführt. Diese Richtlinie gilt nur für den erstellten Prozess, nicht für seine Nachfolger..

Um den untergeordneten Prozess mit derselben Schutzstufe wie das übergeordnete Element zu starten, muss der übergeordnete Prozess das PROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL-Attribut für den untergeordneten Prozess angeben. Dies kann sowohl für geschützte als auch 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

   
Unterstützte Mindestversion (Client) Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile processthreadsapi.h (enthalten Windows.h unter Windows 7, Windows Server 2008 Windows Server 2008 R2)
Bibliothek Kernel32.lib
DLL Kernel32.dll

Siehe auch

DeleteProcThreadAttributeList

InitializeProcThreadAttributeList

Prozess- und Threadfunktionen