Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Ochrana před zneužitím poskytuje pokročilou ochranu aplikací, které můžou podnikoví správci a IT specialisté použít poté, co vývojář zkompiluje a distribuuje software.
Tento článek vám pomůže pochopit, jak funguje ochrana před zneužitím, a to jak na úrovni zásad, tak na úrovni jednotlivých omezení rizik, aby vám pomohla úspěšně sestavovat a uplatňovat zásady ochrany před zneužitím.
Jak se uplatňují opatření ke zmírnění rizik
Omezení rizik ochrany před zneužitím se aplikují na každou aplikaci.
Každý program má vlastní položku registru, která určuje, která opatření ke zmírnění rizik se použijí. Tato nastavení jsou uložená v položce registru MitigationOptions (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\*ImageFileName*\MitigationOptions). Tato nastavení omezení rizik se projeví při restartování programu. Zůstanou aktivní, dokud je nezměníte a nerestartujete program.
Důležité
Možnosti spuštění souboru obrázku umožňují zadat pouze název souboru nebo cestu. Nemůžete zadat číslo verze, architekturu ani žádný jiný odlišovatel. Zaměřte mitigace na aplikace s jedinečným názvem nebo cestou. Použijte je jenom na zařízeních, u kterých jste otestovali tuto verzi a architekturu aplikace.
Zmírnění rizik můžete nakonfigurovat prostřednictvím souboru XML pomocí PowerShellu, zásad skupiny nebo MDM. Při použití souboru XML systém nastaví položky registru za vás.
Resetování ochrany před zneužitím
Důležité
Pokud zásady skupiny nebo zásady MDM, které nasazují soubor XML, se už nevynucují, nastavení nasazená tímto konfiguračním souborem XML se automaticky neodeberou.
Pokud chcete odebrat nastavení ochrany před zneužitím, exportujte konfiguraci XML z čistého Windows 10 nebo Windows 11 zařízení a nasaďte tento nový soubor XML. Alternativně Microsoft poskytuje soubor XML jako součást standardních hodnot Zabezpečení systému Windows pro resetování nastavení ochrany zneužití.
Pokud chcete resetovat nastavení ochrany zneužití pomocí PowerShellu, spusťte následující příkaz, který použije zásadu resetování ze souboru XML a obnoví výchozí nastavení omezení rizik:
Set-ProcessMitigation -PolicyFilePath EP-reset.xml
Následující soubor XML je EP-reset.xml dodávaný s standardními konfiguracemi zabezpečení systému Windows. Tento soubor definuje pro jednotlivé aplikace přepisy nastavení zmírňujících opatření, které obnovují nastavení ochrany před zneužitím na výchozí hodnoty pro běžné aplikace, jako jsou systém Microsoft Office, webové prohlížeče a přehrávače médií:
<?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>
Referenční informace ke zmírnění rizik
Následující omezení ochrany před zneužitím zahrnují popis, aspekty kompatibility a možnosti konfigurace.
Ochrana proti spuštění libovolného kódu
Následující části popisují, jak libovolná ochrana kódu funguje, jaký má dopad na kompatibilitu a jaké možnosti konfigurace má.
Popis
Ochrana proti spuštění libovolného kódu pomáhá chránit před útočníkem, který načítá kód podle svého výběru do paměti prostřednictvím bezpečnostní chyby v paměti a je schopen tento kód spustit.
Ochrana libovolného kódu chrání aplikaci před spuštěním dynamicky generovaného kódu (kód, který není načten, například ze samotného exe nebo knihovny DLL). Ochrana proti spuštění libovolného kódu funguje tak, že zabraňuje označení paměti jako spustitelné. Když se aplikace pokusí přidělit paměť, zkontrolujeme příznaky ochrany. (Paměť je možné přidělit pomocí příznaků ochrany pro čtení, zápis nebo spouštění.) Pokud se přidělení pokusí zahrnout příznak ochrany spuštění, přidělení paměti selže a vrátí kód chyby (STATUS_DYNAMIC_CODE_BLOCKED). Podobně pokud se aplikace pokusí změnit příznaky ochrany u již přidělené paměti, která obsahuje příznak ochrany spouštění, změna oprávnění selže a vrátí kód chyby (STATUS_DYNAMIC_CODE_BLOCKED).
Tím, že zabrání nastavení příznaku execute, může funkce Zabránění spouštění dat ve Windows 10 a Windows 11 chránit před tím, aby byl ukazatel instrukcí nastaven na tuto paměť a aby se tento kód spustil.
Důležité informace o kompatibilitě
Ochrana proti spuštění libovolného kódu zabraňuje přidělení jakékoli paměti jako spustitelného souboru, což představuje problém s kompatibilitou s přístupy, jako jsou kompilátory JIT (Just-in-Time). Většina moderních prohlížečů například kvůli optimalizaci výkonu kompiluje JavaScript do nativního kódu. Aby bylo možné toto zmírnění podpořit, je potřeba změnit architekturu tak, aby se kompilace JIT přesunula mimo chráněný proces. Jiné aplikace, jejichž návrh dynamicky generuje kód ze skriptů nebo jiných zprostředkujících jazyků, jsou podobně nekompatibilní s tímto zmírněním rizik.
Možnosti konfigurace
Povolit odhlášení vlákna – Můžete nakonfigurovat zmírnění rizik tak, aby se jednotlivá vlákna odhlásily z této ochrany. Vývojář musí napsat aplikaci s vědomím tohoto zmírnění a volat rozhraní API SetThreadInformation s parametrem ThreadInformation nastaveným na ThreadDynamicCodePolicy , aby bylo možné v tomto vlákně spouštět dynamický kód.
Pouze audit – Toto zmírnění rizik můžete povolit v režimu auditování, abyste mohli změřit potenciální vliv na kompatibilitu aplikace. Události auditu je pak možné zobrazit buď v prohlížeči událostí, nebo pomocí rozšířeného proaktivního vyhledávání v Defender for Endpoint.
Blokovat obrázky s nízkou integritou
Následující části popisují, jak funguje blokování obrazů s nízkou úrovní integrity, jaký má dopad na kompatibilitu a jaké jsou jeho možnosti konfigurace.
Popis
Blokování imagí s nízkou integritou zabraňuje aplikaci v načítání nedůvěryhodných souborů, obvykle proto, že byly staženy z internetu z prohlížeče v izolovaném prostoru (sandbox).
Toto opatření blokuje načítání obrázků, pokud má obrázek položku řízení přístupu (ACE), která uděluje přístup procesům s nízkou úrovní integrity (Low IL) a která neobsahuje položku ACE se štítkem důvěryhodnosti. Implementuje ho správce paměti, který blokuje mapování souboru do paměti. Pokud se aplikace pokusí namapovat obraz s nízkou úrovní integrity, vyvolá to chybu STATUS_ACCESS_DENIED. Podrobnosti o tom, jak úrovně integrity fungují, najdete v tématu Povinná kontrola integrity.
Důležité informace o kompatibilitě
Blokovat image s nízkou integritou brání aplikaci v načítání souborů stažených z internetu. Pokud pracovní postup aplikace vyžaduje načtení stažených imagí, chcete zajistit, aby se stahovaly z procesu s vyšší důvěryhodností nebo byly explicitně znovu označeny, aby bylo možné toto omezení rizik použít.
Možnosti konfigurace
Pouze audit – Toto zmírnění rizik můžete povolit v režimu auditování, abyste mohli měřit potenciální vliv na kompatibilitu aplikace. Události auditu je pak možné zobrazit buď v prohlížeči událostí, nebo pomocí rozšířeného proaktivního vyhledávání v Microsoft Defender for Endpoint.
Blokovat vzdálené obrázky
Následující části popisují fungování blokování vzdálených imagí, dopad na kompatibilitu a možnosti konfigurace.
Popis
Blokování vzdálených imagí pomáhá zabránit aplikaci v načítání souborů hostovaných na vzdáleném zařízení, jako je například sdílená složka UNC. Blokování vzdálených imagí pomáhá chránit před načítáním binárních souborů do paměti, které jsou na externím zařízení řízeném útočníkem.
Toto opatření ke zmírnění rizik blokuje načítání obrázků, pokud se určí, že se obrázek nachází na vzdáleném zařízení. Implementuje ho správce paměti, který blokuje mapování souboru do paměti. Pokud se aplikace pokusí namapovat vzdálený soubor, vyvolá to chybu STATUS_ACCESS_DENIED.
Důležité informace o kompatibilitě
Blokování vzdálených imagí brání aplikaci v načítání imagí ze vzdálených zařízení. Pokud vaše aplikace načte soubory nebo moduly plug-in ze vzdálených zařízení, nebude kompatibilní s tímto zmírněním rizik.
Možnosti konfigurace
Pouze audit – Toto zmírnění rizik můžete povolit v režimu auditování, abyste mohli měřit potenciální vliv na kompatibilitu aplikace. Události auditu je pak možné zobrazit buď v prohlížeči událostí, nebo pomocí rozšířeného proaktivního vyhledávání v Microsoft Defender for Endpoint.
Blokovat nedůvěryhodná písma
Následující části popisují, jak funguje blokování nedůvěryhodných písem, dopad na kompatibilitu a možnosti konfigurace.
Popis
Blokování nedůvěryhodných písem snižuje riziko chyby při analýze písma, což vede k tomu, že útočník může na zařízení spustit kód. GDI načte jenom písma, která jsou nainstalovaná do adresáře windows\fonts.
Toto zmírnění je implementováno v rámci rozhraní GDI, které ověřuje umístění souboru. Pokud soubor není v adresáři systémových písem, písmo se pro analýzu nenačte a volání selže.
Toto zmírnění je navíc k integrovanému zmírnění rizik poskytnutému v Windows 10 1607 a novějších verzích a ve Windows 11, které přesouvá analýzu písma z jádra a do kontejneru aplikace v uživatelském režimu. Jakékoli zneužití založené na analýze písma v důsledku toho probíhá v izolovaném a izolovaném kontextu, což významně snižuje riziko.
Důležité informace o kompatibilitě
Nejběžnějším použitím písem mimo adresář systémových písem jsou webová písma. Moderní prohlížeče, jako je Microsoft Edge, používají místo GDI DirectWrite a nejsou ovlivněné. Starší prohlížeče, jako je Internet Explorer 11 (a režim IE v novém Microsoft Edge), ale můžou být ovlivněné, zejména u aplikací, jako je Office 365, které k zobrazení uživatelského rozhraní používají piktogramy písem.
Možnosti konfigurace
Pouze audit – Toto zmírnění rizik můžete povolit v režimu auditování, abyste mohli měřit potenciální vliv na kompatibilitu aplikace. Události auditu je pak možné zobrazit buď v prohlížeči událostí, nebo pomocí rozšířeného proaktivního vyhledávání v Microsoft Defender for Endpoint.
Ochrana integrity kódu
Následující části popisují, jak funguje ochrana integrity kódu, její dopad na kompatibilitu a možnosti konfigurace.
Popis
Ochrana integrity kódu zajišťuje digitální podepsání všech binárních souborů načtených do procesu společností Microsoft. Ochrana integrity kódu zahrnuje podpisy WHQL (Windows Hardware Quality Labs), které umožňují spuštění ovladačů schválených pro WHQL v rámci procesu.
Toto zmírnění je implementováno ve správci paměti, což blokuje namapování binárního souboru do paměti. Pokud se pokusíte načíst binární soubor, který není podepsaný Microsoftem, vrátí správci paměti chybu STATUS_INVALID_IMAGE_HASH. Blokováním na úrovni správce paměti zabráníte tomu, aby proces načetl binární soubory i binární soubory vložené do procesu.
Důležité informace o kompatibilitě
Toto zmírnění rizik konkrétně blokuje všechny binární soubory, které nejsou podepsané Microsoftem. Proto je nekompatibilní s většinou softwaru od jiných společností než Microsoft, pokud tento software není distribuovaný (a digitálně podepsaný) službou Microsoft Store a není vybrána možnost povolit načítání obrázků podepsaných obchodem Microsoft Store.
Možnosti konfigurace
Povolte také načítání imagí podepsaných službou Microsoft Store – Aplikace distribuované službou Microsoft Store jsou digitálně podepsány službou Microsoft Store a přidáním této konfigurace umožníte, aby aplikace načítala binární soubory, které procházejí procesem certifikace obchodu.
Pouze audit – Toto zmírnění rizik můžete povolit v režimu auditování, abyste mohli měřit potenciální vliv na kompatibilitu aplikace. Události auditu je pak možné zobrazit buď v prohlížeči událostí, nebo pomocí rozšířeného proaktivního vyhledávání v Microsoft Defender for Endpoint.
Ochrana toku řízení (CFG)
Následující části popisují, jak funguje ochrana toku řízení, její dopad na kompatibilitu a možnosti konfigurace.
Popis
Ochrana toku řízení (CFG) snižuje riziko zneužití zranitelností spojených s poškozením paměti útočníky tím, že chrání nepřímá volání funkcí. Útočník může například využít zranitelnost typu přetečení vyrovnávací paměti k přepsání paměti obsahující ukazatel funkce a nahradit tento ukazatel ukazatelem na spustitelný kód dle svého výběru (jenž může být do programu také injektován).
Toto zmírnění je poskytováno vložením další kontroly při kompilaci. Před každým nepřímým voláním funkce se přidají další pokyny, které před voláním ověřují, že cíl je platným cílem volání. Pokud cíl není platným cílem volání, aplikace se ukončí. Z tohoto zmírnění proto můžou těžit jenom aplikace, které jsou kompilované s podporou CFG.
Kontrola platného cíle je poskytována jádrem systému Windows. Když se načtou spustitelné soubory, metadata pro nepřímé cíle volání se extrahují při načítání a označí se jako platné cíle volání. Pokud je paměť přidělená a označená jako spustitelná (například pro vygenerovaný kód), označí se tato umístění paměti také jako platné cíle volání, aby podporovala mechanismy, jako je kompilace JIT.
Důležité informace o kompatibilitě
Vzhledem k tomu, že aplikace musí být kompilovány, aby podporovaly CFG, implicitně s ním deklarují kompatibilitu. Většina aplikací by proto měla s povoleným zmírněním rizik pracovat. Vzhledem k tomu, že se tyto kontroly kompilují do binárního souboru, je konfigurace, kterou můžete použít, jenom zakázat kontroly v rámci jádra Windows. Jinými slovy, zmírnění rizik je ve výchozím nastavení zapnuté, ale můžete nakonfigurovat jádro Windows tak, aby vždy vracelo ano, pokud později zjistíte, že došlo k problému s kompatibilitou, který vývojář aplikace při testování nezjišťoval, což by mělo být vzácné.
Možnosti konfigurace
Použít přísné CFG – V přísném režimu musí být všechny binární moduly načítané do procesu zkompilovány s funkcí Control Flow Guard (nebo nesmí obsahovat žádný spustitelný kód, například DLL knihovny s prostředky), aby je bylo možné načíst.
Poznámka
Ochrana toku řízení nemá žádný režim auditování. Binární soubory se kompilují s povoleným zmírněním rizik.
Prevence spouštění dat (DEP)
Následující části popisují, jak funguje prevence spouštění dat, její dopad na kompatibilitu a možnosti konfigurace.
Popis
Zabránění spuštění dat (DEP) brání spuštění paměti, která nebyla explicitně přidělena jako spustitelný soubor. DEP pomáhá chránit před útočníkem, který do procesu vloží škodlivý kód, například prostřednictvím přetečení vyrovnávací paměti, a pak tento kód spustí.
Pokud se pokusíte nastavit ukazatel na instrukce na adresu paměti, která není označena jako spustitelná, procesor vyvolá výjimku (obecné porušení ochrany), což způsobí chybové ukončení aplikace.
Důležité informace o kompatibilitě
Všechny spustitelné soubory x64, ARM a Arm64 mají ve výchozím nastavení povolenou funkci DEP a nedá se zakázat. Vzhledem k tomu, že se aplikace nespustí bez programu DEP, předpokládá se kompatibilita.
Všechny binární soubory x86 (32bitové) mají ve výchozím nastavení povolené DEP, ale DEP se dá zakázat pro každý proces. Některé starší aplikace, obvykle aplikace vyvinuté před aktualizací Windows XP SP2, nemusí být kompatibilní s programem DEP. Takové aplikace obvykle generují kód dynamicky (například kompilaci JIT) nebo odkazují na starší knihovny (například starší verze ATL), které dynamicky generují kód.
Možnosti konfigurace
Povolit emulaci ATL Thunk – tato možnost řídí emulaci ATL Thunk. Knihovna šablon ActiveX ATL je navržená tak, aby byla co nejmenší a nejrychlejší. Ke zmenšení binární velikosti se používá technika označovaná jako thunking. Thunking je často propojený s 32bitovou a 16bitovou interakcí, ale ATL nemá žádné 16bitové části. Místo toho ATL ukládá kód počítače do paměti, která není zarovnaná slovem. Tím se vytvoří menší binární soubor. ATL pak tento kód spustí přímo. Verze ATL kompilované s Visual Studio 7.1 nebo starší (Visual Studio 2003) tuto paměť neoznačují jako spustitelný soubor. Emulace Thunk tento problém řeší. Aplikace s binárním rozšiřujícím modelem (například Internet Explorer 11) potřebují povolenou emulaci ATL Thunk.
Zakázat body pro rozšíření
Následující části popisují, jak funguje omezení rizik při zákazu bodů rozšíření, dopad na kompatibilitu a možnosti konfigurace.
Popis
Zmírňující opatření Disable extension points zakazuje pro aplikaci různé body rozšíření, které by mohly být zneužity k zajištění perzistence nebo k eskalaci oprávnění škodlivého kódu.
Patří mezi ně:
- Knihovny DLL AppInit – při každém spuštění procesu systém před voláním funkce vstupního bodu načte zadanou knihovnu DLL do kontextu nově spuštěného procesu. Podrobnosti o knihovnách DLL AppInit najdete tady. Po použití tohoto opatření ke zmírnění rizika se knihovny DLL AppInit nenačítají. Počínaje systémem Windows 7 musí být knihovny DLL AppInit digitálně podepsané, jak je popsáno zde. Kromě toho se od Windows 8 nenačtou knihovny DLL AppInit, pokud je povolené zabezpečení SecureBoot, jak je popsáno tady.
- Starší editory IME – Editor IME (Input Method Editor) umožňuje uživateli psát text v jazyce, který má více znaků, než lze reprezentovat na klávesnici. Třetí strany mohou vytvářet editory IME. Škodlivý editor IME může z tohoto vstupního záznamu získat přihlašovací údaje nebo jiné citlivé informace. Některé IME, označované jako starší verze IME, fungují jenom v desktopových aplikacích pro Windows, a ne v aplikacích pro UPW. Toto opatření také zabrání načtení této starší metody IME do zadané desktopové aplikace systému Windows.
- Háky událostí systému Windows – aplikace může volat rozhraní SetWinEventHook API, aby zaregistrovala zájem o výskyt určité události. Je zadána knihovna DLL, kterou lze vložit do procesu. Toto opatření vynutí, aby byl hook odeslán do procesu, který jej zaregistroval, namísto spuštění v rámci procesu prostřednictvím injektované knihovny DLL.
Důležité informace o kompatibilitě
Většina těchto bodů rozšíření se používá poměrně zřídka, takže efekt kompatibility je obvykle malý, zejména na úrovni jednotlivých aplikací. Jedním z důležitých aspektů je, pokud uživatelé používají starší verze IME od jiných společností než Microsoft, které nebudou s chráněnou aplikací fungovat.
Možnosti konfigurace
Pro toto zmírnění rizik nejsou k dispozici žádné možnosti konfigurace.
Poznámka
Zakázat rozšiřovací body nemá žádný režim auditování.
Zakázat systémová volání Win32k
Následující části popisují, jak funguje zmírnění rizik zákazu volání systému Win32k, jeho dopad na kompatibilitu a možnosti konfigurace.
Popis
Win32k.sys poskytuje útočníkovi širokou oblast útoku. Jako komponenta v režimu jádra je často terčem jako vektor úniku pro aplikace, které běží v sandboxu. Toto omezení rizik zabraňuje volání win32k.sys blokováním samotného převodu vlákna na vlákno grafického uživatelského rozhraní, které je pak uděleno oprávnění k vyvolání funkcí Win32k. Vlákno při vytvoření není vláknem GUI, ale při prvním volání win32k.sys nebo při volání API IsGuiThread se na vlákno GUI převede.
Důležité informace o kompatibilitě
Toto omezení rizik je určeno pro procesy, které jsou vyhrazenými procesy bez uživatelského rozhraní. Mnoho moderních prohlížečů například používá izolaci procesů a zahrnuje procesy, které nejsou uživatelské rozhraní. Toto zmírnění bude mít vliv na všechny aplikace, které zobrazí grafické uživatelské rozhraní pomocí jednoho procesu.
Možnosti konfigurace
Pouze audit – Toto zmírnění rizik můžete povolit v režimu auditování, abyste mohli měřit potenciální vliv na kompatibilitu aplikace. Události auditu je pak možné zobrazit buď v prohlížeči událostí, nebo pomocí rozšířeného proaktivního vyhledávání v Microsoft Defender for Endpoint.
Nepovolit podřízené procesy
Následující části popisují, jak funguje zmírnění rizik „Nepovolit podřízené procesy“, jeho dopad na kompatibilitu a možnosti jeho konfigurace.
Popis
Zmírnění rizik „Nepovolit podřízené procesy“ zabrání aplikaci vytvářet nové podřízené procesy. Obvyklou technikou, kterou nežádoucí osoba používá, je iniciovat důvěryhodný proces na zařízení se škodlivým vstupem (útok „live off the land“), který často vyžaduje spuštění jiné aplikace na zařízení. Pokud neexistují žádné legitimní důvody, proč by aplikace spustila podřízený proces, zmírní se tím tento potenciální vektor útoku. Zmírnění rizik se použije nastavením vlastnosti tokenu procesu, která blokuje vytvoření tokenu pro podřízený proces s chybovou zprávou STATUS_CHILD_PROCESS_BLOCKED.
Důležité informace o kompatibilitě
Pokud vaše aplikace z jakéhokoli důvodu spouští podřízené aplikace, například kvůli podpoře hypertextových odkazů, které otevírají webový nebo externí prohlížeč, nebo spouští jiné nástroje v počítači, pak tato funkce při použití tohoto zmírňujícího opatření nebude fungovat.
Možnosti konfigurace
Pouze audit – Toto zmírnění rizik můžete povolit v režimu auditování, abyste mohli měřit potenciální vliv na kompatibilitu aplikace. Události auditu je pak možné zobrazit buď v prohlížeči událostí, nebo pomocí rozšířeného proaktivního vyhledávání v Microsoft Defender for Endpoint.
Export filtrování adres
Následující části popisují, jak funguje filtrování adres exportu, dopad na kompatibilitu a možnosti konfigurace.
Popis
Export filtrování adres (EAF) snižuje riziko škodlivého kódu, který se dívá na tabulku exportních adres všech načtených modulů a hledá moduly, které obsahují užitečná rozhraní API pro jejich útok. To je běžná taktika, kterou shellcode používá. Aby se zmírnila rizika takového útoku, toto zmírnění chrání tři běžně napadené moduly:
- ntdll.dll
- kernelbase.dll
- kernel32.dll
Zmírnění rizik chrání paměťovou stránku v [adresáři exportu, který odkazuje na tabulku exportu adres. Na tuto stránku paměti je použitá ochrana PAGE_GUARD . Když se někdo pokusí přistoupit k této paměti, dojde k vyvolání chyby STATUS_GUARD_PAGE_VIOLATION. Toto opatření tuto výjimku ošetří, a pokud přistupující instrukce neprojde validací, proces bude ukončen.
Důležité informace o kompatibilitě
Toto opatření ke zmírnění představuje problém zejména pro aplikace, jako jsou ladicí programy, sandboxované aplikace, aplikace používající DRM nebo aplikace implementující technologii ochrany proti ladění.
Možnosti konfigurace
Ověřte přístup pro moduly, které jsou běžně zneužity zneužitím – Tato možnost, označovaná také jako EAF+, přidává ochranu pro další běžně napadené moduly:
mshtml.dllflash*.ocxjscript*.ocxvbscript.dllvgx.dllmozjs.dllxul.dllacrord32.dllacrofx32.dllacroform.api
Kromě toho po povolení EAF+ toto zmírnění přidá ochranu PAGE_GUARD stránce obsahující hlavičku „MZ“, první 2 bajty hlavičky DOS v souboru PE; to je známý prvek obsahu paměti, který může shellcode vyhledávat k identifikaci potenciálně zajímavých modulů v paměti.
Pouze audit – Toto zmírnění rizik můžete povolit v režimu auditování, abyste mohli měřit potenciální vliv na kompatibilitu aplikace. Události auditu je pak možné zobrazit buď v prohlížeči událostí, nebo pomocí rozšířeného proaktivního vyhledávání v Microsoft Defender for Endpoint.
Vynutit randomizaci obrázků (povinné ASLR)
Následující části popisují, jak povinné ASLR funguje, jaký má dopad na kompatibilitu, a možnosti konfigurace.
Popis
Randomizace rozložení adresního prostoru (ASLR) snižuje riziko útočníka pomocí znalostí rozložení paměti systému, aby mohl spustit kód, který je již přítomen v paměti procesu a již označen jako spustitelný. To může zmírnit riziko útočníka pomocí technik, jako jsou útoky typu return-to-libc, kdy nežádoucí osoba nastaví kontext a pak upraví návratovou adresu tak, aby spustila existující kód s kontextem, který vyhovuje účelu nežádoucího uživatele.
Povinné ASLR vynutí změnu základní adresy všech knihoven DLL v procesu. Vývojář může povolit ASLR pomocí možnosti linkeru /DYNAMICBASE a toto zmírnění má stejný účinek.
Když správce paměti mapuje bitovou kopii do procesu, povinné ASLR vynutí změnu základní adresy knihoven DLL a souborů EXE, které nevyužívají ASLR. Upozorňujeme ale, že toto přenesení nemá žádnou entropii, a proto se dá umístit do předvídatelného umístění v paměti. U binárních souborů s přebázovaným a náhodně určeným umístěním by toto opatření mělo být kombinováno s Náhodným přidělováním paměti (ASLR zdola nahoru).
Důležité informace o kompatibilitě
Tento aspekt kompatibility ASLR je obvykle omezen na starší aplikace, které byly sestaveny pomocí kompilátorů předpokládajících určitou základní adresu binárního souboru nebo z nichž byly odstraněny informace o relokaci základní adresy. To může vést k nepředvídatelným chybám, protože se tok provádění pokouší přejít na očekávané místo v paměti, nikoli na skutečné.
Možnosti konfigurace
Nepovolit odstraněné obrázky – Tato možnost blokuje načítání imagí, u kterých byly odstraněny informace o přemístění. Formát souborů Windows PE obsahuje absolutní adresy a kompilátor také generuje [tabulku přemístění báze, kterou může zavaděč použít k nalezení všech relativních odkazů na paměť a jejich posunů, aby je bylo možné aktualizovat, pokud se binární soubor nenačte na preferovanou základní adresu. Některé starší aplikace tyto informace odstraňují z produkčních sestavení, a proto tyto binární soubory nelze změnit. Toto omezení rizik znemožňuje načtení těchto binárních souborů (místo toho, aby bylo možné je načíst na upřednostňovanou základní adresu).
Poznámka
Vynucení randomizace pro obrázky (povinné ASLR) nemá žádný režim auditování.
Hardwarově vynucená ochrana zásobníku
Popis
Hardwarově vynucovaná ochrana zásobníku nabízí spolehlivou ochranu proti útokům ROP. Funguje tak, že uchovává záznam zamýšleného toku provádění programu. Pro podporu bezproblémového přijetí a kompatibility aplikací Windows tuto ochranu nabízí jako model výslovného souhlasu. Vývojáři ho můžou povolit vlastním tempem.
Důležité informace o kompatibilitě
Hardwarově vynucená ochrana zásobníku funguje pouze u čipových sad s podporou hardwarových stínových zásobníků, technologie Intel CET (Control-flow Enforcement Technology) nebo stínových zásobníků AMD.
Pokud spouštíte aplikace založené na rozhraní .NET Framework, hardwarově vynucená ochrana zásobníku funguje s rozhraním .NET Framework 7 (výslovný souhlas) nebo novějším. Pokud používáte starší verzi, můžete se setkat s pády nebo vysokým zatížením procesoru. K těmto problémům může dojít také v režimu auditování nebo při cílení pouze na kompatibilní moduly.
Možnosti konfigurace
Pouze audit – Toto zmírnění rizik můžete povolit v režimu auditování, abyste mohli změřit potenciální vliv na kompatibilitu aplikace. Události auditu je pak možné zobrazit buď v prohlížeči událostí, nebo pomocí rozšířeného proaktivního vyhledávání v Defender for Endpoint.
Vynucovat pro všechny moduly místo kompatibilních modulů – Tuto ochranu můžete povolit tak, aby se vynucovala pro všechny moduly místo kompatibilních modulů.
Filtrování importovaných adres (IAF)
Popis
Mechanismus zmírnění rizik filtrováním importovaných adres (IAF) pomáhá snižovat riziko, že útočník změní tok řízení aplikace úpravou tabulky importovaných adres (IAT) tak, aby při volání dané funkce přesměrovala řízení na libovolný kód zvolený útočníkem. Útočník by mohl tento přístup použít k napadení řízení nebo k zachycení, kontrole a potenciálně blokování volání citlivých rozhraní API.
Paměťové stránky všech chráněných rozhraní API mají použitou ochranu PAGE_GUARD. Když se někdo pokusí přistoupit k této paměti, dojde k vyvolání chyby STATUS_GUARD_PAGE_VIOLATION. Toto opatření tuto výjimku ošetří, a pokud přistupující instrukce neprojde validací, proces bude ukončen.
Toto omezení rizik chrání následující rozhraní API systému Windows:
GetProcAddressGetProcAddressForCallerLoadLibraryALoadLibraryExALoadLibraryWLoadLibraryExWLdrGetProcedureAddressLdrGetProcedureAddressExLdrGetProcedureAddressForCallerLdrLoadDllVirtualProtectVirtualProtectExVirtualAllocVirtualAllocExNtAllocateVirtualMemoryNtProtectVirtualMemoryCreateProcessACreateProcessWWinExecCreateProcessAsUserACreateProcessAsUserWGetModuleHandleAGetModuleHandleWRtlDecodePointerDecodePointer
Důležité informace o kompatibilitě
Legitimní aplikace, které provádějí zachytávání rozhraní API, můžou být tímto zmírněním zjištěny a způsobit chybové ukončení některých aplikací. Mezi příklady patří bezpečnostní software a vrstvy kompatibility aplikací.
Možnosti konfigurace
Pouze audit – Toto zmírnění rizik můžete povolit v režimu auditování, abyste mohli měřit potenciální vliv na kompatibilitu aplikace. Události auditu je pak možné zobrazit buď v prohlížeči událostí, nebo pomocí rozšířeného proaktivního vyhledávání v Microsoft Defender for Endpoint.
Náhodné přidělování paměti (ASLR zdola nahoru)
Popis
Náhodné přidělení paměti (ASLR zdola nahoru) přidává entropii k přemístění, takže jejich umístění je náhodné a proto méně předvídatelné. Toto zmírnění vyžaduje, aby se projevila povinná funkce ASLR .
Velikost 32bitového adresního prostoru omezuje entropii, kterou je možné přidat, a proto 64bitové aplikace znesnadní útočníkovi odhad umístění v paměti.
Důležité informace o kompatibilitě
Většina aplikací, které fungují s povinným ASLR (rebasingem), funguje také se zdola nahoru orientovaným ASLR. Některé aplikace můžou mít problémy se zkrácením ukazatele, pokud ukládají místní ukazatele do 32bitových proměnných. Tyto aplikace vyžadují základní adresu pod hranicí 4 GB, takže nebudou fungovat s možností vysoké entropie. V případě potřeby můžete zakázat vysokou entropii.
Možnosti konfigurace
Nepoužívejte vysokou entropii – tato možnost zakáže použití ASLR s vysokou entropií, která přidá 24 bitů entropie (1 TB odchylky) do přidělení zdola nahoru pro 64bitové aplikace.
Poznámka
Náhodné přidělování paměti (Bottom-up ASLR) nemá režim auditu.
Simulovat provádění (SimExec)
Popis
Simulace spuštění (SimExec) je mitigace pouze pro 32bitové aplikace. To pomáhá ověřit, jestli se volání citlivých rozhraní API vrací do legitimních funkcí volajícího. Dělá to tak, že zachycuje volání do citlivých rozhraní API a pak simuluje provádění těchto rozhraní API procházením kódovaných pokynů jazyka sestavení, které hledají instrukci RET, která by se měla vrátit volajícímu. Poté tuto funkci zkontroluje a prochází paměť směrem zpět, aby našel předchozí instrukci CALL a ověřil, zda se funkce a instrukce CALL shodují a zda instrukce RET nebyla odchycena.
Rozhraní API zachycená touto mitigací jsou:
LoadLibraryALoadLibraryWLoadLibraryExALoadLibraryExWLdrLoadDllVirtualAllocVirtualAllocExNtAllocateVirtualMemoryVirtualProtectVirtualProtectExNtProtectVirtualMemoryHeapCreateRtlCreateHeapCreateProcessACreateProcessWCreateProcessInternalACreateProcessInternalWNtCreateUserProcessNtCreateProcessNtCreateProcessExCreateRemoteThreadCreateRemoteThreadExNtCreateThreadExWriteProcessMemoryNtWriteVirtualMemoryWinExecCreateFileMappingACreateFileMappingWCreateFileMappingNumaWNtCreateSectionMapViewOfFileMapViewOfFileExMapViewOfFileFromAppLdrGetProcedureAddressForCaller
Pokud je detekován ROP gadget, proces se ukončí.
Důležité informace o kompatibilitě
Aplikace, které provádějí zachytávání rozhraní API, zejména bezpečnostní software, mohou při tomto zmírnění způsobit problémy s kompatibilitou.
Toto opatření není kompatibilní s opatřením Arbitrary Code Guard.
Možnosti konfigurace
Pouze audit – Toto zmírnění rizik můžete povolit v režimu auditování, abyste mohli měřit potenciální vliv na kompatibilitu aplikace. Události auditu je pak možné zobrazit buď v prohlížeči událostí, nebo pomocí rozšířeného proaktivního vyhledávání v Microsoft Defender for Endpoint.
Ověřit volání API (CallerCheck)
Popis
Ověření volání rozhraní API (CallerCheck) je opatření ke zmírnění technik programování orientovaného na návrat (ROP), které ověřuje, že citlivá rozhraní API byla volána platným volajícím. Toto zmírnění rizik zkontroluje předanou návratovou adresu a poté heukusticky zpětně vyhledá volání nad návratovou adresou, aby zjistilo, jestli cíl volání odpovídá parametru předanému funkci.
Rozhraní API zachycená touto mitigací jsou:
LoadLibraryALoadLibraryWLoadLibraryExALoadLibraryExWLdrLoadDllVirtualAllocVirtualAllocExNtAllocateVirtualMemoryVirtualProtectVirtualProtectExNtProtectVirtualMemoryHeapCreateRtlCreateHeapCreateProcessACreateProcessWCreateProcessInternalACreateProcessInternalWNtCreateUserProcessNtCreateProcessNtCreateProcessExCreateRemoteThreadCreateRemoteThreadExNtCreateThreadExWriteProcessMemoryNtWriteVirtualMemoryWinExecCreateFileMappingACreateFileMappingWCreateFileMappingNumaWNtCreateSectionMapViewOfFileMapViewOfFileExMapViewOfFileFromAppLdrGetProcedureAddressForCaller
Pokud je detekován ROP gadget, proces se ukončí.
Důležité informace o kompatibilitě
Aplikace, které provádějí zachytávání rozhraní API, zejména bezpečnostní software, mohou při tomto zmírnění způsobit problémy s kompatibilitou.
Toto opatření není kompatibilní s opatřením Arbitrary Code Guard.
Možnosti konfigurace
Pouze audit – Toto zmírnění rizik můžete povolit v režimu auditování, abyste mohli měřit potenciální vliv na kompatibilitu aplikace. Události auditu je pak možné zobrazit buď v prohlížeči událostí, nebo pomocí rozšířeného proaktivního vyhledávání v Microsoft Defender for Endpoint.
Ověřit řetězce výjimek (SEHOP)
Popis
Ověřování řetězců výjimek (SEHOP) je ochranou proti technice zneužití přepsání strukturovaného obslužného programu výjimek (SEH). Strukturované zpracování výjimek je proces, pomocí kterého může aplikace požádat o zpracování konkrétní výjimky. Obslužné rutiny výjimek jsou zřetězené dohromady, takže pokud se jedna obslužná rutina výjimky rozhodne nezpracovávat konkrétní výjimku, může být předána další obslužné rutině výjimky v řetězci, dokud se nerozhodne ji zpracovat. Protože je seznam obslužných rutin dynamický, je uložen na zásobníku. Útočník může zneužít zranitelnost typu přetečení zásobníku a následně přepsat obslužnou rutinu pro zpracování výjimek ukazatelem na kód, který si útočník zvolí.
Toto zmírnění rizik závisí na návrhu SEH, kde každá položka SEH obsahuje ukazatel na obslužnou rutinu výjimky a ukazatel na další obslužnou rutinu v řetězu výjimek. Toto zmírnění je voláno dispečerem výjimek, který ověřuje řetěz SEH při vyvolání výjimky. Ověřuje, že:
- Všechny záznamy řetězu výjimek jsou uvnitř hranic zásobníku.
- Všechny záznamy výjimek jsou zarovnané.
- Na zásobník neukazují žádné ukazatele obslužných rutin výjimek.
- Nejsou k dispozici žádné zpětné ukazatele.
- Řetězec výjimek končí u známé koncové obsluhy výjimky.
Pokud se tato ověření nezdaří, zpracování výjimek se přeruší a výjimka se nezpracuje.
Důležité informace o kompatibilitě
Problémy s kompatibilitou se SEHOP jsou relativně neobvyklé. Je neobvyklé, aby aplikace byla závislá na narušení řetězu výjimek. Některé aplikace jsou však citlivé na jemné změny v časování, které se mohou projevit jako race condition a odhalit tak v aplikaci latentní chybu ve vícevláknovém zpracování.
Možnosti konfigurace
Poznámka
Ověřte, že řetězy výjimek (SEHOP) nemají žádný režim auditování.
Ověřit použití popisovače
Popis
Ověřování použití popisovače je opatření ke zmírnění rizika, které pomáhá chránit před útočníkem, jenž používá existující popisovač k přístupu k chráněnému objektu. Identifikátor je odkaz na chráněný objekt. Pokud kód aplikace odkazuje na neplatný popisovač, může to naznačovat, že se útočník pokouší použít popisovač, který si dříve zaznamenal (ale o kterém mechanismus počítání referencí aplikace neví). Pokud se aplikace pokusí použít neplatný objekt místo prostého vrácení hodnoty null, aplikace vyvolá výjimku (STATUS_INVALID_HANDLE).
Toto omezení rizik se automaticky použije u aplikací pro Windows Store.
Důležité informace o kompatibilitě
Tímto opatřením mohou být potenciálně ovlivněny aplikace, které nesledovaly správně reference na handly a tyto operace neuzavíraly do obsluhy výjimek.
Možnosti konfigurace
Poznámka
Ověřování použití popisovače nemá režim auditu.
Ověřit integritu haldy
Popis
Opatření ověření integrity haldy zvyšuje úroveň ochrany ochranných opatření pro haldu v systému Windows tím, že aplikaci ukončí, pokud je zjištěno poškození haldy. Mezi zmírnění rizik patří:
- Zabránění uvolnění popisovače HALD
- Provádí se další ověření rozšířených hlaviček bloků pro přidělení haldy.
- Ověření, že alokace v haldě nejsou již označeny jako používané
- Přidání strážených stránek do velkých přidělení, segmentů haldy a dílčích segmentů nad minimální velikost
Důležité informace o kompatibilitě
Toto omezení rizik je již použito ve výchozím nastavení pro 64bitové aplikace a pro 32bitové aplikace cílené na systém Windows Vista nebo novější. Starší verze aplikací z Windows XP nebo starších verzí jsou nejohroženější, i když problémy s kompatibilitou jsou neobvyklé.
Možnosti konfigurace
Poznámka
Ověření integrity haldy nemá režim auditu.
Ověřit integritu závislosti obrázku
Popis
Zmírnění závislosti ověření obrázku pomáhá chránit před útoky, které se pokoušejí nahradit kód knihovnami DLL staticky propojenými binárními soubory systému Windows. Technika zasazování knihovny DLL zneužívá vyhledávací mechanismus zavaděče k vložení škodlivého kódu, který se dá použít k tomu, aby se škodlivý kód spouštěl v kontextu se zvýšenými oprávněními. Když zavaděč načítá binární soubor podepsaný systémem Windows a pak načte všechny knihovny DLL, na kterých binární soubor závisí, jsou tyto binární soubory ověřeny, aby se zajistilo, že jsou také digitálně podepsané jako binární soubor Systému Windows. Pokud neprojdou kontrolou podpisu, DLL se nenačte a bude vyvolána výjimka s návratovým stavem STATUS_INVALID_IMAGE_HASH.
Důležité informace o kompatibilitě
Problémy s kompatibilitou jsou neobvyklé. Aplikace, které závisí na nahrazení binárních souborů Windows místními privátními verzemi, jsou ovlivněny a existuje také malé riziko odhalení drobných chyb časování v aplikacích s více vlákny.
Možnosti konfigurace
Pouze audit – Toto zmírnění rizik můžete povolit v režimu auditování, abyste mohli měřit potenciální vliv na kompatibilitu aplikace. Události auditu je pak možné zobrazit buď v prohlížeči událostí, nebo pomocí rozšířeného proaktivního vyhledávání v Microsoft Defender for Endpoint.
Ověřit integritu zásobníku (StackPivot)
Popis
Mechanismus zmírnění ověření integrity zásobníku (StackPivot) pomáhá chránit před útokem Stack Pivot, což je útok typu ROP, při kterém útočník vytvoří falešný zásobník v paměti heapu a poté přiměje aplikaci, aby se vrátila na falešný zásobník, který řídí tok vykonávání.
Toto opatření ke zmírnění rizik zachytává volání mnoha rozhraní API systému Windows a kontroluje hodnotu ukazatele zásobníku. Pokud se adresa ukazatele zásobníku nenachází mezi spodní a horní hranicí zásobníku, zaznamená se událost a proces se ukončí, pokud není v auditním režimu.
Rozhraní API zachycená touto mitigací jsou:
LoadLibraryALoadLibraryWLoadLibraryExALoadLibraryExWLdrLoadDllVirtualAllocVirtualAllocExNtAllocateVirtualMemoryVirtualProtectVirtualProtectExNtProtectVirtualMemoryHeapCreateRtlCreateHeapCreateProcessACreateProcessWCreateProcessInternalACreateProcessInternalWNtCreateUserProcessNtCreateProcessNtCreateProcessExCreateRemoteThreadCreateRemoteThreadExNtCreateThreadExWriteProcessMemoryNtWriteVirtualMemoryWinExecCreateFileMappingACreateFileMappingWCreateFileMappingNumaWNtCreateSectionMapViewOfFileMapViewOfFileExMapViewOfFileFromAppLdrGetProcedureAddressForCaller
Důležité informace o kompatibilitě
Aplikace, které používají fake stacky, jsou tím dotčeny a existuje také malé riziko odhalení drobných časovacích chyb ve vícevláknových aplikacích. Aplikace, které provádějí zachytávání rozhraní API, zejména bezpečnostní software, mohou při tomto zmírnění způsobit problémy s kompatibilitou.
Toto opatření není kompatibilní s opatřením Arbitrary Code Guard.
Možnosti konfigurace
Pouze audit – Toto zmírnění rizik můžete povolit v režimu auditování, abyste mohli měřit potenciální vliv na kompatibilitu aplikace. Události auditu je pak možné zobrazit buď v prohlížeči událostí, nebo pomocí rozšířeného proaktivního vyhledávání v Microsoft Defender for Endpoint.