Sdílet prostřednictvím


Referenční informace k ochraně proti zneužití

Platí pro:

Chcete vyzkoušet Defender pro Endpoint? Zaregistrujte se a získejte bezplatnou zkušební verzi,

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.

Způsob použití zmírnění rizik

Omezení rizik ochrany před zneužitím se aplikují na každou aplikaci.

Zmírnění rizik se konfigurují prostřednictvím položky registru pro každý program, pro který konfigurujete ochranu. Tato nastavení jsou uložená v položce registru MitigationOptions pro jednotlivé programy (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\*ImageFileName*\MitigationOptions). Projeví se při restartování programu a zůstanou v platnosti, dokud je nezměníte a program znovu nerestartovat.

Důležité

Možnosti spuštění souboru bitové kopie umožňují zadat pouze název nebo cestu k souboru, nikoli číslo verze, architekturu ani jiné rozdíly. Buďte opatrní a zaměřte omezení rizik na aplikace, které mají jedinečné názvy nebo cesty, a používejte je jenom na zařízeních, na kterých jste tuto verzi a architekturu aplikace otestovali.

Pokud nakonfigurujete zmírnění rizik ochrany před zneužitím pomocí konfiguračního souboru XML pomocí PowerShellu, Zásady skupiny nebo MDM, při zpracování tohoto konfiguračního souboru XML se nakonfigurují jednotlivá nastavení registru.

Resetování ochrany před zneužitím

Důležité

Pokud se už zásady distribuce souboru XML 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. Microsoft také poskytuje soubor XML jako součást standardních hodnot Zabezpečení Windows pro resetování nastavení ochrany před zneužitím.

Pokud chcete resetovat nastavení ochrany exploit protection pomocí PowerShellu, použijte následující příkaz:

Set-ProcessMitigation -PolicyFilePath EP-reset.xml

Následuje soubor EP-reset.xml distribuovaný se směrnými plány Zabezpečení Windows:

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

V následujících částech jsou podrobně popsané ochrany poskytované jednotlivými zmírněními ochrany před zneužitím, důležité informace o kompatibilitě pro zmírnění rizik a dostupné možnosti konfigurace.

Ochrana proti spuštění libovolného kódu

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ě platí, že pokud se aplikace pokusí změnit příznaky ochrany paměti, která již byla přidělena a obsahuje příznak ochrany spuštění, změna oprávnění selže a vrátí kód chyby (STATUS_DYNAMIC_CODE_BLOCKED).

Když zabráníte nastavení příznaku spuštění, funkce zabránění spuštění dat Windows 10 a Windows 11 pak může chránit před ukazatelem na instrukce nastaveným na tuto paměť a spuštěním tohoto kódu.

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

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 omezení rizik blokuje načítání imagí, pokud má image Access Control Entry (ACE), která uděluje přístup k procesům s nízkou úrovní il a která nemá popisek důvěryhodnosti ACE. Implementuje ho správce paměti, který blokuje mapování souboru do paměti. Pokud se aplikace pokusí namapovat image s nízkou integritou, aktivuje STATUS_ACCESS_DENIED chybu. 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

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 omezení rizik blokuje načtení image, pokud se zjistí, že je image 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, aktivuje STATUS_ACCESS_DENIED chybu.

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

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. Podrobnosti o tomto zmírnění rizik najdete na blogu Posílení zabezpečení Windows 10 s nulovým zmírněním zneužití.

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

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)

Popis

Ochrana toku řízení (CFG) zmírňuje riziko útočníků využívajících ohrožení zabezpečení poškození paměti tím, že chrání nepřímá volání funkcí. Útočník může například pomocí chyby zabezpečení přetečení vyrovnávací paměti přepsat paměť obsahující ukazatel na funkci a nahradit tento ukazatel funkce ukazatelem na spustitelný kód podle vlastního výběru (který by také mohl být vložen do programu).

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 striktní CFG – Ve striktním režimu musí být všechny binární soubory načtené do procesu zkompilovány pro Ochranu toku řízení (nebo v nich nesmí být žádný spustitelný kód , například knihovny DLL prostředků), aby bylo možné je 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.

Zabránění spuštění dat (DEP)

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 převodní rutiny ATL – Tato možnost konfigurace zakáže emulaci převodní rutiny ATL. Knihovna šablon ActiveX ATL je navržená tak, aby byla co nejmenší a nejrychlejší. Ke zmenšení binární velikosti by se použila technika nazývaná převodní rutina. Převod dat se obvykle považuje za interakci mezi 32bitovými a 16bitovými aplikacemi, ale v ATL nejsou žádné 16bitové komponenty. Aby bylo možné optimalizovat velikost binárního souboru, atl ukládá strojový kód do paměti, která není zarovnaná se slovy (vytváří menší binární soubor), a pak tento kód přímo vyvolá. Komponenty ATL kompilované pomocí sady Visual Studio 7.1 nebo starší (Visual Studio 2003) nepřidělují tuto paměť jako spustitelný soubor – emulace thunk tento problém s kompatibilitou řeší. Aplikace, které mají binární model rozšíření (například Internet Explorer 11), musí mít povolenou emulaci převodu souborů ATL.

Zakázat body rozšíření

Popis

Toto omezení rizik zakáže různé rozšiřovací body pro aplikaci, které se můžou použít k vytvoření trvalosti nebo zvýšení oprávnění škodlivého obsahu.

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 omezení rizik se knihovny DLL AppInit nenačtou. 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 zmírnění také zabraňuje načtení tohoto staršího editoru IME do zadané desktopové aplikace pro Windows.
  • Zavěšení událostí systému Windows – Aplikace může volat rozhraní API SetWinEventHook, aby se zaregistroval zájem o probíhající událost. Je zadána knihovna DLL, kterou lze vložit do procesu. Toto zmírnění vynutí, aby se zavěšení publikovalo do procesu registrace a nespustilo se v procesu prostřednictvím vložené 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

Popis

Win32k.sys poskytuje útočníkovi širokou oblast útoku. Jako součást režimu jádra se často cílí jako řídicí vektor pro aplikace, které jsou v izolovaném prostoru (sandbox). 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 je při vytvoření jiné než grafické uživatelské rozhraní, ale při prvním volání win32k.sys nebo prostřednictvím volání rozhraní API pro IsGuiThread.

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

Popis

Toto omezení rizik zabraňuje aplikaci v vytváření nových podřízených aplikací. 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 nějakého důvodu spouští podřízené aplikace, například podpůrné hypertextové odkazy, které spouštějí prohlížeč nebo externí prohlížeč, nebo které v počítači spouští jiné nástroje, je tato funkce poškozena.

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

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. Toto je běžná taktika používaná kódem prostředí. 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í získat přístup k této paměti, vygeneruje STATUS_GUARD_PAGE_VIOLATION. Zmírnění této výjimky zpracuje a pokud instrukce pro přístup neprojde ověřením, proces se ukončí.

Důležité informace o kompatibilitě

Toto zmírnění je primárně problém u aplikací, jako jsou ladicí programy, aplikace v izolovaném prostoru (sandbox), aplikace používající DRM nebo aplikace implementující antiladě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.dll
  • flash*.ocx
  • jscript*.ocx
  • vbscript.dll
  • vgx.dll
  • mozjs.dll
  • xul.dll
  • acrord32.dll
  • acrofx32.dll
  • acroform.api

Kromě toho povolením EAF+ toto zmírnění rizik přidá ochranu PAGE_GUARD na stránku, která obsahuje hlavičku "MZ", první 2 bajty hlavičky SYSTÉMU DOS v souboru PE, což je aspekt obsahu známé paměti, který shellcode může hledat, aby mohl identifikovat potenciálně zajímavé moduly 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)

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á funkce ASLR vynutí přenesení všech knihoven DLL v rámci 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 v imagi na proces, povinná funkce ASLR vynutí převést knihovny DLL a soubory EXE, které se nepřihlásily k 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. V případě přenesení a náhodného umístění binárních souborů by toto zmírnění rizik mělo být spárováno s náhodným přidělením paměti (ASLR zdola nahoru).

Důležité informace o kompatibilitě

Tento efekt kompatibility ASLR je obvykle omezen na starší aplikace, které byly vytvořeny pomocí kompilátorů, které vytvořily předpoklady o základní adrese binárního souboru nebo vymazané informace o přemístění základu. 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 ve skutečném umístění v paměti.

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 souboru Windows PE obsahuje absolutní adresy a kompilátor také vygeneruje [tabulku základního přemístění, kterou může zavaděč použít k vyhledání všech relativních odkazů na paměť a jejich posunu, aby je bylo možné aktualizovat, pokud se binární soubor nenačte na upřednostňovanou 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ě vynucená ochrana zásobníku nabízí robustní ochranu před zneužitím ROP, protože uchovává záznam zamýšleného toku spuštění programu. Pro zajištění bezproblémového přijetí ekosystému a kompatibility aplikací nabízí Systém Windows tuto ochranu jako model výslovného souhlasu, aby vývojáři mohli tuto ochranu získat vlastním tempem.

Důležité informace o kompatibilitě

Hardwarově vynucená ochrana zásobníku funguje pouze na čipových sadách s podporou hardwarových stínových zásobníků, technologie CET (Control-flow Enforcement Technology) společnosti Intel 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ůže dojít k chybovému ukončení nebo vysokému využití 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ů – Toto zmírnění rizik můžete povolit tak, aby se vynucování pro všechny moduly místo kompatibilních modulů.

Import filtrování adres (IAF)

Popis

Zmírnění rizik Import filtrování adres (IAF) pomáhá zmírnit riziko nežádoucí změny toku řízení aplikace úpravou tabulky importních adres (IAT) tak, aby při volání této funkce přesměrovávala na libovolný kód útočníka. Ú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.

Na paměťových stránkách pro všechna chráněná rozhraní API se používá ochrana PAGE_GUARD . Když se někdo pokusí získat přístup k této paměti, vygeneruje STATUS_GUARD_PAGE_VIOLATION. Zmírnění této výjimky zpracuje a pokud instrukce pro přístup neprojde ověřením, proces se ukončí.

Toto omezení rizik chrání následující rozhraní API systému Windows:

  • 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

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 překrytí 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ělovat paměť (ASLR zespoda 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á 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í kompatibilních s povinnou funkcí ASLR (rebasing) je také kompatibilní s jinou entropií ASLR zdola nahoru. 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 (očekávají základní adresu nižší než 4 GB), a proto nebudou kompatibilní s možností vysoké entropie (kterou lze zakázat).

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ělení paměti (ASLR zdola nahoru) nemá žádný režim auditování.

Simulovat provádění (SimExec)

Popis

Simulovat spuštění (SimExec) je omezení rizik 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. Potom tuto funkci zkontroluje a provede zpětně v paměti, aby našel předchozí pokyn CALL, aby zjistil, jestli se funkce a instrukce CALL shodují a jestli se RET nezachytilo.

Rozhraní API zachycená tímto zmírněním rizik jsou:

  • 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

Pokud se zjistí miniaplikace ROP, 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 zmírnění je nekompatibilní se zmírněním rizik pro libovolnou ochranu 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 vyvolání rozhraní API (CallerCheck)

Popis

Ověřit vyvolání rozhraní API (CallerCheck) je zmírnění pro techniky ROP (Return-Oriented Programming), které ověřují, že od platného volajícího byla volána citlivá rozhraní API. 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á tímto zmírněním rizik jsou:

  • 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

Pokud se zjistí miniaplikace ROP, 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 zmírnění je nekompatibilní se zmírněním rizik pro libovolnou ochranu 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ěření řetězců výjimek (SEHOP) je zmírněním rizik v porovnání s technikou zneužití se strukturovanou obslužnou rutinou 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. Vzhledem k tomu, že seznam obslužné rutiny je dynamický, je uložený v zásobníku. Útočník může použít chybu zabezpečení přetečení zásobníku a pak přepsat obslužnou rutinu výjimky ukazatelem na kód podle volby útočníka.

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ěz výjimek končí na známé konečné obslužné rutině 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é, že aplikace převezme závislost na poškození řetězu výjimek. Některé aplikace jsou však ovlivněny drobnými změnami v časování, které se můžou projevit jako konflikt časování, který v aplikaci odhalí latentní chybu s více vlákny.

Možnosti konfigurace

Poznámka

Ověřte, že řetězy výjimek (SEHOP) nemají žádný režim auditování.

Ověřit použití popisovačů

Popis

Ověření použití popisovače je zmírnění, které pomáhá chránit před útočníkem pomocí existujícího popisovače pro přístup k chráněnému objektu. Popisovač je odkaz na chráněný objekt. Pokud kód aplikace odkazuje na neplatný popisovač, může to znamenat, že se nežádoucí osoba pokouší použít popisovač, který už dříve zaznamenal (ale o kterém počítání odkazů na aplikaci nebude vědět). 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ě

Toto zmírnění rizik může mít vliv na aplikace, které přesně nesledovaly odkazy na popisovače a které tyto operace nezabalily do obslužných rutin výjimek.

Možnosti konfigurace

Poznámka

Použití popisovače ověření nemá žádný režim auditování.

Ověřit integritu haldy

Popis

Zmírnění integrity haldy ověření zvyšuje úroveň ochrany zmírnění haldy ve Windows tím, že způsobuje ukončení aplikace v případě zjištění 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 přidělení haldy ještě není označené 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á žádný režim auditování.

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 se kontrola podpisu nezdaří, knihovna DLL se nenačte a vyvolá výjimku, která vrátí stav 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

Zmírnění Ověřit integritu zásobníku (StackPivot) pomáhá chránit před útokem Stack Pivot, což je útok ROP, kdy útočník vytvoří falešný zásobník v paměti haldy a pak aplikaci nasává, aby se vracela do falešného zásobníku, který řídí tok provádění.

Toto omezení rizik zachycuje mnoho rozhraní API systému Windows a kontroluje hodnotu ukazatele zásobníku. Pokud adresa ukazatele zásobníku nespadne mezi dolní a horní část zásobníku, zaznamená se událost, a pokud není v režimu auditování, proces se ukončí.

Rozhraní API zachycená tímto zmírněním rizik jsou:

  • 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

Důležité informace o kompatibilitě

Aplikace, které používají falešné zásobníky, jsou ovlivněny a existuje také malé riziko odhalení drobných chyb časování 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 zmírnění je nekompatibilní se zmírněním rizik pro libovolnou ochranu 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.

Tip

Chcete se dozvědět více? Engage s komunitou Microsoft Security v naší technické komunitě: Microsoft Defender for Endpoint Tech Community.