Aracılığıyla paylaş


Exploit Protection başvurusu

Şunlar için geçerlidir:

Uç Nokta için Microsoft Defender'ı deneyimlemek ister misiniz? Ücretsiz deneme için kaydolun.

Yararlanma koruması, bir geliştirici yazılımı derleyip dağıttıktan sonra kuruluş yöneticilerinin ve BT uzmanlarının uygulayabileceği uygulamalar için gelişmiş korumalar sağlar.

Bu makale, güvenlik açığından yararlanma koruma ilkelerini başarıyla oluşturmanıza ve uygulamanıza yardımcı olmak için hem ilke düzeyinde hem de bireysel risk azaltma düzeyinde yararlanma korumasının nasıl çalıştığını anlamanıza yardımcı olur.

Risk azaltmaları nasıl uygulanır?

Uygulama başına yararlanma koruması risk azaltmaları uygulanır.

Risk azaltmalar, korumaları yapılandırdığınız her program için bir kayıt defteri girdisi aracılığıyla yapılandırılır. Bu ayarlar, her program (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\*ImageFileName*\MitigationOptions) için MitigationOptions kayıt defteri girdisinde depolanır. Programı yeniden başlattığınızda etkinleşirler ve siz değiştirip programı yeniden başlatana kadar etkin kalırlar.

Önemli

Görüntü dosyası yürütme seçenekleri yalnızca bir dosya adı veya yol belirtmenize izin verir; sürüm numarası, mimari veya başka bir ayırıcı belirtmenize izin vermez. Benzersiz adlara veya yollara sahip uygulamalara yönelik azaltmaları hedeflemeye dikkat edin ve bunları yalnızca bu sürümü ve uygulamanın mimarisini test ettiğiniz cihazlara uygulayın.

PowerShell, grup ilkesi veya MDM kullanarak xml yapılandırma dosyası kullanarak açıklardan yararlanma koruması azaltmalarını yapılandırıyorsanız, bu XML yapılandırma dosyasını işlerken tek tek kayıt defteri ayarları sizin için yapılandırılır.

Yararlanma korumasını sıfırlama

Önemli

XML dosyasını dağıtan ilke artık zorunlu tutulmadığında, bu XML yapılandırma dosyası tarafından dağıtılan ayarlar otomatik olarak kaldırılmaz.

Açıktan yararlanma koruması ayarlarını kaldırmak için, XML yapılandırmasını temiz bir Windows 10 veya Windows 11 cihazından dışarı aktarın ve bu yeni XML dosyasını dağıtın. Alternatif olarak Microsoft, açıklardan yararlanma koruması ayarlarını sıfırlamak için Windows Güvenliği Temelleri'nin bir parçası olarak bir XML dosyası sağlar.

PowerShell kullanarak yararlanma koruması ayarlarını sıfırlamak için aşağıdaki komutu kullanın:

Set-ProcessMitigation -PolicyFilePath EP-reset.xml

Aşağıda, Windows Güvenliği Temelleriyle dağıtılan EP-reset.xml dosyası bulunmaktadır:

<?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>

Risk Azaltma Referansı

Aşağıdaki bölümlerde, her bir açıklardan faydalanmaya karşı koruma risk azaltması tarafından sağlanan koruma, risk azaltımı için uyumluluk konuları ve kullanılabilir yapılandırma seçenekleri ayrıntılı olarak açıklanmaktadır.

Rastgele kod koruyucusu

Açıklama

Rastgele kod koruyucusu, kötü niyetli bir saldırganın, bir bellek güvenlik açığı aracılığıyla, seçtiği kodu belleğe yüklemesine ve bu kodu çalıştırabilmesine karşı korunmaya yardımcı olur.

Rastgele kod koruyucu, bir uygulamayı dinamik olarak oluşturulan kodu (örneğin, exe'nin kendisinden veya dll'den yüklenmemiş kod) yürütmeye karşı korur. Rastgele kod koruyucusu, belleğin yürütülebilir olarak işaretlenmesini engelleyerek çalışır. Bir uygulama bellek ayırmaya çalıştığında koruma bayraklarını kontrol ederiz. (Bellek; okuma, yazma ve/veya yürütme koruma bayraklarıyla ayrılabilir.) Ayırma işlemi, yürütme koruma bayrağını dâhil etmeye çalışırsa, bellek ayırma başarısız olur ve bir hata kodu verir (STATUS_DYNAMIC_CODE_BLOCKED). Benzer şekilde, bir uygulama zaten ayrılmış olan ve yürütme koruma bayrağını içeren belleğin koruma bayraklarını değiştirmeye çalışırsa, izin değişikliği başarısız olur ve (STATUS_DYNAMIC_CODE_BLOCKED) hata kodunu döndürür.

Yürütme bayrağının ayarlanmasını önleyerek, Windows 10 ve Windows 11'in veri yürütme engelleme özelliği, yönerge işaretçisinin o belleğe ayarlanmasına ve bu kodu çalıştırmasına karşı koruma sağlayabilir.

Uyumlulukta dikkate alınacak noktalar

Rastgele kod koruyucusu, herhangi bir belleğin yürütülebilir olarak ayrılmasını engeller ve bu, Tam Zamanında (JIT) derleyicileri gibi yaklaşımlarla uyumluluk sorunu ortaya çıkarır. Örneğin çoğu modern tarayıcı, performansı iyileştirmek için JavaScript'i yerel kod olarak derler. Bu azaltmayı desteklemek için, JIT derlemesini korumalı işlemin dışına taşımak için yeniden çizilmeleri gerekir. Tasarımı betiklerden veya diğer ara dillerden dinamik olarak kod oluşturan diğer uygulamalar da bu risk azaltma ile benzer şekilde uyumsuzdur.

Yapılandırma seçenekleri

İş parçacığının ayrılmasına izin ver - Risk azaltma özelliğini, tek bir iş parçacığının bu korumadan ayrılmasına izin verecek şekilde yapılandırabilirsiniz. Geliştiricinin bu risk azaltmanın farkındalığıyla uygulamayı yazması ve bu iş parçacığında dinamik kod yürütmesine izin verilebilmesi için ThreadInformation parametresi ThreadDynamicCodePolicy olarak ayarlanmış SetThreadInformation API'sini çağırması gerekir.

Yalnızca denetim - Bir uygulama üzerindeki olası uyumluluk etkisini ölçmek için bu azaltmayı denetim modunda etkinleştirebilirsiniz. Denetim olayları daha sonra olay görüntüleyicide veya Uç Nokta için Defender’da Gelişmiş Avcılık kullanılarak görüntülenebilir.

Bütünlük düzeyi düşük görüntüleri engelle

Açıklama

Düşük bütünlük içeren görüntüleri engelle ayarı, uygulamanın güvenilmeyen dosyaları yüklemesini engeller çünkü bunlar genellikle korumalı bir tarayıcıdan İnternet'ten indirilmiştir.

Bu azaltma, görüntünün Düşük IL işlemlerine erişim izni veren ve ACE güven etiketi olmayan bir Access Control Girişi (ACE) varsa görüntü yüklemelerini engeller. Bellek yöneticisi tarafından uygulanır ve bu da dosyanın belleğe eşlenmesini engeller. Bir uygulama düşük bütünlükte bir görüntüyü eşlemeye çalışırsa STATUS_ACCESS_DENIED hatasını tetikler. Bütünlük düzeylerinin nasıl çalıştığının ayrıntıları için bkz. Zorunlu Bütünlük Denetimi.

Uyumlulukta dikkate alınacak noktalar

Düşük bütünlük içeren görüntüleri engelleme, uygulamanın İnternet'ten indirilen dosyaları yüklemesini engeller. Uygulama iş akışınız indirilen görüntülerin yüklenmesini gerektiriyorsa, bunların daha yüksek bir güven işleminden indirildiğinden veya bu azaltmayı uygulamak için açıkça yeniden etiketlendiklerinden emin olmak istersiniz.

Yapılandırma seçenekleri

Yalnızca Denetle - Bir uygulama üzerindeki olası uyumluluk etkisini ölçmek için bu azaltmayı denetim modunda etkinleştirebilirsiniz. Denetim olayları daha sonra olay görüntüleyicide veya Uç Nokta için Defender’da Gelişmiş Avcılık kullanılarak görüntülenebilir.

Uzak görüntüleri engelle

Açıklama

Uzak görüntülerin engellenmesi, uygulamanın UNC paylaşımı gibi uzak bir cihazda barındırılan dosyaları yüklemesini önlemeye yardımcı olur. Uzak görüntülerin engellenmesi, saldırgan tarafından kontrol edilen haricî bir cihazda yer alan ikili dosyaların belleğe yüklenmesine karşı korumaya yardımcı olur.

Bu azaltma, görüntünün uzak bir cihazda olduğu belirlenirse görüntü yüklemelerini engeller. Bellek yöneticisi tarafından uygulanır ve bu da dosyanın belleğe eşlenmesini engeller. Bir uygulama uzak bir dosyayı eşlemeye çalışırsa STATUS_ACCESS_DENIED hatasını tetikler.

Uyumlulukta dikkate alınacak noktalar

Uzak görüntüleri engelleme, uygulamanın uzak cihazlardan görüntü yüklemesini engeller. Uygulamanız uzak cihazlardan dosya veya eklenti yüklerse risk azaltma ile uyumlu olmayacaktır.

Yapılandırma seçenekleri

Yalnızca Denetle - Bir uygulama üzerindeki olası uyumluluk etkisini ölçmek için bu azaltmayı denetim modunda etkinleştirebilirsiniz. Denetim olayları daha sonra olay görüntüleyicide veya Uç Nokta için Defender’da Gelişmiş Avcılık kullanılarak görüntülenebilir.

Güvenilmeyen yazı tiplerini engelle

Açıklama

Güvenilmeyen yazı tiplerini engellemek, saldırganın cihazda kod çalıştırabilmesine neden olan yazı tipi ayrıştırmada bir hata riskini azaltır. Yalnızca windows\fonts dizinine yüklenen yazı tipleri GDI tarafından işlenmek üzere yüklenecektir.

Bu risk azaltma GDI içinde uygulanarak dosyanın konumunu doğrular. Dosya sistem yazı tipleri dizininde değilse, ayrıştırma için yazı tipi yüklenmez ve çağrı başarısız olur.

Bu risk azaltma, Windows 10 1607 ve sonraki sürümlerde sağlanan yerleşik risk azaltmaya ek olarak, yazı tipi ayrıştırmayı çekirdek dışına ve kullanıcı modu uygulama kapsayıcısı içine alan Windows 11'de de sağlanır. Sonuç olarak, yazı tipi ayrıştırmaya dayalı herhangi bir açıktan faydalanma; riski önemli ölçüde azaltan korumalı alan ve yalıtılmış bir bağlamda gerçekleşir. Bu risk azaltımıyla ilgili ayrıntılar için Windows 10'u sıfır gün açıklarından faydalanma risk azaltmalarıyla sağlamlaştırma bloguna bakın.

Uyumlulukta dikkate alınacak noktalar

Fontların sistem fontları dizini dışındaki en yaygın kullanımı web fontlarıdır. Microsoft Edge gibi modern tarayıcılar GDI yerine DirectWrite kullanır ve etkilenmez. Ancak, Internet Explorer 11 (ve yeni Microsoft Edge'deki IE modu) gibi eski tarayıcılar, özellikle kullanıcı arayüzünü görüntülemek için yazı tipi karakterlerini kullanan Office 365 gibi uygulamalardan etkilenebilir.

Yapılandırma seçenekleri

Yalnızca Denetle - Bir uygulama üzerindeki olası uyumluluk etkisini ölçmek için bu azaltmayı denetim modunda etkinleştirebilirsiniz. Denetim olayları daha sonra olay görüntüleyicide veya Uç Nokta için Defender’da Gelişmiş Avcılık kullanılarak görüntülenebilir.

Kod bütünlüğü koruması

Açıklama

Kod bütünlüğü koruması, bir işleme yüklenen tüm ikili dosyaların Microsoft tarafından dijital olarak imzalanmasını sağlar. Kod bütünlüğü koruması, WHQL onaylı sürücülerin işlem içinde çalışmasını sağlayan WHQL (Windows Donanım Kalite Laboratuvarları) imzalarını içerir.

Bu risk azaltma, ikili dosyanın belleğe eşlenmesini engelleyen bellek yöneticisi içinde uygulanır. Microsoft tarafından imzalanan bir ikili dosya yüklemeye çalışırsanız, bellek yöneticisi STATUS_INVALID_IMAGE_HASH hatasını döndürür. Bellek yöneticisi düzeyinde engelleme, hem işlem tarafından yüklenen ikili dosyaları hem de işleme eklenen ikili dosyaları önler.

Uyumlulukta dikkate alınacak noktalar

Bu azaltma özellikle Microsoft tarafından imzalanmamış ikili dosyaları engeller. Bu nedenle, bu yazılım Microsoft Store tarafından dağıtılmadığı (ve dijital olarak imzaladığı) ve Microsoft Store tarafından imzalanan görüntülerin yüklenmesine izin verme seçeneği belirlenmediği sürece Microsoft dışı yazılımların çoğuyla uyumsuzdur.

Yapılandırma seçenekleri

Ayrıca Microsoft Store tarafından imzalanan görüntülerin yüklenmesine izin ver - Microsoft Store tarafından dağıtılan uygulamalar Microsoft Store tarafından dijital olarak imzalanmıştır ve bu yapılandırmanın eklenmesi, mağaza sertifikasyon sürecinden geçen ikili dosyaların uygulama tarafından yüklenmesine olanak tanır.

Yalnızca Denetle - Bir uygulama üzerindeki olası uyumluluk etkisini ölçmek için bu azaltmayı denetim modunda etkinleştirebilirsiniz. Denetim olayları daha sonra olay görüntüleyicide veya Uç Nokta için Defender’da Gelişmiş Avcılık kullanılarak görüntülenebilir.

Denetim akış koruması (CFG)

Açıklama

Denetim akış koruyucusu (CFG), dolaylı işlev çağrılarını koruyarak saldırganların bellek bozulması güvenlik açıklarını kullanma riskini azaltır. Örneğin, bir saldırgan bir işlev işaretçisi içeren belleğin üzerine yazmak için arabellek taşması güvenlik açığı kullanabilir ve bu işlev işaretçisini tercih ettiği yürütülebilir koda yönelik bir işaretçiyle değiştirebilir (programa da eklenebilir).

Bu risk azaltma, derleme zamanında başka bir denetim ekleyerek sağlanır. Her dolaylı işlev çağrısından önce, çağrılmadan önce hedefin geçerli bir çağrı hedefi olduğunu doğrulayan başka bir yönerge eklenir. Hedef geçerli bir çağrı hedefi değilse uygulama sonlandırılır. Bu nedenle, bu risk azaltmadan yalnızca CFG desteğiyle derlenen uygulamalar yararlanabilir.

Geçerli bir hedefin kontrolü Windows çekirdeği tarafından sağlanır. Yürütülebilir dosyalar yüklendiğinde, dolaylı arama hedeflerine ilişkin meta veriler, yükleme zamanında ayıklanır ve geçerli çağrı hedefleri olarak işaretlenir. Ayrıca, bellek ayrıldığında ve yürütülebilir olarak işaretlendiğinde (örneğin, oluşturulan kod için), bu bellek konumları da JIT derlemesi gibi mekanizmaları desteklemek için geçerli çağrı hedefleri olarak işaretlenir.

Uyumlulukta dikkate alınacak noktalar

Uygulamaların CFG'yi desteklemesi için derlenmesi gerektiğinden, uyumluluklarını dolaylı olarak beyan ederler. Bu nedenle çoğu uygulama, bu risk azaltımı etkinleştirilmiş olarak çalışmalıdır. Bu denetimler ikili dosyada derlenmiş olduğundan, uygulayabileceğiniz yapılandırma yalnızca Windows çekirdeği içindeki denetimleri devre dışı bırakmak içindir. Başka bir deyişle, azaltma varsayılan olarak açıktır, ancak daha sonra uygulama geliştiricisinin testlerinde bulmadığı ve nadir olması gereken bir uyumluluk sorunu olduğunu belirlerseniz Windows çekirdeğini her zaman "evet" döndürecek şekilde yapılandırabilirsiniz.

Yapılandırma seçenekleri

Katı CFG kullan - Katı modda, işleme yüklenen tüm ikili dosyaların yüklenebilmesi için, Denetim Akışı Koruyucusu için derlenmeleri (veya içlerinde yürütülebilir kod bulunmaması - kaynak dll'leri gibi) gerekir.

Not

Denetim akışı koruyucusu denetim moduna sahip değil. İkili dosyalar bu risk azaltma etkin olarak derlenir.

Veri Yürütme Engellemesi (DEP)

Açıklama

Veri yürütme engellemesi (DEP), yürütülebilir dosya olarak açıkça ayrılmamış belleğin yürütülmesini engeller. DEP, arabellek taşması gibi yollarla işleme kötü amaçlı kod ekleyip ardından bu kodu yürüten bir saldırgana karşı koruma sağlar.

Yönerge işaretçisini yürütülebilir olarak işaretlenmemiş bir bellek adresine ayarlamaya çalışırsanız, işlemci bir özel durum (genel koruma ihlali) oluşturur ve uygulamanın kilitlenmesine neden olur.

Uyumlulukta dikkate alınacak noktalar

Tüm x64, ARM ve Arm64 yürütülebilir dosyalarında DEP varsayılan olarak etkindir ve devre dışı bırakılamaz. Bir uygulama DEP olmadan yürütülmezse uyumluluk varsayılır.

Tüm x86 (32 bit) ikili dosyalarında DEP varsayılan olarak etkindir, ancak işlem başına DEP devre dışı bırakılabilir. Genellikle Windows XP SP2 öncesinde geliştirilen bazı eski uygulamalar DEP ile uyumlu olmayabilir. Bu tür uygulamalar genellikle dinamik olarak kod oluşturur (örneğin, JIT derlemesi) veya dinamik olarak kod oluşturan eski kitaplıklara (ATL'nin eski sürümleri gibi) bağlantı sağlar.

Yapılandırma seçenekleri

ATL Thunk öykünmesini etkinleştir - Bu yapılandırma seçeneği, ATL Thunk öykünmesini devre dışı bırakır. ActiveX Şablon Kitaplığı ATL, mümkün olduğunca küçük ve hızlı olacak şekilde tasarlanmıştır. İkili boyutu azaltmak için dönüştürme adı verilen bir teknik kullanır. Dönüştürme, genellikle 32-bit ve 16-bit uygulamalar arasında etkileşim için düşünülür, ancak burada ATL için 16-bitlik bileşen yoktur. Bunun yerine, ikili boyutu iyileştirmek için ATL, makine kodunu sözcük hizalı olmayan (daha küçük bir ikili dosya oluşturma) bellekte depolar ve ardından bu kodu doğrudan çağırır. Visual Studio 7.1 veya önceki sürümlerle derlenen ATL bileşenleri (Visual Studio 2003) bu belleği yürütülebilir olarak ayırmaz- thunk öykünmesi bu uyumluluk sorununu çözer. İkili uzantı modeline (Internet Explorer 11 gibi) sahip uygulamalarda ATL Thunk öykünmesinin etkinleştirilmesi gerekir.

Uzantı noktalarını devre dışı bırak

Açıklama

Bu risk azaltma, bir uygulama için kalıcılık oluşturmak veya kötü amaçlı içeriğin ayrıcalıklarını yükseltmek için kullanılabilecek çeşitli uzantı noktalarını devre dışı bırakır.

Bu, şunları kapsar:

  • AppInit DLL'leri - Bir işlem her başlatıldığında, sistem belirtilen DLL'yi giriş noktası işlevini çağırmadan önce yeni başlatılan işlemin bağlamı içine yükler. AppInit DLL'leri ile ilgili ayrıntıları burada bulabilirsiniz. Bu azaltma uygulandığında AppInit DLL'leri yüklenmez. Windows 7'den itibaren, AppInit DLL'lerinin burada açıklandığı gibi dijital olarak imzalanması gerekir. Ayrıca, Windows 8 başlayarak, burada açıklandığı gibi SecureBoot etkinleştirilirse AppInit DLL'leri yüklenmez.
  • Eski IME'ler - Bir Giriş Yöntemi Düzenleyicisi (IME), kullanıcının klavyede temsil edilebilecek karakterden daha fazla karaktere sahip bir dilde metin yazmasına olanak tanır. Üçüncü taraflar IME'ler oluşturabilir. Kötü amaçlı bir IME, bu girdi yakalama işleminden kimlik bilgilerini veya diğer hassas bilgileri alabilir. Eski IME'ler olarak adlandırılan bazı IME'ler yalnızca Windows Masaüstü uygulamalarında çalışır ve UWP uygulamaları üzerinde çalışmaz. Bu azaltma, bu eski IME'nin belirtilen Windows Masaüstü uygulamasına yüklenmesini de engeller.
  • Windows Olay Kancaları - Bir uygulama, gerçekleşen bir olaya olan ilgiyi kaydetmek için SetWinEventHook API'sini çağırabilir. Bir DLL belirtildi ve işleme eklenebilir. Bu azaltma, kancayı, eklenen bir DLL aracılığıyla işlem içi çalıştırmak yerine kayıt işlemine nakledilmeye zorlar.

Uyumlulukta dikkate alınacak noktalar

Bu uzantı noktalarının çoğu nispeten seyrek kullanıldığından uyumluluk etkisi genellikle küçük olur, özellikle de tek bir uygulama düzeyinde. Dikkat edilmesi gereken tek nokta, kullanıcıların korumalı uygulamayla çalışmayan Microsoft dışı Eski ANLıK İletiler kullanıyor olmasıdır.

Yapılandırma seçenekleri

Bu risk azaltımı için yapılandırma seçeneği yok.

Not

Uzantı noktalarını devre dışı bırakmanın denetim modu yok.

Win32k sistem çağrılarını devre dışı bırak

Açıklama

Win32k.sys, bir saldırgan için geniş bir saldırı yüzeyi sağlar. Çekirdek modu bileşeni olarak, korumalı uygulamalar için genellikle bir kaçış vektöru olarak hedeflenir. Bu azaltma, bir iş parçacığının kendisini bir GUI iş parçacığına dönüştürmesini engelleyerek win32k.sys'e yapılan çağrıları önler ve bu işleme daha sonra Win32k işlevlerini çağırmak için erişim verilir. Bir iş parçacığı, oluşturulduğunda GUI değildir, ancak ilk çağrıda win32k.sys'ye veya bir API çağrısı yoluyla IsGuiThread'e dönüştürülür.

Uyumlulukta dikkate alınacak noktalar

Bu risk azaltma, kullanıcı arabirimi olmayan ayrılmış işlemler için tasarlanmış. Örneğin, birçok modern tarayıcı işlem yalıtımı kullanır ve kullanıcı arabirimi olmayan işlemleri birleştirir. Tek bir işlem kullanarak GUI görüntüleyen tüm uygulamalar bu risk azaltmadan etkilenir.

Yapılandırma seçenekleri

Yalnızca Denetle - Bir uygulama üzerindeki olası uyumluluk etkisini ölçmek için bu azaltmayı denetim modunda etkinleştirebilirsiniz. Denetim olayları daha sonra olay görüntüleyicide veya Uç Nokta için Defender’da Gelişmiş Avcılık kullanılarak görüntülenebilir.

Alt işlemlere izin verme

Açıklama

Bu risk azaltma, bir uygulamanın yeni alt uygulamalar oluşturmasını önler. Saldırganlar tarafından yaygın olarak kullanılan bir teknik, cihazda genellikle başka bir uygulamanın başlatılmasını gerektiren kötü amaçlı girdilerle ("karadan yaşam" saldırısı) güvenilir bir işlem başlatmaktır. Bir uygulamanın bir alt işlemi başlatması için geçerli bir neden yoksa, bu risk azaltma bu olası saldırı vektörünü azaltır. Azaltma, süreç belirtecinde, STATUS_CHILD_PROCESS_BLOCKED hata mesajıyla alt süreç için bir belirteç oluşturmayı engelleyen bir özellik ayarlanarak uygulanır.

Uyumlulukta dikkate alınacak noktalar

Uygulamanız bir tarayıcıyı veya dış tarayıcıyı başlatan veya bilgisayarda diğer yardımcı programları başlatan köprüleri destekleme gibi herhangi bir nedenle alt uygulamaları başlatırsa, bu azaltma uygulandığında bu işlev bozulur.

Yapılandırma seçenekleri

Yalnızca Denetle - Bir uygulama üzerindeki olası uyumluluk etkisini ölçmek için bu azaltmayı denetim modunda etkinleştirebilirsiniz. Denetim olayları daha sonra olay görüntüleyicide veya Uç Nokta için Defender’da Gelişmiş Avcılık kullanılarak görüntülenebilir.

Dışarı aktarma adresi filtrelemesi

Açıklama

Dışarı aktarma adresi filtrelemesi (EAF), saldırılarına yönelik yararlı API'ler içeren modülleri bulmak için yüklenen tüm modüllerin dışarı aktarma adresi tablosuna bakarak kötü amaçlı kod riskini azaltır. Bu, kabuk kodu tarafından kullanılan yaygın bir taktiktir. Bu risk azaltma, böyle bir saldırı riskini azaltmak için yaygın olarak saldırıya uğrayan üç modülü korur:

  • ntdll.dll
  • kernelbase.dll
  • kernel32.dll

Risk azaltma, dışarı aktarma adres tablosuna işaret eden dışa aktarma dizinindeki bellek sayfasını korur. Bu bellek sayfasında PAGE_GUARD koruması uygulanmış . Birisi bu belleğe erişmeye çalıştığında bir STATUS_GUARD_PAGE_VIOLATION oluşturur. Azaltma bu özel durumu işler ve erişim yönergesi doğrulamayı geçmezse işlem sonlandırılır.

Uyumlulukta dikkate alınacak noktalar

Bu risk azaltma, öncelikle hata ayıklayıcılar, korumalı uygulamalar, DRM kullanan uygulamalar veya hata ayıklama önleme teknolojisi uygulayan uygulamalar gibi uygulamalar için bir sorundur.

Yapılandırma seçenekleri

Açıklardan faydalanma tarafından yaygın olarak kötüye kullanılan modüller için erişimi doğrulayın - EAF+ olarak da bilinen bu seçenek, yaygın olarak saldırıya uğrayan diğer modüller için koruma ilave eder:

  • mshtml.dll
  • flash*.ocx
  • jscript*.ocx
  • vbscript.dll
  • vgx.dll
  • mozjs.dll
  • xul.dll
  • acrord32.dll
  • acrofx32.dll
  • acroform.api

Ayrıca, EAF+ etkinleştirildiğinde, bu azaltma işlemi sayfaya "MZ" üst bilgisini içeren PAGE_GUARD korumasını ekler. Bu, PE dosyasındaki DOS üst bilgisinin ilk 2 baytını içerir. Bu, kabuk kodunun bellekteki ilgi çekici olabilecek modülleri tanımlamak için arayabileceği bilinen bellek içeriğinin bir yönüdür.

Yalnızca Denetle - Bir uygulama üzerindeki olası uyumluluk etkisini ölçmek için bu azaltmayı denetim modunda etkinleştirebilirsiniz. Denetim olayları daha sonra olay görüntüleyicide veya Uç Nokta için Defender’da Gelişmiş Avcılık kullanılarak görüntülenebilir.

Görüntüleri rastgele seçmeye zorla (Zorunlu ASLR)

Açıklama

Rastgele Adres Alanı Düzeni (ASLR), bir saldırganın, işlem belleğinde zaten mevcut olan ve zaten yürütülebilir olarak işaretlenmiş kodu yürütmek için sistemin bellek düzeni hakkındaki bilgisini kullanarak riski azaltır. Bu, saldırganın bağlamı belirlediği ve ardından geri dönüş adresini, saldırganın amacına uygun bağlamla mevcut kodu yürütmek için değiştirdiği, libc'ye dönüş saldırıları gibi teknikleri kullanan bir saldırganın riskini azaltabilir.

Zorunlu ASLR, işlemdeki tüm DLL'lerin yeniden temellendirilmesini zorlar. Bir geliştirici /DYNAMICBASE bağlayıcı seçeneğini kullanarak ASLR'yi etkinleştirebilir ve bu risk azaltma aynı etkiye sahip olur.

Bellek yöneticisi görüntüde işlemle eşlendiğinde Zorunlu ASLR, ASLR'yi kabul etmeyen DLL'leri ve EXE'leri zorla yeniden temel alır. Ancak, bu yeniden temellendirmenin entropisi olmadığını ve bu nedenle bellekte tahmin edilebilir bir yere yerleştirilebileceğini unutmayın. İkili dosyaların yeniden tabanlı ve rastgele konumu için bu azaltma, Bellek ayırmalarını rastgele seç (Aşağıdan yukarı ASLR) ile eşleştirilmelidir.

Uyumlulukta dikkate alınacak noktalar

ASLR'nin bu uyumluluk etkisi genellikle bir ikili dosyanın temel adresi hakkında varsayımlarda bulunan veya temel yeniden konumlandırma bilgilerini çıkarmış derleyiciler kullanılarak oluşturulmuş eski uygulamalarla kısıtlanır. Bu, yürütme akışı bellekte gerçek konum yerine beklenen konuma atlamaya çalıştığı için öngörülemeyen hatalara neden olabilir.

Yapılandırma seçenekleri

Kaldırılan görüntülere izin verme - Bu seçenek, yeniden konumlandırma bilgilerinin kaldırılmış olduğu görüntülerin yüklenmesini engeller. Windows PE dosya biçimi mutlak adresler içerir ve derleyici ayrıca yükleyicinin tüm göreli bellek başvurularını ve bunların uzaklığını bulmak için kullanabileceği bir [temel yeniden konumlandırma tablosu oluşturur; böylece ikili dosya tercih edilen temel adrese yüklenmezse güncelleştirilebilir. Bazı eski uygulamalar bu bilgileri üretim derlemelerinde yok eder ve bu nedenle bu ikili dosyalar yeniden temellenemez. Bu risk azaltma, bu tür ikili dosyaların yüklenmesini engeller (tercih edilen temel adreslerinde yüklemelerine izin vermek yerine).

Not

Görüntüler için rastgeleleştirmeyi zorla (Zorunlu ASLR) denetim moduna sahip değil.

Donanım tarafından zorlanan yığın koruması

Açıklama

Donanım tarafından zorlanan yığın koruması, bir programın hedeflenen yürütme akışının kaydını koruduğundan ROP açıklarına karşı sağlam koruma sağlar. Sorunsuz ekosistem benimsemesi ve uygulama uyumluluğu sağlamak için Windows, geliştiricilerin bu korumayı kendi hızınızda alabilmesi için bu korumayı bir katılım modeli olarak sunar.

Uyumlulukta dikkate alınacak noktalar

Donanım tarafından zorlanan yığın koruması yalnızca donanım gölge yığınları, Intel'in Denetim Akışı Zorlama Teknolojisi (CET) veya AMD gölge yığınları desteğine sahip yonga kümelerinde çalışır.

Uygulamaları .NET Framework temel alarak çalıştırırsanız, donanım tarafından zorlanan yığın koruması .NET Framework 7 (kabul etme) veya daha yeni sürümlerle çalışır. Daha eski bir sürüm kullanıyorsanız kilitlenmelerle veya yüksek CPU kullanımıyla karşılaşabilirsiniz. Bu sorunlar denetim modunda veya yalnızca uyumlu modülleri hedeflerken de oluşabilir.

Yapılandırma seçenekleri

Yalnızca denetim - Bir uygulama üzerindeki olası uyumluluk etkisini ölçmek için bu azaltmayı denetim modunda etkinleştirebilirsiniz. Denetim olayları daha sonra olay görüntüleyicide veya Uç Nokta için Defender’da Gelişmiş Avcılık kullanılarak görüntülenebilir.

Uyumlu modüller yerine tüm modülleri zorunlu kılma - Uyumlu modüller yerine tüm modüller için zorlamak için bu azaltmayı etkinleştirebilirsiniz.

İçeri aktarma adresi filtrelemesi (IAF)

Açıklama

İçe aktarma adresi filtreleme (IAF) azaltması, içe aktarma adres tablosunu (IAT) bu işlev çağrıldığında saldırganın seçtiği rastgele koda yeniden yönlendirmek üzere değiştirerek bir saldırganın bir uygulamanın kontrol akışını değiştirme riskini azaltmaya yardımcı olur. Saldırgan, denetimi ele geçirmek veya hassas API'lere yapılan çağrıları kesmek, denetlemek ve potansiyel olarak engellemek için bu yaklaşımı kullanabilir.

Tüm korumalı API'lerin bellek sayfalarında bunlara PAGE_GUARD koruması uygulanır. Birisi bu belleğe erişmeye çalıştığında bir STATUS_GUARD_PAGE_VIOLATION oluşturur. Azaltma bu özel durumu işler ve erişim yönergesi doğrulamayı geçmezse işlem sonlandırılır.

Bu risk azaltma, aşağıdaki Windows API'lerini korur:

  • GetProcAddress
  • GetProcAddressForCaller
  • LoadLibraryA
  • LoadLibraryExA
  • LoadLibraryW
  • LoadLibraryExW
  • LdrGetProcedureAddress
  • LdrGetProcedureAddressEx
  • LdrGetProcedureAddressForCaller
  • LdrLoadDll
  • VirtualProtect
  • VirtualProtectEx
  • VirtualAlloc
  • VirtualAllocEx
  • NtAllocateVirtualMemory
  • NtProtectVirtualMemory
  • CreateProcessA
  • CreateProcessW
  • WinExec
  • CreateProcessAsUserA
  • CreateProcessAsUserW
  • GetModuleHandleA
  • GetModuleHandleW
  • RtlDecodePointer
  • DecodePointer

Uyumlulukta dikkate alınacak noktalar

API kesme işlemi gerçekleştiren geçerli uygulamalar bu azaltma tarafından algılanabilir ve bazı uygulamaların kilitlenmesine neden olabilir. Güvenlik yazılımları ve uygulama uyumluluğu dolguları birer örnektir.

Yapılandırma seçenekleri

Yalnızca Denetle - Bir uygulama üzerindeki olası uyumluluk etkisini ölçmek için bu azaltmayı denetim modunda etkinleştirebilirsiniz. Denetim olayları daha sonra olay görüntüleyicide veya Uç Nokta için Defender’da Gelişmiş Avcılık kullanılarak görüntülenebilir.

Bellek ayırmalarını rastgele seç (Aşağıdan yukarı ASLR)

Açıklama

Bellek ayırmalarını rastgele seç (Aşağıdan yukarı ASLR), konumlarının rastgele ve bu nedenle daha az tahmin edilebilir hale getirmesi için yeniden konumlandırmalara entropi ekler. Bu risk azaltma, zorunlu ASLR'nin etkili olmasını gerektirir.

32 bitlik adres alanının boyutu, eklenebilecek entropiye pratik kısıtlamalar getirir ve bu nedenle 64 bit uygulamalar, bir saldırganın bellekteki bir konumu tahmin etmesini zorlaştırır.

Uyumlulukta dikkate alınacak noktalar

Zorunlu ASLR (yeniden temellendirme) ile uyumlu olan çoğu uygulama, Aşağıdan yukarı ASLR'nin diğer entropisiyle de uyumludur. Bazı uygulamalar yerel işaretçileri 32 bit değişkenlere kaydediyorsa (4 GB'ın altında bir temel adres bekliyorsa) işaretçi kesme sorunları yaşayabilir ve bu nedenle yüksek entropi seçeneğiyle (devre dışı bırakılabilir) uyumsuz olacaktır.

Yapılandırma seçenekleri

Yüksek entropi kullanma - bu seçenek, 64 bit uygulamalar için aşağıdan yukarı ayırmaya 24 bit entropi (1 TB varyans) ekleyen yüksek entropi ASLR kullanımını devre dışı bırakır.

Not

Bellek ayırmalarını rastgele seç (Aşağıdan yukarı ASLR) denetim moduna sahip değil.

Yürütme simülasyonu (SimExec)

Açıklama

Yürütme simülasyonu (SimExec), yalnızca 32 bit uygulamalar için bir azaltmadır. Bu, hassas API'lere yapılan çağrıların meşru çağıran işlevlerine döndüğünü doğrulamaya yardımcı olur. Bunu, hassas API'lere yapılan çağrıları durdurarak ve ardından çağırana geri dönmesi gereken RET talimatını arayan kodlanmış montaj dili talimatlarında dolaşarak bu API'lerin yürütülmesini simüle ederek yapar. Ardından bu işlevi inceler ve işlev ile CALL komutunun eşleşip eşleşmediğini ve RET'nin kesilip kesilmediğini belirlemek için önceki CALL komutunu bulmak üzere bellekte geriye doğru ilerler.

Bu azaltma tarafından kesilen API'ler:

  • LoadLibraryA
  • LoadLibraryW
  • LoadLibraryExA
  • LoadLibraryExW
  • LdrLoadDll
  • VirtualAlloc
  • VirtualAllocEx
  • NtAllocateVirtualMemory
  • VirtualProtect
  • VirtualProtectEx
  • NtProtectVirtualMemory
  • HeapCreate
  • RtlCreateHeap
  • CreateProcessA
  • CreateProcessW
  • CreateProcessInternalA
  • CreateProcessInternalW
  • NtCreateUserProcess
  • NtCreateProcess
  • NtCreateProcessEx
  • CreateRemoteThread
  • CreateRemoteThreadEx
  • NtCreateThreadEx
  • WriteProcessMemory
  • NtWriteVirtualMemory
  • WinExec
  • CreateFileMappingA
  • CreateFileMappingW
  • CreateFileMappingNumaW
  • NtCreateSection
  • MapViewOfFile
  • MapViewOfFileEx
  • MapViewOfFileFromApp
  • LdrGetProcedureAddressForCaller

Bir ROP aracı algılanırsa işlem sonlandırılır.

Uyumlulukta dikkate alınacak noktalar

API müdahalesi gerçekleştiren uygulamalar, özellikle güvenlik yazılımları, bu risk azaltma ile uyumluluk sorunlarına neden olabilir.

Bu risk azaltma, Rastgele Kod Koruması risk azaltması ile uyumlu değildir.

Yapılandırma seçenekleri

Yalnızca Denetle - Bir uygulama üzerindeki olası uyumluluk etkisini ölçmek için bu azaltmayı denetim modunda etkinleştirebilirsiniz. Denetim olayları daha sonra olay görüntüleyicide veya Uç Nokta için Defender’da Gelişmiş Avcılık kullanılarak görüntülenebilir.

API çağrısını doğrula (CallerCheck)

Açıklama

API çağrısını doğrulama (CallerCheck), hassas API'lerin geçerli bir arayandan çağrıldığını doğrulayan geri dönüş odaklı programlama (ROP) tekniklerine yönelik bir azaltmadır. Bu azaltma, iletilen dönüş adresini inceler ve ardından çağrı hedefinin işleve iletilen parametreyle eşleşip eşleşmediğini belirlemek için dönüş adresinin üzerinde bir çağrı bulmak üzere buluşsal olarak geriye doğru ayrıştırır.

Bu azaltma tarafından kesilen API'ler:

  • LoadLibraryA
  • LoadLibraryW
  • LoadLibraryExA
  • LoadLibraryExW
  • LdrLoadDll
  • VirtualAlloc
  • VirtualAllocEx
  • NtAllocateVirtualMemory
  • VirtualProtect
  • VirtualProtectEx
  • NtProtectVirtualMemory
  • HeapCreate
  • RtlCreateHeap
  • CreateProcessA
  • CreateProcessW
  • CreateProcessInternalA
  • CreateProcessInternalW
  • NtCreateUserProcess
  • NtCreateProcess
  • NtCreateProcessEx
  • CreateRemoteThread
  • CreateRemoteThreadEx
  • NtCreateThreadEx
  • WriteProcessMemory
  • NtWriteVirtualMemory
  • WinExec
  • CreateFileMappingA
  • CreateFileMappingW
  • CreateFileMappingNumaW
  • NtCreateSection
  • MapViewOfFile
  • MapViewOfFileEx
  • MapViewOfFileFromApp
  • LdrGetProcedureAddressForCaller

Bir ROP aracı algılanırsa işlem sonlandırılır.

Uyumlulukta dikkate alınacak noktalar

API müdahalesi gerçekleştiren uygulamalar, özellikle güvenlik yazılımları, bu risk azaltma ile uyumluluk sorunlarına neden olabilir.

Bu risk azaltma, Rastgele Kod Koruması risk azaltması ile uyumlu değildir.

Yapılandırma seçenekleri

Yalnızca Denetle - Bir uygulama üzerindeki olası uyumluluk etkisini ölçmek için bu azaltmayı denetim modunda etkinleştirebilirsiniz. Denetim olayları daha sonra olay görüntüleyicide veya Uç Nokta için Defender’da Gelişmiş Avcılık kullanılarak görüntülenebilir.

Özel durum zincirlerini doğrula (SEHOP)

Açıklama

Özel durum zincirlerinin (SEHOP) Yapılandırılmış Özel Durum İşleyicisi 'nin (SEH) üzerine yazma yararlanma tekniğine karşı bir risk azaltma olduğunu doğrulayın. Yapılandırılmış istisna işleme, bir uygulamanın belirli bir özel durumu işlemeyi isteyebileceği işlemdir. Özel durum işleyicileri birbirine zincirlenir, böylece bir özel durum işleyicisi belirli bir özel durumu işlememeyi seçerse, biri onu işlemeye karar verene kadar zincirdeki bir sonraki özel durum işleyicisine iletilebilir. İşleyici listesi dinamik olduğundan, yığında depolanır. Saldırgan, daha sonra özel durum işleyicisinin üzerine saldırganın seçtiği kodun bir işaretçisiyle yazmak için bir yığın taşması güvenlik açığı kullanabilir.

Bu azaltma, her SEH girişinin hem özel durum işleyicisine yönelik bir işaretçi hem de özel durum zincirindeki sonraki işleyiciye yönelik bir işaretçi içerdiği SEH'nin tasarımına dayanır. Bu risk azaltma, bir özel durum çağrıldığında SEH zincirini doğrulayan özel durum dağıtıcısı tarafından çağrılır. Aşağıdakileri doğrular:

  • Tüm özel durum zinciri kayıtları yığın sınırları içindedir
  • Tüm özel durum kayıtları hizalanır
  • Yığına işaret eden bir özel durum işleyici işaretçisi yok
  • Geriye dönük işaretçi yok
  • Özel durum zinciri bilinen bir son özel durum işleyicisinde sona eriyor

Bu doğrulamalar başarısız olursa, özel durum işleme durduruldu ve özel durum işlenmez.

Uyumlulukta dikkate alınacak noktalar

SEHOP ile ilgili uyumluluk sorunları nispeten nadirdir. Bir uygulamanın özel durum zincirini bozmaya bağımlı olması yaygın değildir. Ancak, bazı uygulamalar zamanlamadaki ince değişikliklerden etkilenir ve bu da uygulamada gizli bir çok iş parçacığı hatası ortaya koyan bir yarış durumu olarak ortaya çıkabilir.

Yapılandırma seçenekleri

Not

Özel durum zincirlerini doğrula (SEHOP) denetim moduna sahip değil.

Tutamaç kullanımını doğrula

Açıklama

Tanıtıcı kullanımını doğrula korunan bir nesneye erişmek için mevcut bir tanıtıcıyı kullanan bir saldırgana karşı korunmaya yardımcı olan bir risk azaltımıdır. Bir tanıtıcı korumalı bir nesneye referanstır. Uygulama kodu geçersiz bir tanıtıcıya başvuruyorsa, bir saldırganın daha önce kaydettiği bir tanıtıcıyı kullanmaya çalıştığı (ancak hangi uygulama başvuru sayımının farkında olmayacağı) gösterilebilir. Uygulama yalnızca null döndürmek yerine geçersiz bir nesne kullanmayı denerse, bir özel durum (STATUS_INVALID_HANDLE) oluşturur.

Bu risk azaltma, Windows Mağazası uygulamalarına otomatik olarak uygulanır.

Uyumlulukta dikkate alınacak noktalar

İşleme başvurularını doğru şekilde izlemeyen ve bu işlemleri özel durum işleyicilerine sarmalamayan uygulamalar bu risk azaltmadan etkilenebilir.

Yapılandırma seçenekleri

Not

Tanıtıcı kullanımını doğrula denetim moduna sahip değil.

Yığın bütünlüğünü doğrula

Açıklama

Yığın bütünlüğünü doğrulama risk azaltımı, bir yığın bozulması algılanırsa uygulamanın sonlandırılmasına neden olarak Windows'taki yığın azaltmalarının koruma düzeyini artırır. Risk azaltmalar şunları içerir:

  • Bir HEAP tanıtıcısının serbest bırakılmasını önleme
  • Yığın ayırmaları için genişletilmiş blok başlıklarında başka bir doğrulama gerçekleştirme
  • Yığın ayırmalarının kullanımda olarak işaretlenmediğini doğrulama
  • Büyük ayırmalara, yığın bölümlerine ve minimum boyutun üzerindeki alt bölümlere koruma sayfaları ekleme

Uyumlulukta dikkate alınacak noktalar

Bu risk azaltma, 64 bit uygulamalar ve Windows Vista veya üzerini hedef alan 32 bit uygulamalar için varsayılan olarak zaten uygulanır. Uyumluluk sorunları nadir olsa da, Windows XP veya önceki sürümlerden eski uygulamalar en çok risk altındadır.

Yapılandırma seçenekleri

Not

Yığın bütünlüğünü doğrulama denetim moduna sahip değil.

Görüntü bağımlılığı bütünlüğünü doğrula

Açıklama

Görüntü bağımlılığını doğrulama risk azaltımı, Windows ikili dosyaları tarafından statik olarak bağlanan dll'lerin yerine kod koymaya çalışan saldırılara karşı korunmaya yardımcı olur. DLL yerleştirme tekniği, kötü amaçlı kodun yükseltilmiş bir bağlamda çalışmasını sağlamak için kullanılabilen kötü amaçlı kodu eklemek için yükleyicinin arama mekanizmasını kötüye kullanır. Yükleyici Windows imzalı bir ikili dosya yüklerken ve ardından ikilinin bağımlı olduğu dll'leri yüklerken, bu ikili dosyalar windows ikili dosyası olarak dijital olarak imzalandığından emin olmak için doğrulanır. İmza denetimi başarısız olursa dll yüklenmez ve bir özel durum oluşturarak STATUS_INVALID_IMAGE_HASH durumunu döndürür.

Uyumlulukta dikkate alınacak noktalar

Uyumluluk sorunları sık karşılaşılan bir durum değildir. Windows ikili dosyalarını yerel özel sürümlerle değiştirmeye bağımlı uygulamalar etkilenir ve çok iş parçacıklı uygulamalarda küçük bir zamanlama hataları ortaya çıkarma riski de vardır.

Yapılandırma seçenekleri

Yalnızca Denetle - Bir uygulama üzerindeki olası uyumluluk etkisini ölçmek için bu azaltmayı denetim modunda etkinleştirebilirsiniz. Denetim olayları daha sonra olay görüntüleyicide veya Uç Nokta için Defender’da Gelişmiş Avcılık kullanılarak görüntülenebilir.

Yığın bütünlüğünü doğrula (StackPivot)

Açıklama

Yığın bütünlüğünü doğrulama (StackPivot) risk azaltımı, bir saldırganın yığın belleğinde sahte bir yığın oluşturduğu ve ardından uygulamayı, yürütme akışını kontrol eden sahte yığına geri döndürmesi için kandırdığı bir ROP saldırısı olan Stack Pivot saldırısına karşı korunmaya yardımcı olur.

Bu risk azaltma, birçok Windows API'sini engeller ve yığın işaretçisinin değerini inceler. Yığın işaretçisinin adresi yığının alt ve üst kısmı arasında yer almıyorsa bir olay kaydedilir ve denetim modunda değilse işlem sonlandırılır.

Bu azaltma tarafından kesilen API'ler:

  • LoadLibraryA
  • LoadLibraryW
  • LoadLibraryExA
  • LoadLibraryExW
  • LdrLoadDll
  • VirtualAlloc
  • VirtualAllocEx
  • NtAllocateVirtualMemory
  • VirtualProtect
  • VirtualProtectEx
  • NtProtectVirtualMemory
  • HeapCreate
  • RtlCreateHeap
  • CreateProcessA
  • CreateProcessW
  • CreateProcessInternalA
  • CreateProcessInternalW
  • NtCreateUserProcess
  • NtCreateProcess
  • NtCreateProcessEx
  • CreateRemoteThread
  • CreateRemoteThreadEx
  • NtCreateThreadEx
  • WriteProcessMemory
  • NtWriteVirtualMemory
  • WinExec
  • CreateFileMappingA
  • CreateFileMappingW
  • CreateFileMappingNumaW
  • NtCreateSection
  • MapViewOfFile
  • MapViewOfFileEx
  • MapViewOfFileFromApp
  • LdrGetProcedureAddressForCaller

Uyumlulukta dikkate alınacak noktalar

Sahte yığınlar kullanan uygulamalar etkilenir ve çok iş parçacıklı uygulamalarda küçük bir zamanlama hataları ortaya çıkarma riski de vardır. API müdahalesi gerçekleştiren uygulamalar, özellikle güvenlik yazılımı, bu azaltma ile uyumluluk sorunlarına neden olabilir.

Bu risk azaltma, Rastgele Kod Koruması risk azaltması ile uyumlu değildir.

Yapılandırma seçenekleri

Yalnızca Denetle - Bir uygulama üzerindeki olası uyumluluk etkisini ölçmek için bu azaltmayı denetim modunda etkinleştirebilirsiniz. Denetim olayları daha sonra olay görüntüleyicide veya Uç Nokta için Defender’da Gelişmiş Avcılık kullanılarak görüntülenebilir.

İpucu

Daha fazla bilgi edinmek mi istiyorsunuz? Teknoloji Topluluğumuzdaki Microsoft Güvenlik topluluğuyla Engage: Uç Nokta için Microsoft Defender Teknoloji Topluluğu.