Fungsi UpdateProcThreadAttribute (processthreadsapi.h)

Updates atribut yang ditentukan dalam daftar atribut untuk pembuatan proses dan utas.

Sintaks

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

Penunjuk ke daftar atribut yang dibuat oleh fungsi InitializeProcThreadAttributeList .

[in] dwFlags

Parameter ini dicadangkan dan harus nol.

[in] Attribute

Kunci atribut yang akan diperbarui dalam daftar atribut. Parameter ini bisa menjadi salah satu nilai berikut.

Nilai Makna
PROC_THREAD_ATTRIBUTE_GROUP_AFFINITY
Parameter lpValue adalah penunjuk ke struktur GROUP_AFFINITY yang menentukan afinitas grup prosesor untuk utas baru.

Didukung di Windows 7 dan yang lebih baru dan Windows Server 2008 R2 dan yang lebih baru.

PROC_THREAD_ATTRIBUTE_HANDLE_LIST
Parameter lpValue adalah penunjuk ke daftar handel yang akan diwarisi oleh proses anak.

Handel ini harus dibuat sebagai handel yang dapat diwariskan dan tidak boleh menyertakan handel pseudo seperti yang dikembalikan oleh fungsi GetCurrentProcess atau GetCurrentThread .

Perhatikan jika Anda menggunakan atribut ini, berikan nilai TRUE untuk parameter bInheritHandles dari fungsi CreateProcess .
 
PROC_THREAD_ATTRIBUTE_IDEAL_PROCESSOR
Parameter lpValue adalah penunjuk ke struktur PROCESSOR_NUMBER yang menentukan prosesor ideal untuk utas baru.

Didukung di Windows 7 dan yang lebih baru dan Windows Server 2008 R2 dan yang lebih baru.

PROC_THREAD_ATTRIBUTE_MACHINE_TYPE
Parameter lpValue adalah penunjuk ke WORD yang menentukan arsitektur mesin proses anak.

Didukung di Windows 11 dan yang lebih baru.

WORD yang ditujukkan oleh lpValue dapat menjadi nilai yang tercantum pada KONSTANTA MESIN FILE GAMBAR.

PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY
Parameter lpValue adalah penunjuk ke DWORD atau DWORD64 yang menentukan kebijakan mitigasi eksploitasi untuk proses anak. Mulai dari Windows 10, versi 1703, parameter ini juga dapat menjadi penunjuk ke array DWORD64 dua elemen.

Kebijakan yang ditentukan mengambil alih kebijakan yang ditetapkan untuk aplikasi dan sistem dan tidak dapat diubah setelah proses anak mulai berjalan.

DWORD atau DWORD64 yang ditunjukkan oleh lpValue dapat berupa satu atau beberapa nilai yang tercantum dalam keterangan.

Didukung di Windows 7 dan yang lebih baru dan Windows Server 2008 R2 dan yang lebih baru.

PROC_THREAD_ATTRIBUTE_PARENT_PROCESS
Parameter lpValue adalah penunjuk ke handel ke proses yang akan digunakan alih-alih proses panggilan sebagai induk untuk proses yang sedang dibuat. Proses yang digunakan harus memiliki hak akses PROCESS_CREATE_PROCESS .

Atribut yang diwarisi dari proses yang ditentukan termasuk handel, peta perangkat, afinitas prosesor, prioritas, kuota, token proses, dan objek pekerjaan. (Perhatikan bahwa beberapa atribut seperti port debug akan berasal dari proses pembuatan, bukan proses yang ditentukan oleh handel ini.)

PROC_THREAD_ATTRIBUTE_PREFERRED_NODE
Parameter lpValue adalah penunjuk ke nomor simpul dari simpul NUMA pilihan untuk proses baru.

Didukung di Windows 7 dan yang lebih baru dan Windows Server 2008 R2 dan yang lebih baru.

PROC_THREAD_ATTRIBUTE_UMS_THREAD
Parameter lpValue adalah penunjuk ke struktur UMS_CREATE_THREAD_ATTRIBUTES yang menentukan konteks utas penjadwalan mode pengguna (UMS) dan daftar penyelesaian UMS untuk dikaitkan dengan utas.

Setelah utas UMS dibuat, sistem mengantrekannya ke daftar penyelesaian yang ditentukan. Utas UMS hanya berjalan saat penjadwal UMS aplikasi mengambil utas UMS dari daftar penyelesaian dan memilihnya untuk dijalankan. Untuk informasi selengkapnya, lihat Penjadwalan Mode Pengguna.

Didukung di Windows 7 dan yang lebih baru dan Windows Server 2008 R2 dan yang lebih baru.

Tidak didukung di Windows 11 dan yang lebih baru (lihat Penjadwalan Mode Pengguna).

PROC_THREAD_ATTRIBUTE_SECURITY_CAPABILITIES
Parameter lpValue adalah penunjuk ke struktur SECURITY_CAPABILITIES yang menentukan kemampuan keamanan kontainer aplikasi. Jika atribut ini diatur, proses baru akan dibuat sebagai proses AppContainer.

Didukung di Windows 8 dan yang lebih baru dan Windows Server 2012 dan yang lebih baru.

PROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL
Parameter lpValue adalah penunjuk ke nilai DWORDPROTECTION_LEVEL_SAME. Ini menentukan tingkat perlindungan proses anak agar sama dengan tingkat perlindungan proses induknya.

Didukung di Windows 8.1 dan yang lebih baru dan Windows Server 2012 R2 dan yang lebih baru.

PROC_THREAD_ATTRIBUTE_CHILD_PROCESS_POLICY
Parameter lpValue adalah penunjuk ke nilai DWORD yang menentukan kebijakan proses anak. Kebijakan menentukan apakah akan mengizinkan proses anak dibuat.

Untuk informasi tentang nilai yang mungkin untuk DWORD yang menunjuk lpValue , lihat Keterangan.

Didukung di Windows 10 dan yang lebih baru dan Windows Server 2016 dan yang lebih baru.

PROC_THREAD_ATTRIBUTE_DESKTOP_APP_POLICY
Atribut ini hanya relevan untuk aplikasi win32 yang telah dikonversi ke paket UWP dengan menggunakan Desktop Bridge.

Parameter lpValue adalah penunjuk ke nilai DWORD yang menentukan kebijakan aplikasi desktop. Kebijakan menentukan apakah proses turunan harus terus berjalan di lingkungan desktop.

Untuk informasi tentang nilai yang mungkin untuk DWORD yang menunjuk lpValue , lihat Keterangan.

Didukung di Windows 10 Versi 1703 dan yang lebih baru dan Windows Server Versi 1709 dan yang lebih baru.

PROC_THREAD_ATTRIBUTE_JOB_LIST
Parameter lpValue adalah penunjuk ke daftar handel pekerjaan yang akan ditetapkan ke proses anak, dalam urutan yang ditentukan.

Didukung di Windows 10 dan yang lebih baru dan Windows Server 2016 dan yang lebih baru.

PROC_THREAD_ATTRIBUTE_ENABLE_OPTIONAL_XSTATE_FEATURES
Parameter lpValue adalah penunjuk ke nilai DWORD64 yang menentukan kumpulan fitur XState opsional untuk diaktifkan untuk utas baru.

Didukung di Windows 11 dan yang lebih baru dan Windows Server 2022 dan yang lebih baru.

[in] lpValue

Penunjuk ke nilai atribut. Nilai ini harus bertahan hingga daftar atribut dihancurkan menggunakan fungsi DeleteProcThreadAttributeList.

[in] cbSize

Ukuran nilai atribut yang ditentukan oleh parameter lpValue .

[out, optional] lpPreviousValue

Parameter ini dicadangkan dan harus NULL.

[in, optional] lpReturnSize

Parameter ini dicadangkan dan harus NULL.

Mengembalikan nilai

Jika fungsi berhasil, nilai yang dikembalikan bukan nol.

Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.

Keterangan

Daftar atribut adalah struktur buram yang terdiri dari serangkaian pasangan kunci/nilai, satu untuk setiap atribut. Proses hanya dapat memperbarui kunci atribut yang dijelaskan dalam topik ini.

DWORD atau DWORD64 yang ditunjukkan oleh lpValue dapat berupa satu atau beberapa nilai berikut saat Anda menentukan PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY untuk parameter Atribut:

PROCESS_CREATION_MITIGATION_POLICY_DEP_ENABLE (0x00000001)Memungkinkan pencegahan eksekusi data (DEP) untuk proses anak. Untuk informasi selengkapnya, lihat Pencegahan Eksekusi Data.
PROCESS_CREATION_MITIGATION_POLICY_DEP_ATL_THUNK_ENABLE (0x00000002)Memungkinkan emulasi thunk DEP-ATL untuk proses anak. Emulasi thunk DEP-ATL menyebabkan sistem mencegat kesalahan NX yang berasal dari lapisan thunk Pustaka Templat Aktif (ATL). Nilai ini hanya dapat ditentukan dengan PROCESS_CREATION_MITIGATION_POLICY_DEP_ENABLE.
PROCESS_CREATION_MITIGATION_POLICY_SEHOP_ENABLE (0x00000004)Memungkinkan perlindungan timpa handler pengecualian terstruktur (SEHOP) untuk proses anak. SEHOP memblokir eksploitasi yang menggunakan teknik timpa handler pengecualian terstruktur (SEH).
Windows 7, Windows Server 2008 R2, Windows Server 2008, dan Windows Vista: Nilai berikut ini tidak didukung hingga Windows 8 dan Windows Server 2012.
Kebijakan paksa Pengacakan Tata Letak Ruang Alamat (ASLR), jika diaktifkan, secara paksa mengubah citra yang tidak kompatibel dengan basis dinamis dengan bertindak seolah-olah tabrakan dasar gambar terjadi pada waktu pemuatan. Jika relokasi diperlukan, gambar yang tidak memiliki bagian relokasi dasar tidak akan dimuat.

Opsi mitigasi berikut tersedia untuk kebijakan ASLR wajib:

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)
Tumpukan berakhir pada kebijakan korupsi, jika diaktifkan, menyebabkan tumpukan berakhir jika menjadi rusak. Perhatikan bahwa 'selalu nonaktif' tidak mengambil alih keikutsertaan default untuk biner dengan versi subsistem saat ini yang diatur di header gambar. Heap terminate pada kerusakan diberlakukan mode pengguna.

Opsi mitigasi berikut tersedia untuk heap yang berakhir pada kebijakan korupsi:

PROCESS_CREATION_MITIGATION_POLICY_HEAP_TERMINATE_ALWAYS_ON (0x00000001 << 12)
PROCESS_CREATION_MITIGATION_POLICY_HEAP_TERMINATE_ALWAYS_OFF (0x00000002 << 12)
Kebijakan pengacakan bawah ke atas, yang mencakup opsi pengacakan tumpukan, menyebabkan lokasi acak digunakan sebagai alamat pengguna terendah.

Opsi mitigasi berikut tersedia untuk kebijakan pengacakan bawah ke atas:

PROCESS_CREATION_MITIGATION_POLICY_BOTTOM_UP_ASLR_ALWAYS_ON (0x00000001 << 16)
PROCESS_CREATION_MITIGATION_POLICY_BOTTOM_UP_ASLR_ALWAYS_OFF (0x00000002 << 16)
Kebijakan pengacakan bawah-entropi tinggi, jika diaktifkan, menyebabkan hingga 1 TB varians bawah ke atas digunakan. Perhatikan bahwa pengacakan bawah atas entropi tinggi efektif jika dan hanya jika ASLR bawah ke atas juga diaktifkan; pengacakan bawah-entropi tinggi hanya bermakna untuk proses 64-bit asli.

Opsi mitigasi berikut tersedia untuk kebijakan pengacakan bawah atas entropi tinggi:

PROCESS_CREATION_MITIGATION_POLICY_HIGH_ENTROPY_ASLR_ALWAYS_ON (0x00000001 << 20)
PROCESS_CREATION_MITIGATION_POLICY_HIGH_ENTROPY_ASLR_ALWAYS_OFF (0x00000002 << 20)
Kebijakan penegakan pemeriksaan pemeriksaan yang ketat, jika diaktifkan, menyebabkan pengecualian segera dinaikkan pada referensi handel yang buruk. Jika kebijakan ini tidak diaktifkan, status kegagalan akan dikembalikan dari referensi handel sebagai gantinya.

Opsi mitigasi berikut tersedia untuk kebijakan penegakan pemeriksaan penanganan yang ketat:

PROCESS_CREATION_MITIGATION_POLICY_STRICT_HANDLE_CHECKS_ALWAYS_ON (0x00000001 << 24)
PROCESS_CREATION_MITIGATION_POLICY_STRICT_HANDLE_CHECKS_ALWAYS_OFF (0x00000002 << 24)
Kebijakan penonaktifan panggilan sistem Win32k, jika diaktifkan, mencegah proses melakukan panggilan Win32k.

Opsi mitigasi berikut tersedia untuk kebijakan penonaktifan panggilan sistem Win32k:

PROCESS_CREATION_MITIGATION_POLICY_WIN32K_SYSTEM_CALL_DISABLE_ALWAYS_ON (0x00000001 << 28)
PROCESS_CREATION_MITIGATION_POLICY_WIN32K_SYSTEM_CALL_DISABLE_ALWAYS_OFF (0x00000002 << 28)
Kebijakan Nonaktifkan Titik Ekstensi, jika diaktifkan, mencegah titik ekstensi pihak ketiga bawaan tertentu digunakan. Kebijakan ini memblokir titik ekstensi berikut:
  • DLL AppInit
  • Penyedia Layanan Berlapis Winsock (LSP)
  • Global Windows Hooks
  • Editor Metode Input Warisan (IMEs)
Hook lokal masih berfungsi dengan kebijakan Extension Point Disable diaktifkan. Perilaku ini digunakan untuk mencegah titik ekstensi warisan dimuat ke dalam proses yang tidak menggunakannya.

Opsi mitigasi berikut tersedia untuk kebijakan penonaktifan titik ekstensi:

PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_ALWAYS_ON (0x00000001 << 32)
PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_ALWAYS_OFF (0x00000002 << 32)
Kebijakan Control Flow Guard (CFG), jika diaktifkan, menempatkan pembatasan tambahan pada panggilan tidak langsung dalam kode yang telah dibangun dengan CFG diaktifkan.

Opsi mitigasi berikut tersedia untuk mengontrol kebijakan CFG:

  • PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_MASK (0x00000003ui64 << 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 (0x00000002ui64 << 40)
  • PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_EXPORT_SUPPRESSION (0x00000003ui64 << 40)
Selain itu, kebijakan berikut dapat ditentukan untuk memberlakukan bahwa EXEs/DLL harus mengaktifkan CFG. Jika upaya dilakukan untuk memuat EXE/DLL yang tidak mengaktifkan CFG, beban akan gagal:
  • 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 (0x00000002ui64 << 8)
  • PROCESS_CREATION_MITIGATION_POLICY2_STRICT_CONTROL_FLOW_GUARD_RESERVED (0x00000003ui64 << 8)
Kebijakan kode dinamis, jika diaktifkan, mencegah proses menghasilkan kode dinamis atau memodifikasi kode yang dapat dieksekusi.

Opsi mitigasi berikut tersedia untuk kebijakan kode dinamis:

PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_MASK (0x00000003ui64 << 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 (0x00000002ui64 << 36)
PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_ALWAYS_ON_ALLOW_OPT_OUT (0x00000003ui64 << 36)
Kebijakan tanda tangan biner mengharuskan EXEs/DLL ditandatangani dengan benar.

Opsi mitigasi berikut tersedia untuk kebijakan tanda tangan biner:

  • PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_MASK (0x00000003ui64 << 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 (0x00000003ui64 << 44)
Kebijakan pencegahan pemuatan font untuk proses menentukan apakah font non-sistem dapat dimuat untuk proses. Ketika kebijakan diaktifkan, proses dicegah memuat font non-sistem.

Opsi mitigasi berikut tersedia untuk kebijakan pencegahan pemuatan font:

PROCESS_CREATION_MITIGATION_POLICY_FONT_DISABLE_MASK (0x00000003ui64 << 48)
PROCESS_CREATION_MITIGATION_POLICY_FONT_DISABLE_DEFER (0x000000000ui64 << 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)
Kebijakan pemuatan gambar dari proses menentukan jenis gambar yang dapat dieksekusi yang dapat dipetakan ke dalam proses. Saat kebijakan diaktifkan, gambar tidak dapat dimuat dari beberapa lokasi, seperti menghapus perangkat atau file yang memiliki label Wajib rendah.

Opsi mitigasi berikut tersedia untuk kebijakan pemuatan gambar:

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 (0x00000003ui64 << 52)
PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_LOW_LABEL_MASK (0x00000003ui64 << 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 (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, versi 1709: Nilai berikut hanya tersedia di Windows 10, versi 1709 atau yang lebih baru dan hanya dengan pembaruan keamanan Windows Januari 2018 dan pembaruan firmware yang berlaku dari produsen perangkat OEM. Lihat Panduan Klien Windows untuk Pro TI untuk melindungi dari kerentanan saluran samping eksekusi spekulatif.
PROCESS_CREATION_MITIGATION_POLICY2_RESTRICT_INDIRECT_BRANCH_PREDICTION_ALWAYS_ON (0x00000001ui64 << 16)Bendera ini dapat digunakan oleh proses untuk melindungi dari utas perangkat keras saudara (hyperthread) agar tidak mengganggu prediksi cabang tidak langsung. Proses yang memiliki informasi sensitif di ruang alamat mereka harus mempertimbangkan untuk mengaktifkan bendera ini untuk melindungi dari serangan yang melibatkan prediksi cabang tidak langsung (seperti CVE-2017-5715).
Windows 10, versi 1809: Nilai berikut hanya tersedia di Windows 10, versi 1809 atau yang lebih baru.
PROCESS_CREATION_MITIGATION_POLICY2_SPECULATIVE_STORE_BYPASS_DISABLE_ALWAYS_ON (0x00000001ui64 24 << )Bendera ini dapat digunakan oleh proses untuk menonaktifkan fitur Speculative Store Bypass (SSB) CPU yang mungkin rentan terhadap serangan saluran samping eksekusi spekulatif yang melibatkan SSB (CVE-2018-3639). Bendera ini hanya didukung oleh CPU Intel tertentu yang memiliki fitur perangkat keras yang diperlukan. Pada CPU yang tidak mendukung fitur ini, bendera tidak berpengaruh.

Windows 10, versi 2004: Nilai berikut hanya tersedia di Windows 10, versi 2004 atau yang lebih baru.

Perlindungan Tumpukan yang diberlakukan perangkat keras (HSP) adalah fitur keamanan berbasis perangkat keras di mana CPU memverifikasi alamat pengembalian fungsi pada runtime dengan menggunakan mekanisme tumpukan bayangan. Untuk HSP mode pengguna, mode default adalah mode kompatibilitas, di mana hanya pelanggaran tumpukan bayangan yang terjadi dalam modul yang dianggap kompatibel dengan tumpukan bayangan (CETCOMPAT) yang fatal. Dalam mode ketat, semua pelanggaran tumpukan bayangan bersifat fatal.

Opsi mitigasi berikut tersedia untuk Perlindungan Tumpukan yang diberlakukan perangkat keras mode pengguna dan fitur terkait:

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

Validasi Penunjuk Instruksi:

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

Memblokir beban biner non-CETCOMPAT/non-EHCONT:

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

Membatasi API HSP tertentu yang digunakan untuk menentukan properti keamanan kode dinamis agar hanya dapat dipanggil dari luar proses:

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)

Kebijakan penonaktifan panggilan sistem FSCTL, jika diaktifkan, mencegah proses melakukan panggilan NtFsControlFile. Opsi mitigasi berikut tersedia untuk kebijakan penonaktifan panggilan sistem FSCTL:

PROCESS_CREATION_MITIGATION_POLICY2_FSCTL_SYSTEM_CALL_DISABLE_ALWAYS_ON (0x00000001ui64 << 56)
PROCESS_CREATION_MITIGATION_POLICY2_FSCTL_SYSTEM_CALL_DISABLE_ALWAYS_OFF (0x00000002ui64 << 56)

DWORD yang ditujukkan oleh lpValue dapat berupa satu atau beberapa nilai berikut saat Anda menentukan PROC_THREAD_ATTRIBUTE_CHILD_PROCESS_POLICY untuk parameter Atribut:

0x01 PROCESS_CREATION_CHILD_PROCESS_RESTRICTED

Proses yang sedang dibuat tidak diizinkan untuk membuat proses anak. Pembatasan ini menjadi properti token tempat proses berjalan. Perlu dicatat bahwa pembatasan ini hanya efektif dalam aplikasi dalam kotak pasir (seperti AppContainer) yang memastikan handel proses istimewa tidak dapat diakses oleh proses. Misalnya, jika proses yang membatasi pembuatan proses anak dapat mengakses handel proses lain dengan hak akses PROCESS_CREATE_PROCESS atau PROCESS_VM_WRITE, maka mungkin untuk melewati pembatasan proses anak.

0x02 PROCESS_CREATION_CHILD_PROCESS_OVERRIDE

Proses yang sedang dibuat diizinkan untuk membuat proses anak, jika sebaliknya akan dibatasi. Anda hanya dapat menentukan nilai ini jika proses yang membuat proses baru tidak dibatasi.

DWORD yang ditujukkan oleh lpValue dapat berupa satu atau beberapa nilai berikut saat Anda menentukan PROC_THREAD_ATTRIBUTE_DESKTOP_APP_POLICY untuk parameter Atribut:

0x01 PROCESS_CREATION_DESKTOP_APP_BREAKAWAY_ENABLE_PROCESS_TREE

Proses yang sedang dibuat akan membuat proses anak apa pun di luar lingkungan runtime aplikasi desktop. Perilaku ini adalah default untuk proses yang tidak ada kebijakan yang ditetapkan.

0x02 PROCESS_CREATION_DESKTOP_APP_BREAKAWAY_DISABLE_PROCESS_TREE

Proses yang sedang dibuat akan membuat proses turunan apa pun di dalam lingkungan runtime aplikasi desktop. Kebijakan ini diwariskan oleh proses turunan sampai ditimpa dengan membuat proses dengan PROCESS_CREATION_DESKTOP_APP_BREAKAWAY_ENABLE_PROCESS_TREE.

0x04 PROCESS_CREATION_DESKTOP_APP_BREAKAWAY_OVERRIDE

Proses yang sedang dibuat akan berjalan di dalam lingkungan runtime aplikasi desktop. Kebijakan ini hanya berlaku untuk proses yang sedang dibuat, bukan turunannya..

Untuk meluncurkan proses anak dengan tingkat perlindungan yang sama dengan induk, proses induk harus menentukan atribut PROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL untuk proses anak. Ini dapat digunakan untuk proses yang dilindungi dan tidak terlindungi. Misalnya, ketika bendera ini digunakan oleh proses yang tidak terlindungi, sistem akan meluncurkan proses anak pada tingkat yang tidak terlindungi. Bendera CREATE_PROTECTED_PROCESS harus ditentukan dalam kedua kasus.

Contoh berikut meluncurkan proses anak dengan tingkat perlindungan yang sama dengan proses induk:

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;
}

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2008 [hanya aplikasi desktop]
Target Platform Windows
Header processthreadsapi.h (termasuk Windows.h pada Windows 7, Windows Server 2008 Windows Server 2008 R2)
Pustaka Kernel32.lib
DLL Kernel32.dll

Lihat juga

DeleteProcThreadAttributeList

InitializeProcThreadAttributeList

Fungsi Proses dan Utas