Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Perlindungan eksploitasi memberikan perlindungan tingkat lanjut untuk aplikasi yang dapat diterapkan admin perusahaan dan profesional TI setelah pengembang mengkompilasi dan mendistribusikan perangkat lunak.
Artikel ini membantu Anda memahami cara kerja perlindungan eksploitasi, baik di tingkat kebijakan maupun di tingkat mitigasi individual, untuk membantu Anda berhasil membangun dan menerapkan kebijakan perlindungan eksploitasi.
Bagaimana mitigasi diterapkan
Mitigasi perlindungan eksploitasi diterapkan per aplikasi.
Setiap program memiliki entri registri sendiri yang mengontrol mitigasi mana yang berlaku. Pengaturan ini disimpan dalam entri registri MitigationOptions (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\*ImageFileName*\MitigationOptions). Pengaturan mitigasi ini berlaku ketika Anda memulai ulang program. Mereka tetap aktif sampai Anda mengubahnya dan memulai ulang program.
Penting
Opsi eksekusi file gambar hanya memungkinkan Anda menentukan nama atau jalur file. Anda tidak dapat menentukan nomor versi, arsitektur, atau pembferensi lainnya. Terapkan mitigasi secara khusus pada aplikasi yang memiliki nama atau jalur unik. Terapkan hanya pada perangkat tempat Anda menguji versi dan arsitektur aplikasi tersebut.
Anda dapat mengonfigurasi mitigasi melalui file XML dengan menggunakan PowerShell, Kebijakan Grup, atau MDM. Saat Anda menggunakan file XML, sistem mengatur entri registri untuk Anda.
Mengatur ulang perlindungan eksploitasi
Penting
Ketika kebijakan Kebijakan Grup atau MDM yang menyebarkan file XML tidak lagi diberlakukan, pengaturan yang disebarkan oleh file konfigurasi XML ini tidak akan dihapus secara otomatis.
Untuk menghapus pengaturan perlindungan eksploitasi, ekspor konfigurasi XML dari perangkat Windows 10 bersih atau Windows 11, dan sebarkan file XML baru ini. Secara bergantian, Microsoft menyediakan file XML sebagai bagian dari Garis Besar Keamanan Windows untuk mengatur ulang pengaturan perlindungan eksploitasi.
Untuk mengatur ulang pengaturan perlindungan eksploitasi menggunakan PowerShell, jalankan perintah berikut untuk menerapkan kebijakan reset dari file XML dan memulihkan pengaturan mitigasi ke defaultnya:
Set-ProcessMitigation -PolicyFilePath EP-reset.xml
File XML berikut adalah file EP-reset.xml yang didistribusikan bersama Keamanan Windows Baselines. File ini menentukan penggantian mitigasi per aplikasi yang mengatur ulang pengaturan perlindungan eksploitasi ke defaultnya untuk aplikasi umum seperti Microsoft Office, browser web, dan pemutar media:
<?xml version="1.0" encoding="UTF-8"?>
<MitigationPolicy>
<AppConfig Executable="ONEDRIVE.EXE">
<DEP OverrideDEP="false" />
<ASLR OverrideRelocateImages="false" />
<Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
<ImageLoad OverrideBlockRemoteImages="false" />
</AppConfig>
<AppConfig Executable="firefox.exe">
<DEP OverrideDEP="false" />
<ASLR ForceRelocateImages="true" />
</AppConfig>
<AppConfig Executable="fltldr.exe">
<DEP OverrideDEP="false" />
<Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
<ImageLoad OverrideBlockRemoteImages="false" />
<ChildProcess OverrideChildProcess="false" />
</AppConfig>
<AppConfig Executable="GROOVE.EXE">
<DEP OverrideDEP="false" />
<ASLR ForceRelocateImages="true" />
<Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
<ImageLoad OverrideBlockRemoteImages="false" />
<ChildProcess OverrideChildProcess="false" />
</AppConfig>
<AppConfig Executable="Acrobat.exe">
<DEP OverrideDEP="false" />
<ASLR ForceRelocateImages="true" />
<Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
</AppConfig>
<AppConfig Executable="AcroRd32.exe">
<DEP OverrideDEP="false" />
<ASLR ForceRelocateImages="true" />
<Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
</AppConfig>
<AppConfig Executable="chrome.exe">
<DEP OverrideDEP="false" />
</AppConfig>
<AppConfig Executable="EXCEL.EXE">
<DEP OverrideDEP="false" />
<ASLR ForceRelocateImages="true" />
<Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
</AppConfig>
<AppConfig Executable="iexplore.exe">
<DEP OverrideDEP="false" />
<ASLR ForceRelocateImages="true" />
<Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
</AppConfig>
<AppConfig Executable="INFOPATH.EXE">
<DEP OverrideDEP="false" />
<ASLR ForceRelocateImages="true" />
<Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
</AppConfig>
<AppConfig Executable="java.exe">
<DEP OverrideDEP="false" />
<Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
</AppConfig>
<AppConfig Executable="javaw.exe">
<DEP OverrideDEP="false" />
<Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
</AppConfig>
<AppConfig Executable="javaws.exe">
<DEP OverrideDEP="false" />
<Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
</AppConfig>
<AppConfig Executable="LYNC.EXE">
<DEP OverrideDEP="false" />
<ASLR ForceRelocateImages="true" />
<Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
</AppConfig>
<AppConfig Executable="MSACCESS.EXE">
<DEP OverrideDEP="false" />
<ASLR ForceRelocateImages="true" />
<Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
</AppConfig>
<AppConfig Executable="MSPUB.EXE">
<DEP OverrideDEP="false" />
<ASLR ForceRelocateImages="true" />
<Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
</AppConfig>
<AppConfig Executable="OIS.EXE">
<DEP OverrideDEP="false" />
<Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
</AppConfig>
<AppConfig Executable="OUTLOOK.EXE">
<DEP OverrideDEP="false" />
<ASLR ForceRelocateImages="true" />
<Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
</AppConfig>
<AppConfig Executable="plugin-container.exe">
<DEP OverrideDEP="false" />
<Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
</AppConfig>
<AppConfig Executable="POWERPNT.EXE">
<DEP OverrideDEP="false" />
<ASLR ForceRelocateImages="true" />
<Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
</AppConfig>
<AppConfig Executable="PPTVIEW.EXE">
<DEP OverrideDEP="false" />
<ASLR ForceRelocateImages="true" />
<Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
</AppConfig>
<AppConfig Executable="VISIO.EXE">
<DEP OverrideDEP="false" />
<ASLR ForceRelocateImages="true" />
<Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
</AppConfig>
<AppConfig Executable="VPREVIEW.EXE">
<DEP OverrideDEP="false" />
<ASLR ForceRelocateImages="true" />
<Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
</AppConfig>
<AppConfig Executable="WINWORD.EXE">
<DEP OverrideDEP="false" />
<ASLR ForceRelocateImages="true" />
<Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
</AppConfig>
<AppConfig Executable="wmplayer.exe">
<DEP OverrideDEP="false" />
<Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
</AppConfig>
<AppConfig Executable="wordpad.exe">
<DEP OverrideDEP="false" />
<Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
</AppConfig>
</MitigationPolicy>
Referensi Mitigasi
Mitigasi perlindungan eksploitasi berikut masing-masing mencakup deskripsi, pertimbangan kompatibilitas, dan opsi konfigurasi.
Penjaga kode arbitrer
Bagian berikut menjelaskan cara kerja penjaga kode arbitrer, dampak kompatibilitasnya, dan opsi konfigurasinya.
Description
Penjaga kode arbitrer membantu melindungi dari penyerang berbahaya yang memuat kode pilihan mereka ke dalam memori melalui kerentanan keamanan memori dan dapat menjalankan kode tersebut.
Penjaga kode arbitrer melindungi aplikasi dari menjalankan kode yang dihasilkan secara dinamis (kode yang tidak dimuat, misalnya, dari exe itu sendiri atau dll). Penjaga kode arbitrer bekerja dengan mencegah memori ditandai sebagai dapat dieksekusi. Ketika aplikasi mencoba mengalokasikan memori, kami memeriksa bendera perlindungan. (Memori dapat dialokasikan dengan bendera perlindungan baca, tulis, dan/atau eksekusi.) Jika upaya alokasi menyertakan bendera perlindungan eksekusi, maka alokasi memori gagal dan mengembalikan kode kesalahan (STATUS_DYNAMIC_CODE_BLOCKED). Demikian pula, jika aplikasi mencoba mengubah bendera perlindungan memori yang telah dialokasikan dan menyertakan bendera eksekusi perlindungan, maka perubahan izin gagal dan mengembalikan kode kesalahan (STATUS_DYNAMIC_CODE_BLOCKED).
Dengan mencegah flag execute disetel, fitur pencegahan eksekusi data di Windows 10 dan Windows 11 dapat melindungi sistem agar penunjuk instruksi tidak diarahkan ke memori tersebut dan tidak menjalankan kode tersebut.
Pertimbangan kompatibilitas
Perlindungan terhadap kode arbitrer mencegah alokasi memori apa pun agar dapat dieksekusi, yang menimbulkan masalah kompatibilitas dengan pendekatan seperti kompiler Just-in-Time (JIT). Sebagian besar browser modern, misalnya, mengkompilasi JavaScript ke dalam kode asli untuk mengoptimalkan performa. Untuk mendukung mitigasi ini, mereka perlu dibuat ulang untuk memindahkan kompilasi JIT di luar proses yang dilindungi. Aplikasi lain yang desainnya secara dinamis menghasilkan kode dari skrip atau bahasa perantara lainnya sama-sama tidak kompatibel dengan mitigasi ini.
Opsi konfigurasi
Izinkan utas untuk mengecualikan diri - Anda dapat mengonfigurasi mitigasi agar memungkinkan utas tertentu mengecualikan diri dari perlindungan ini. Pengembang harus menulis aplikasi dengan kesadaran tentang mitigasi ini, dan memanggil API SetThreadInformation dengan parameter ThreadInformation yang diatur ke ThreadDynamicCodePolicy agar diizinkan untuk menjalankan kode dinamis pada utas ini.
Hanya audit - Anda dapat mengaktifkan mitigasi ini dalam mode audit untuk mengukur potensi dampak kompatibilitas pada aplikasi. Kejadian audit kemudian dapat dilihat baik melalui Event Viewer maupun dengan menggunakan Advanced Hunting di Defender for Endpoint.
Memblokir gambar integritas rendah
Bagian berikut menjelaskan cara kerja gambar integritas rendah blok, dampak kompatibilitasnya, dan opsi konfigurasinya.
Description
Memblokir image berintegritas rendah mencegah aplikasi memuat file yang tidak tepercaya, biasanya karena file tersebut diunduh dari internet melalui browser yang di-sandbox.
Mitigasi ini memblokir pemuatan gambar jika gambar tersebut memiliki Access Control Entry (ACE) yang memberikan akses ke proses dengan IL Rendah dan tidak memiliki ACE label kepercayaan. Ini diimplementasikan oleh manajer memori, yang memblokir file agar tidak dipetakan ke dalam memori. Jika suatu aplikasi mencoba memetakan image dengan integritas rendah, tindakan tersebut akan memicu kesalahan STATUS_ACCESS_DENIED. Untuk detail tentang cara kerja tingkat integritas, lihat Kontrol Integritas Wajib.
Pertimbangan kompatibilitas
Blokir gambar integritas rendah mencegah aplikasi memuat file yang diunduh dari internet. Jika alur kerja aplikasi Anda memerlukan pemuatan gambar yang diunduh, Anda ingin memastikan bahwa gambar diunduh dari proses kepercayaan yang lebih tinggi, atau secara eksplisit diberi label untuk menerapkan mitigasi ini.
Opsi konfigurasi
Audit Saja - Anda dapat mengaktifkan mitigasi ini dalam mode audit untuk mengukur potensi dampak kompatibilitas pada aplikasi. Peristiwa audit kemudian dapat dilihat baik di penampil peristiwa atau menggunakan Perburuan Tingkat Lanjut di Microsoft Defender untuk Titik Akhir.
Memblokir gambar jarak jauh
Bagian berikut menjelaskan cara kerja pemblokiran gambar jarak jauh, dampaknya terhadap kompatibilitas, dan opsi konfigurasinya.
Description
Memblokir gambar jarak jauh membantu mencegah aplikasi memuat file yang dihosting di perangkat jarak jauh, seperti berbagi UNC. Memblokir gambar jarak jauh membantu melindungi dari pemuatan biner ke dalam memori yang ada di perangkat eksternal yang dikendalikan oleh penyerang.
Mitigasi ini memblokir beban gambar jika gambar ditentukan berada di perangkat jarak jauh. Ini diimplementasikan oleh manajer memori, yang memblokir file agar tidak dipetakan ke dalam memori. Jika aplikasi mencoba memetakan file jarak jauh, aplikasi akan memicu kesalahan STATUS_ACCESS_DENIED.
Pertimbangan kompatibilitas
Blokir gambar jarak jauh mencegah aplikasi memuat gambar dari perangkat jarak jauh. Jika aplikasi Anda memuat file atau plug-in dari perangkat jarak jauh, maka tidak akan kompatibel dengan mitigasi ini.
Opsi konfigurasi
Audit Saja - Anda dapat mengaktifkan mitigasi ini dalam mode audit untuk mengukur potensi dampak kompatibilitas pada aplikasi. Peristiwa audit kemudian dapat dilihat baik di penampil peristiwa atau menggunakan Perburuan Tingkat Lanjut di Microsoft Defender untuk Titik Akhir.
Memblokir font yang tidak tepercaya
Bagian berikut menjelaskan cara kerja blokir font yang tidak tepercaya, dampak kompatibilitasnya, dan opsi konfigurasinya.
Description
Pemblokiran font yang tidak tepercaya mengurangi risiko cacat saat mengurai font yang memungkinkan penyerang menjalankan kode pada perangkat. Hanya font yang diinstal ke direktori windows\fonts yang akan dimuat untuk diproses oleh GDI.
Mitigasi ini diimplementasikan dalam GDI, yang memvalidasi lokasi file. Jika file tidak berada di direktori font sistem, font tidak akan dimuat untuk penguraian dan panggilan akan gagal.
Mitigasi ini merupakan tambahan terhadap mitigasi bawaan yang disediakan di Windows 10 versi 1607 dan yang lebih baru, serta Windows 11, yang memindahkan penguraian font keluar dari kernel ke dalam kontainer aplikasi mode pengguna. Eksploit apa pun yang berbasis pada penguraian font, akibatnya, terjadi dalam lingkungan sandbox yang terisolasi, sehingga secara signifikan mengurangi risiko.
Pertimbangan kompatibilitas
Penggunaan font yang paling umum di luar direktori font sistem adalah dengan font web. Browser modern, seperti Microsoft Edge, menggunakan DirectWrite alih-alih GDI, dan tidak terpengaruh. Namun, browser warisan, seperti Internet Explorer 11 (dan mode IE dalam Microsoft Edge baru) dapat terpengaruh, terutama dengan aplikasi seperti Office 365, yang menggunakan glyph font untuk menampilkan UI.
Opsi konfigurasi
Audit Saja - Anda dapat mengaktifkan mitigasi ini dalam mode audit untuk mengukur potensi dampak kompatibilitas pada aplikasi. Peristiwa audit kemudian dapat dilihat baik di penampil peristiwa atau menggunakan Perburuan Tingkat Lanjut di Microsoft Defender untuk Titik Akhir.
Penjaga integritas kode
Bagian berikut menjelaskan cara kerja penjaga integritas kode, dampak kompatibilitasnya, dan opsi konfigurasinya.
Description
Penjaga integritas kode memastikan bahwa semua biner yang dimuat ke dalam proses ditandatangani secara digital oleh Microsoft. Pelindung integritas kode mencakup tanda tangan WHQL (Windows Hardware Quality Labs), yang memungkinkan driver yang disetujui WHQL berjalan dalam proses.
Mitigasi ini diimplementasikan dalam manajer memori, yang memblokir biner agar tidak dipetakan ke dalam memori. Jika Anda mencoba memuat biner yang tidak ditandatangani oleh Microsoft, manger memori mengembalikan kesalahan STATUS_INVALID_IMAGE_HASH. Dengan memblokir di tingkat manajer memori, ini mencegah biner yang dimuat oleh proses dan biner yang disuntikkan ke dalam proses.
Pertimbangan kompatibilitas
Mitigasi ini secara khusus memblokir biner apa pun yang tidak ditandatangani oleh Microsoft. Dengan demikian, perangkat lunak ini tidak kompatibel dengan sebagian besar perangkat lunak yang tidak Microsoft, kecuali perangkat lunak didistribusikan oleh (dan ditandatangani secara digital oleh) Microsoft Store, dan opsi untuk memungkinkan pemuatan gambar yang ditandatangani oleh Microsoft Store dipilih.
Opsi konfigurasi
Izinkan juga pemuatan gambar yang ditandatangani oleh Microsoft Store - Aplikasi yang didistribusikan oleh Microsoft Store ditandatangani secara digital oleh Microsoft Store, dan menambahkan konfigurasi ini memungkinkan biner yang melalui proses sertifikasi toko untuk dimuat oleh aplikasi.
Audit Saja - Anda dapat mengaktifkan mitigasi ini dalam mode audit untuk mengukur potensi dampak kompatibilitas pada aplikasi. Peristiwa audit kemudian dapat dilihat baik di penampil peristiwa atau menggunakan Perburuan Tingkat Lanjut di Microsoft Defender untuk Titik Akhir.
Control flow guard (CFG)
Bagian berikut menjelaskan cara kerja pelindung alur kontrol, dampak kompatibilitasnya, dan opsi konfigurasinya.
Description
Control flow guard (CFG) mengurangi risiko penyerang menggunakan kerentanan kerusakan memori dengan melindungi panggilan fungsi tidak langsung. Misalnya, penyerang mungkin menggunakan kerentanan luapan buffer untuk menimpa memori yang berisi penunjuk fungsi, lalu mengganti penunjuk fungsi tersebut dengan penunjuk ke kode yang dapat dieksekusi sesuai pilihan mereka (yang juga dapat disuntikkan ke dalam program).
Mitigasi ini diberikan dengan menambahkan pemeriksaan lain saat kompilasi. Sebelum setiap panggilan fungsi tidak langsung, instruksi lain ditambahkan yang memverifikasi bahwa target adalah target panggilan yang valid sebelum dipanggil. Jika target bukan target panggilan yang valid, maka aplikasi dihentikan. Dengan demikian, hanya aplikasi yang dikompilasi dengan dukungan CFG yang dapat memperoleh manfaat dari mitigasi ini.
Pemeriksaan terhadap target yang valid dilakukan oleh kernel Windows. Ketika file yang dapat dieksekusi dimuat, metadata untuk target panggilan tidak langsung diekstraksi pada waktu pemuatan dan ditandai sebagai target panggilan yang valid. Selain itu, ketika memori dialokasikan dan ditandai sebagai dapat dieksekusi (seperti untuk kode yang dihasilkan), lokasi memori ini juga ditandai sebagai target panggilan yang valid, untuk mendukung mekanisme seperti kompilasi JIT.
Pertimbangan kompatibilitas
Karena aplikasi harus dikompilasi untuk mendukung CFG, aplikasi secara implisit menyatakan kompatibilitasnya dengannya. Oleh karena itu, sebagian besar aplikasi harus bekerja dengan mitigasi ini diaktifkan. Karena pemeriksaan ini dikompilasi ke dalam biner, konfigurasi yang dapat Anda terapkan hanya untuk menonaktifkan pemeriksaan dalam kernel Windows. Dengan kata lain, mitigasi aktif secara default, tetapi Anda dapat mengonfigurasi kernel Windows untuk selalu mengembalikan "ya" jika Anda kemudian menentukan bahwa ada masalah kompatibilitas yang tidak ditemukan pengembang aplikasi dalam pengujian mereka, yang seharusnya jarang terjadi.
Opsi konfigurasi
Gunakan CFG ketat - Dalam mode ketat, semua biner yang dimuat ke dalam proses harus dikompilasi dengan dukungan Control Flow Guard (atau tidak berisi kode yang dapat dieksekusi, seperti DLL sumber daya) agar dapat dimuat.
Note
Pelindung alur kontrol tidak memiliki mode audit. File biner dikompilasi dengan mitigasi ini diaktifkan.
Pencegahan Eksekusi Data (DEP)
Bagian berikut menjelaskan cara kerja Pencegahan Eksekusi Data, dampak kompatibilitasnya, dan opsi konfigurasinya.
Description
Pencegahan Eksekusi Data (DEP) mencegah memori yang tidak secara eksplisit dialokasikan untuk eksekusi agar tidak dieksekusi. DEP membantu melindungi dari penyerang yang menyuntikkan kode berbahaya ke dalam proses, seperti melalui luapan buffer, lalu mengeksekusi kode tersebut.
Jika Anda mencoba mengatur penunjuk instruksi ke alamat memori yang tidak ditandai sebagai dapat dieksekusi, prosesor melempar pengecualian (pelanggaran perlindungan umum), menyebabkan aplikasi mengalami crash.
Pertimbangan kompatibilitas
Semua executable x64, ARM, dan Arm64 memiliki DEP yang diaktifkan secara default, dan tidak dapat dinonaktifkan. Karena aplikasi tidak dijalankan tanpa DEP, kompatibilitas diasumsikan.
Semua biner x86 (32-bit) memiliki DEP yang diaktifkan secara default, tetapi DEP dapat dinonaktifkan per proses. Beberapa aplikasi lama warisan, biasanya aplikasi yang dikembangkan sebelum Windows XP SP2, mungkin tidak kompatibel dengan DEP. Aplikasi tersebut biasanya menghasilkan kode secara dinamis (misalnya, kompilasi JIT) atau tautan ke pustaka yang lebih lama (seperti versi ATL yang lebih lama) yang secara dinamis menghasilkan kode.
Opsi konfigurasi
Aktifkan emulasi ATL Thunk - Opsi ini mengontrol emulasi ATL Thunk. ATL, Pustaka Templat ActiveX, dirancang agar sesingkat dan secepat mungkin. Untuk mengurangi ukuran biner, ia menggunakan teknik yang disebut thunking. Thunking sering ditautkan ke interaksi 32-bit dan 16-bit, tetapi ATL tidak memiliki bagian 16-bit. Sebagai gantinya, untuk menghemat ruang, ATL menyimpan kode mesin dalam memori yang tidak selaras dengan kata. Ini membuat biner yang lebih kecil. ATL kemudian menjalankan kode tersebut secara langsung. Versi ATL yang dikompilasi dengan Visual Studio 7.1 atau yang lebih lama (Visual Studio 2003) tidak menandai memori ini sebagai dapat dieksekusi. Emulasi thunk memperbaiki masalah tersebut. Aplikasi dengan model ekstensi biner (seperti Internet Explorer 11) memerlukan emulasi ATL Thunk diaktifkan.
Menonaktifkan titik ekstensi
Bagian berikut menjelaskan cara kerja mitigasi penonaktifan titik ekstensi, dampaknya terhadap kompatibilitas, dan opsi konfigurasinya.
Description
Mitigasi “Nonaktifkan titik ekstensi” menonaktifkan berbagai titik ekstensi pada suatu aplikasi, yang mungkin digunakan untuk mempertahankan persistensi atau meningkatkan hak akses konten berbahaya.
Hal ini mencakup:
- DLL AppInit - Setiap kali proses dimulai, sistem memuat DLL yang ditentukan ke dalam konteks proses yang baru dimulai sebelum memanggil fungsi titik masuknya. Detail tentang DLL AppInit dapat ditemukan di sini. Setelah mitigasi ini diterapkan, DLL AppInit tidak dimuat. Dimulai dengan Windows 7, DLL AppInit perlu ditandatangani secara digital, seperti yang dijelaskan di sini. Selain itu, dimulai dengan Windows 8, DLL AppInit tidak akan dimuat jika SecureBoot diaktifkan, seperti yang dijelaskan di sini.
- IME lawas - Editor Metode Input (IME) memungkinkan pengguna mengetik teks dalam bahasa yang memiliki lebih banyak karakter daripada yang dapat diwakili di keyboard. Pihak ketiga dapat membuat IMEs. IME berbahaya mungkin mendapatkan kredensial atau informasi sensitif lainnya dari tangkapan input ini. Beberapa IMEs, disebut sebagai IM Warisan, hanya berfungsi pada aplikasi Windows Desktop, dan bukan aplikasi UWP. Mitigasi ini juga mencegah IME warisan ini dimuat ke aplikasi Windows Desktop yang ditentukan.
- Windows Event Hooks - Aplikasi dapat memanggil API SetWinEventHook untuk mendaftarkan minat pada peristiwa yang terjadi. DLL ditentukan dan dapat diinjeksikan ke dalam proses. Mitigasi ini memaksa hook untuk dikirim ke proses yang mendaftarkannya, alih-alih dijalankan di dalam proses tersebut melalui DLL yang diinjeksi.
Pertimbangan kompatibilitas
Sebagian besar titik ekstensi ini relatif jarang digunakan, sehingga efek kompatibilitas biasanya kecil, terutama pada tingkat aplikasi individual. Salah satu pertimbangannya adalah jika pengguna menggunakan IM Warisan non-Microsoft yang tidak akan berfungsi dengan aplikasi yang dilindungi.
Opsi konfigurasi
Tidak ada opsi konfigurasi untuk mitigasi ini.
Note
Nonaktifkan titik ekstensi tidak memiliki mode audit.
Menonaktifkan panggilan sistem Win32k
Bagian berikut menjelaskan cara kerja mitigasi penonaktifan panggilan sistem Win32k, dampaknya terhadap kompatibilitas, dan opsi konfigurasinya.
Description
Win32k.sys menyediakan permukaan serangan yang luas untuk penyerang. Sebagai komponen mode kernel, komponen ini sering menjadi sasaran sebagai vektor pelolosan bagi aplikasi yang diisolasi dalam sandbox. Mitigasi ini mencegah panggilan ke win32k.sys dengan memblokir utas agar tidak mengubah dirinya menjadi utas GUI, yang kemudian akan diberi akses untuk memanggil fungsi-fungsi Win32k. Utas bukan GUI saat dibuat, tetapi akan dikonversi pada saat pertama kali memanggil win32k.sys, atau melalui pemanggilan API ke IsGuiThread.
Pertimbangan kompatibilitas
Mitigasi ini dirancang untuk proses yang merupakan proses non-UI khusus. Misalnya, banyak browser modern menggunakan isolasi proses dan menggabungkan proses non-UI. Aplikasi apa pun yang menampilkan GUI menggunakan satu proses akan dipengaruhi oleh mitigasi ini.
Opsi konfigurasi
Audit Saja - Anda dapat mengaktifkan mitigasi ini dalam mode audit untuk mengukur potensi dampak kompatibilitas pada aplikasi. Peristiwa audit kemudian dapat dilihat baik di penampil peristiwa atau menggunakan Perburuan Tingkat Lanjut di Microsoft Defender untuk Titik Akhir.
Jangan izinkan proses anak
Bagian berikut menjelaskan cara kerja mitigasi tidak mengizinkan proses anak, dampaknya terhadap kompatibilitas, dan opsi konfigurasinya.
Description
Mitigasi Jangan izinkan proses anak mencegah aplikasi membuat aplikasi anak baru. Teknik umum yang digunakan oleh pelaku ancaman adalah menjalankan proses tepercaya pada perangkat dengan input berbahaya (serangan "living off the land"), yang sering kali memerlukan menjalankan aplikasi lain pada perangkat. Jika tidak ada alasan sah yang membuat sebuah aplikasi perlu meluncurkan proses anak, mitigasi ini memitigasi vektor serangan potensial tersebut. Mitigasi diterapkan dengan mengatur properti pada token proses, yang memblokir pembuatan token untuk proses anak dengan pesan kesalahan STATUS_CHILD_PROCESS_BLOCKED.
Pertimbangan kompatibilitas
Jika aplikasi Anda meluncurkan aplikasi turunan karena alasan apa pun, misalnya untuk mendukung tautan yang membuka peramban, termasuk peramban eksternal, atau menjalankan utilitas lain di komputer, fungsi ini tidak akan berfungsi jika mitigasi ini diterapkan.
Opsi konfigurasi
Audit Saja - Anda dapat mengaktifkan mitigasi ini dalam mode audit untuk mengukur potensi dampak kompatibilitas pada aplikasi. Peristiwa audit kemudian dapat dilihat baik di penampil peristiwa atau menggunakan Perburuan Tingkat Lanjut di Microsoft Defender untuk Titik Akhir.
Ekspor pemfilteran alamat
Bagian berikut menjelaskan cara kerja pemfilteran alamat ekspor, dampak kompatibilitasnya, dan opsi konfigurasinya.
Description
Pemfilteran alamat ekspor (EAF) mengurangi risiko kode berbahaya melihat tabel alamat ekspor dari semua modul yang dimuat untuk menemukan modul yang berisi API yang berguna untuk serangan mereka. Ini adalah taktik umum yang digunakan oleh shellcode. Untuk mengurangi risiko serangan seperti itu, mitigasi ini melindungi tiga modul yang umum diserang:
- ntdll.dll
- kernelbase.dll
- kernel32.dll
Langkah mitigasi melindungi halaman memori di [direktori ekspor] yang menunjuk ke tabel alamat ekspor. Halaman memori ini memiliki perlindungan PAGE_GUARD yang diterapkan padanya. Saat seseorang mencoba mengakses memori ini, hal itu memicu STATUS_GUARD_PAGE_VIOLATION. Mitigasi menangani pengecualian ini, dan jika instruksi akses tidak lulus validasi, proses dihentikan.
Pertimbangan kompatibilitas
Mitigasi ini terutama merupakan masalah untuk aplikasi seperti debugger, aplikasi terkotakpasir, aplikasi yang menggunakan DRM, atau aplikasi yang menerapkan teknologi anti-debugging.
Opsi konfigurasi
Validasi akses untuk modul yang umumnya disalahgunakan oleh eksploitasi - Opsi ini, juga dikenal sebagai EAF+, menambahkan perlindungan untuk modul lain yang umum diserang:
mshtml.dllflash*.ocxjscript*.ocxvbscript.dllvgx.dllmozjs.dllxul.dllacrord32.dllacrofx32.dllacroform.api
Selain itu, dengan mengaktifkan EAF+, mitigasi ini menambahkan perlindungan PAGE_GUARD ke halaman yang berisi header "MZ", yaitu 2 byte pertama dari header DOS dalam file PE, yang merupakan salah satu aspek dari konten memori yang telah diketahui dan dapat dicari oleh shellcode untuk mengidentifikasi modul yang mungkin menarik di dalam memori.
Audit Saja - Anda dapat mengaktifkan mitigasi ini dalam mode audit untuk mengukur potensi dampak kompatibilitas pada aplikasi. Peristiwa audit kemudian dapat dilihat baik di penampil peristiwa atau menggunakan Perburuan Tingkat Lanjut di Microsoft Defender untuk Titik Akhir.
Terapkan pengacakan secara paksa untuk citra (ASLR wajib)
Bagian berikut menjelaskan cara kerja ASLR Wajib, dampak kompatibilitasnya, dan opsi konfigurasinya.
Description
Pengacakan Tata Letak Ruang Alamat (ASLR) mengurangi risiko penyerang menggunakan pengetahuan mereka tentang tata letak memori sistem untuk menjalankan kode yang sudah ada dalam memori proses dan sudah ditandai sebagai dapat dieksekusi. Ini dapat mengurangi risiko penyerang menggunakan teknik seperti serangan return-to-libc, di mana musuh mengatur konteks dan kemudian memodifikasi alamat pengembalian untuk menjalankan kode yang ada dengan konteks yang sesuai dengan tujuan musuh.
ASLR wajib memaksa pemindahan basis semua DLL di dalam proses. Pengembang dapat mengaktifkan ASLR menggunakan opsi linker /DYNAMICBASE , dan mitigasi ini memiliki efek yang sama.
Ketika manajer memori memetakan gambar ke dalam proses, ASLR Wajib akan secara paksa merebase DLL dan EXE yang belum memilih ASLR. Namun, perlu dicatat bahwa rebasing ini tidak memiliki entropi, sehingga dapat ditempatkan pada lokasi memori yang dapat diprediksi. Untuk lokasi biner yang direbasis dan diacak, mitigasi ini harus dipadukan dengan Mengacak alokasi memori (Bottom-up ASLR).
Pertimbangan kompatibilitas
Efek kompatibilitas ASLR ini biasanya dibatasi untuk aplikasi lama yang dibangun menggunakan kompilator yang membuat asumsi tentang alamat dasar file biner atau telah menghapus informasi relokasi dasar. Ini dapat menyebabkan kesalahan yang tidak dapat diprediksi karena alur eksekusi mencoba untuk melompat ke lokasi yang diharapkan, bukan lokasi aktual dalam memori.
Opsi konfigurasi
Jangan izinkan gambar yang dilucuti - Opsi ini memblokir pemuatan gambar yang informasi relokasinya dilucuti. Format file PE Windows berisi alamat absolut, dan pengkompilasi juga menghasilkan [tabel relokasi dasar yang dapat digunakan pemuat untuk menemukan semua referensi memori relatif dan offsetnya, sehingga dapat diperbarui jika biner tidak dimuat pada alamat dasar pilihannya. Beberapa aplikasi lama menghapus informasi ini dalam build produksi, sehingga biner ini tidak dapat diubah basisnya. Mitigasi ini memblokir biner tersebut agar tidak dimuat (alih-alih memungkinkan mereka memuat pada alamat dasar pilihan mereka).
Note
Pengacakan paksa untuk gambar (ASLR Wajib) tidak memiliki mode audit.
Perlindungan tumpukan yang ditegakkan oleh perangkat keras
Description
Perlindungan stack berbasis perangkat keras memberikan proteksi kuat terhadap serangan ROP. Ini bekerja dengan menyimpan catatan alur eksekusi yang dimaksudkan dari suatu program. Untuk mendukung adopsi dan kompatibilitas aplikasi yang lancar, Windows menawarkan perlindungan ini sebagai model keikutsertaan. Pengembang dapat mengaktifkannya dengan kecepatan mereka sendiri.
Pertimbangan kompatibilitas
Perlindungan tumpukan yang diterapkan oleh perangkat keras hanya berfungsi pada chipset yang mendukung hardware shadow stacks, Intel's Control-flow Enforcement Technology (CET), atau AMD shadow stacks.
Jika Anda menjalankan aplikasi yang berbasis .NET Framework, perlindungan tumpukan yang diterapkan oleh perangkat keras berfungsi dengan .NET Framework 7 (opsional) atau yang lebih baru. Jika Anda menggunakan versi yang lebih lama, Anda mungkin menghadapi crash atau penggunaan CPU yang tinggi. Masalah ini juga dapat terjadi dalam mode audit atau saat hanya menargetkan modul yang kompatibel.
Opsi konfigurasi
Hanya audit - Anda dapat mengaktifkan mitigasi ini dalam mode audit untuk mengukur potensi dampak kompatibilitas pada aplikasi. Kejadian audit kemudian dapat dilihat baik melalui Event Viewer maupun dengan menggunakan Advanced Hunting di Defender for Endpoint.
Terapkan untuk semua modul, bukan hanya modul yang kompatibel - Anda dapat mengaktifkan mitigasi ini agar diterapkan ke semua modul, bukan hanya modul yang kompatibel.
Pemfilteran alamat impor (IAF)
Description
Mitigasi pemfilteran alamat impor (IAF) membantu mengurangi risiko musuh mengubah alur kontrol aplikasi dengan memodifikasi tabel alamat impor (IAT) untuk mengalihkan ke kode sewenang-wenang pilihan penyerang ketika fungsi tersebut dipanggil. Penyerang dapat menggunakan pendekatan ini untuk membajak kontrol, atau untuk mencegat, memeriksa, dan berpotensi memblokir panggilan ke API sensitif.
Halaman memori untuk semua API yang dilindungi memiliki perlindungan PAGE_GUARD yang diterapkan padanya. Saat seseorang mencoba mengakses memori ini, hal itu memicu STATUS_GUARD_PAGE_VIOLATION. Mitigasi menangani pengecualian ini, dan jika instruksi akses tidak lulus validasi, proses dihentikan.
Mitigasi ini melindungi API Windows berikut:
GetProcAddressGetProcAddressForCallerLoadLibraryALoadLibraryExALoadLibraryWLoadLibraryExWLdrGetProcedureAddressLdrGetProcedureAddressExLdrGetProcedureAddressForCallerLdrLoadDllVirtualProtectVirtualProtectExVirtualAllocVirtualAllocExNtAllocateVirtualMemoryNtProtectVirtualMemoryCreateProcessACreateProcessWWinExecCreateProcessAsUserACreateProcessAsUserWGetModuleHandleAGetModuleHandleWRtlDecodePointerDecodePointer
Pertimbangan kompatibilitas
Aplikasi sah yang melakukan intersepsi API mungkin terdeteksi oleh mitigasi ini dan menyebabkan beberapa aplikasi mengalami crash. Contohnya adalah perangkat lunak keamanan dan shim untuk kompatibilitas aplikasi.
Opsi konfigurasi
Audit Saja - Anda dapat mengaktifkan mitigasi ini dalam mode audit untuk mengukur potensi dampak kompatibilitas pada aplikasi. Peristiwa audit kemudian dapat dilihat baik di penampil peristiwa atau menggunakan Perburuan Tingkat Lanjut di Microsoft Defender untuk Titik Akhir.
Mengacak alokasi memori (Bottom-up ASLR)
Description
Acak alokasi memori (Bottom-up ASLR) menambahkan entropi ke relokasi, sehingga lokasinya diacak dan karenanya kurang dapat diprediksi. Mitigasi ini mengharuskan ASLR Wajib berlaku.
Ukuran ruang alamat 32-bit menempatkan batasan praktis pada entropi yang dapat ditambahkan, dan oleh karena itu aplikasi 64-bit membuatnya lebih sulit bagi penyerang untuk menebak lokasi dalam memori.
Pertimbangan kompatibilitas
Sebagian besar aplikasi yang kompatibel dengan ASLR Wajib (rebasing) juga kompatibel dengan Bottom-up ASLR. Beberapa aplikasi mungkin memiliki masalah pemotongan pointer jika menyimpan pointer lokal dalam variabel 32-bit. Aplikasi ini mengharapkan alamat dasar di bawah 4 GB, sehingga tidak akan berfungsi dengan opsi entropi tinggi. Anda dapat menonaktifkan entropi tinggi jika diperlukan.
Opsi konfigurasi
Jangan gunakan entropi tinggi - opsi ini menonaktifkan penggunaan ASLR berentropi tinggi, yang menambahkan entropi 24 bit (rentang variasi 1 TB) ke dalam alokasi dari bawah ke atas untuk aplikasi 64-bit.
Note
Mengacak alokasi memori (Bottom-up ASLR) tidak memiliki mode audit.
Menyimulasikan eksekusi (SimExec)
Description
Eksekusi simulasi (SimExec) adalah mitigasi untuk aplikasi 32-bit saja. Ini membantu memvalidasi bahwa panggilan ke API sensitif kembali ke fungsi pemanggil yang sah. Ini dilakukan dengan mencegat panggilan ke API sensitif, dan kemudian mensimulasikan eksekusi API tersebut dengan menelusuri instruksi bahasa perakitan yang dikodekan mencari instruksi RET, yang harus kembali ke pemanggil. Selanjutnya, sistem memeriksa fungsi tersebut dan menelusuri memori ke belakang untuk menemukan instruksi CALL yang mendahuluinya guna menentukan apakah fungsi tersebut cocok dengan instruksi CALL itu, serta bahwa instruksi RET belum diintersep.
API yang disadap oleh mitigasi ini adalah:
LoadLibraryALoadLibraryWLoadLibraryExALoadLibraryExWLdrLoadDllVirtualAllocVirtualAllocExNtAllocateVirtualMemoryVirtualProtectVirtualProtectExNtProtectVirtualMemoryHeapCreateRtlCreateHeapCreateProcessACreateProcessWCreateProcessInternalACreateProcessInternalWNtCreateUserProcessNtCreateProcessNtCreateProcessExCreateRemoteThreadCreateRemoteThreadExNtCreateThreadExWriteProcessMemoryNtWriteVirtualMemoryWinExecCreateFileMappingACreateFileMappingWCreateFileMappingNumaWNtCreateSectionMapViewOfFileMapViewOfFileExMapViewOfFileFromAppLdrGetProcedureAddressForCaller
Jika gadget ROP terdeteksi, proses dihentikan.
Pertimbangan kompatibilitas
Aplikasi yang melakukan intersepsi API, terutama perangkat lunak keamanan, dapat menyebabkan masalah kompatibilitas dengan mitigasi ini.
Mitigasi ini tidak kompatibel dengan mitigasi Penjaga Kode Arbitrer.
Opsi konfigurasi
Audit Saja - Anda dapat mengaktifkan mitigasi ini dalam mode audit untuk mengukur potensi dampak kompatibilitas pada aplikasi. Peristiwa audit kemudian dapat dilihat baik di penampil peristiwa atau menggunakan Perburuan Tingkat Lanjut di Microsoft Defender untuk Titik Akhir.
Memvalidasi pemanggilan API (CallerCheck)
Description
Memvalidasi pemanggilan API (CallerCheck) adalah mitigasi untuk teknik pemrograman berorientasi kembali (ROP) yang memvalidasi bahwa API sensitif dipanggil dari pemanggil yang valid. Mitigasi ini memeriksa alamat pengembalian yang diteruskan, dan kemudian secara heuristik membongkar mundur untuk menemukan panggilan di atas alamat pengembalian untuk menentukan apakah target panggilan cocok dengan parameter yang diteruskan ke fungsi.
API yang disadap oleh mitigasi ini adalah:
LoadLibraryALoadLibraryWLoadLibraryExALoadLibraryExWLdrLoadDllVirtualAllocVirtualAllocExNtAllocateVirtualMemoryVirtualProtectVirtualProtectExNtProtectVirtualMemoryHeapCreateRtlCreateHeapCreateProcessACreateProcessWCreateProcessInternalACreateProcessInternalWNtCreateUserProcessNtCreateProcessNtCreateProcessExCreateRemoteThreadCreateRemoteThreadExNtCreateThreadExWriteProcessMemoryNtWriteVirtualMemoryWinExecCreateFileMappingACreateFileMappingWCreateFileMappingNumaWNtCreateSectionMapViewOfFileMapViewOfFileExMapViewOfFileFromAppLdrGetProcedureAddressForCaller
Jika gadget ROP terdeteksi, proses dihentikan.
Pertimbangan kompatibilitas
Aplikasi yang melakukan intersepsi API, terutama perangkat lunak keamanan, dapat menyebabkan masalah kompatibilitas dengan mitigasi ini.
Mitigasi ini tidak kompatibel dengan mitigasi Penjaga Kode Arbitrer.
Opsi konfigurasi
Audit Saja - Anda dapat mengaktifkan mitigasi ini dalam mode audit untuk mengukur potensi dampak kompatibilitas pada aplikasi. Peristiwa audit kemudian dapat dilihat baik di penampil peristiwa atau menggunakan Perburuan Tingkat Lanjut di Microsoft Defender untuk Titik Akhir.
Memvalidasi rantai pengecualian (SEHOP)
Description
Validasi rantai pengecualian (SEHOP) adalah mitigasi terhadap teknik eksploitasi penimpaan Penanganan Pengecualian Terstruktur (SEH). Penanganan pengecualian terstruktur adalah proses di mana aplikasi dapat meminta untuk menangani pengecualian tertentu. Penangan pengecualian dirangkai secara berantai, sehingga jika satu penangan pengecualian memilih untuk tidak menangani pengecualian tertentu, pengecualian tersebut dapat diteruskan ke penangan pengecualian berikutnya dalam rantai hingga salah satunya memutuskan untuk menanganinya. Karena daftar handler bersifat dinamis, itu disimpan di tumpukan. Penyerang dapat menggunakan kerentanan luapan tumpukan untuk kemudian menimpa handler pengecualian dengan penunjuk ke kode pilihan penyerang.
Mitigasi ini bergantung pada desain SEH, di mana setiap entri SEH berisi penunjuk ke handler pengecualian, dan penunjuk ke handler berikutnya dalam rantai pengecualian. Mitigasi ini dipanggil oleh dispatcher pengecualian, yang memvalidasi rantai SEH ketika pengecualian dipanggil. Ini memverifikasi bahwa:
- Semua entri rantai eksepsi berada di dalam batas tumpukan
- Semua catatan pengecualian selaras
- Tidak ada penunjuk penangan pengecualian yang menunjuk ke tumpukan
- Tidak ada penunjuk mundur
- Rantai pengecualian berakhir pada handler pengecualian akhir yang diketahui
Jika validasi ini gagal, maka penanganan pengecualian dibatalkan, dan pengecualian tidak akan ditangani.
Pertimbangan kompatibilitas
Masalah kompatibilitas dengan SEHOP relatif jarang terjadi. Jarang ada aplikasi yang bergantung pada perusakan rantai pengecualian. Namun, beberapa aplikasi terdampak oleh perubahan kecil pada timing, yang mungkin muncul sebagai race condition yang mengungkap bug laten pada multi-threading di aplikasi tersebut.
Opsi konfigurasi
Note
Memvalidasi rantai pengecualian (SEHOP) tidak memiliki mode audit.
Memvalidasi penggunaan handle
Description
Validasi penggunaan handle adalah mitigasi yang membantu melindungi dari penyerang yang menggunakan handle yang sudah ada untuk mengakses objek yang dilindungi. Handle adalah referensi ke objek yang dilindungi. Jika kode aplikasi mereferensikan handle yang tidak valid, hal itu dapat mengindikasikan bahwa pihak penyerang sedang mencoba menggunakan handle yang sebelumnya telah dicatat (tetapi tidak akan terdeteksi oleh mekanisme penghitungan referensi aplikasi). Jika aplikasi mencoba menggunakan objek yang tidak valid, alih-alih hanya mengembalikan null, aplikasi akan menimbulkan pengecualian (STATUS_INVALID_HANDLE).
Mitigasi ini secara otomatis diterapkan ke aplikasi Windows Store.
Pertimbangan kompatibilitas
Aplikasi yang tidak secara akurat melacak referensi penanganan, dan yang tidak membungkus operasi ini dalam penangan pengecualian, berpotensi akan terpengaruh oleh mitigasi ini.
Opsi konfigurasi
Note
Memvalidasi penggunaan handle tidak memiliki mode audit.
Validasi integritas heap
Description
Mitigasi memvalidasi integritas heap meningkatkan tingkat perlindungan mitigasi heap di Windows dengan menyebabkan aplikasi dihentikan jika kerusakan heap terdeteksi. Mitigasi meliputi:
- Mencegah handle HEAP dibebaskan
- Melakukan validasi lain pada header blok yang diperluas untuk alokasi timbunan
- Memverifikasi bahwa alokasi timbunan belum ditandai sebagai sedang digunakan
- Menambahkan halaman penjaga ke alokasi besar, segmen timbunan, dan subsegmen di atas ukuran minimum
Pertimbangan kompatibilitas
Mitigasi ini sudah diterapkan secara default untuk aplikasi 64-bit dan untuk aplikasi 32-bit yang menargetkan Windows Vista atau yang lebih baru. Aplikasi warisan dari Windows XP atau yang lebih lama paling berisiko, meskipun masalah kompatibilitas jarang terjadi.
Opsi konfigurasi
Note
Memvalidasi integritas timbunan tidak memiliki mode audit.
Memvalidasi integritas dependensi gambar
Description
Mitigasi dependensi gambar validasi membantu melindungi dari serangan yang mencoba mengganti kode untuk dll yang secara statis ditautkan oleh biner Windows. Teknik penanaman DLL menyalahgunakan mekanisme pencarian milik loader untuk menyuntikkan kode berbahaya, yang dapat digunakan untuk menjalankan kode berbahaya dalam konteks dengan hak istimewa yang lebih tinggi. Ketika loader memuat biner yang ditandatangani Windows, lalu memuat dll apa pun yang bergantung pada biner, biner ini diverifikasi untuk memastikan bahwa biner ini juga ditandatangani secara digital sebagai biner Windows. Jika pemeriksaan tanda tangan gagal, DLL tidak akan dimuat dan akan memunculkan pengecualian, serta mengembalikan status STATUS_INVALID_IMAGE_HASH.
Pertimbangan kompatibilitas
Masalah kompatibilitas jarang terjadi. Aplikasi yang bergantung pada penggantian biner Windows dengan versi privat lokalnya sendiri akan terdampak, dan juga ada risiko kecil munculnya bug pengaturan waktu yang sulit terdeteksi dalam aplikasi multi-utas.
Opsi konfigurasi
Audit Saja - Anda dapat mengaktifkan mitigasi ini dalam mode audit untuk mengukur potensi dampak kompatibilitas pada aplikasi. Peristiwa audit kemudian dapat dilihat baik di penampil peristiwa atau menggunakan Perburuan Tingkat Lanjut di Microsoft Defender untuk Titik Akhir.
Memvalidasi integritas tumpukan (StackPivot)
Description
Mitigasi validasi integritas stack (StackPivot) membantu melindungi dari serangan Stack Pivot, yaitu serangan ROP ketika penyerang membuat stack palsu di memori heap, lalu mengelabui aplikasi agar mengembalikan eksekusi ke stack palsu yang mengendalikan alur eksekusi.
Mitigasi ini mengintersepsi banyak API Windows dan memeriksa nilai penunjuk stack. Jika alamat penunjuk tumpukan tidak berada di antara bagian bawah dan bagian atas tumpukan, maka peristiwa direkam dan, jika tidak dalam mode audit, proses dihentikan.
API yang disadap oleh mitigasi ini adalah:
LoadLibraryALoadLibraryWLoadLibraryExALoadLibraryExWLdrLoadDllVirtualAllocVirtualAllocExNtAllocateVirtualMemoryVirtualProtectVirtualProtectExNtProtectVirtualMemoryHeapCreateRtlCreateHeapCreateProcessACreateProcessWCreateProcessInternalACreateProcessInternalWNtCreateUserProcessNtCreateProcessNtCreateProcessExCreateRemoteThreadCreateRemoteThreadExNtCreateThreadExWriteProcessMemoryNtWriteVirtualMemoryWinExecCreateFileMappingACreateFileMappingWCreateFileMappingNumaWNtCreateSectionMapViewOfFileMapViewOfFileExMapViewOfFileFromAppLdrGetProcedureAddressForCaller
Pertimbangan kompatibilitas
Aplikasi yang menggunakan tumpukan palsu terdampak, dan ada juga risiko kecil terungkapnya bug pengaturan waktu yang sulit terdeteksi dalam aplikasi multi-utas. Aplikasi yang melakukan intersepsi API, terutama perangkat lunak keamanan, dapat menyebabkan masalah kompatibilitas dengan mitigasi ini.
Mitigasi ini tidak kompatibel dengan mitigasi Penjaga Kode Arbitrer.
Opsi konfigurasi
Audit Saja - Anda dapat mengaktifkan mitigasi ini dalam mode audit untuk mengukur potensi dampak kompatibilitas pada aplikasi. Peristiwa audit kemudian dapat dilihat baik di penampil peristiwa atau menggunakan Perburuan Tingkat Lanjut di Microsoft Defender untuk Titik Akhir.