Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A biztonsági rés kiaknázása elleni védelem speciális védelmet nyújt a vállalati rendszergazdák és informatikai szakemberek által a szoftverek fordítása és terjesztése után alkalmazható alkalmazások számára.
Ez a cikk segít megérteni, hogyan működik a biztonsági rés kiaknázása elleni védelem szabályzatszinten és egyéni kockázatcsökkentési szinten is, hogy segítsen a biztonsági rés kiaknázása elleni védelmi szabályzatok sikeres létrehozásában és alkalmazásában.
A kockázatcsökkentések alkalmazása
A biztonsági rés kiaknázása elleni védelem kockázatcsökkentései alkalmazásonként vannak alkalmazva.
Minden program saját beállításjegyzék-bejegyzéssel rendelkezik, amely szabályozza, hogy mely kockázatcsökkentések alkalmazhatók. Ezeket a beállításokat a Rendszer a MitigationOptions beállításjegyzék-bejegyzésében ()HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\*ImageFileName*\MitigationOptions tárolja. Ezek a kockázatcsökkentési beállítások a program újraindításakor lépnek érvénybe. Mindaddig aktívak maradnak, amíg ön nem módosítja őket, és nem indítja újra a programot.
Fontos
A képfájl végrehajtási beállításai csak a fájlnév vagy elérési út megadását teszik lehetővé. Nem adhat meg verziószámot, architektúrát vagy más megkülönböztetőt. Célozza az enyhítéseket az egyedi nevű vagy elérési útvonalú alkalmazásokra. Csak olyan eszközökön alkalmazza őket, amelyeken tesztelte az alkalmazás ezen verzióját és architektúráját.
A kockázatcsökkentéseket EGY XML-fájlon keresztül konfigurálhatja a PowerShell, a Csoportházirend vagy az MDM használatával. XML-fájl használata esetén a rendszer beállítja Önnek a beállításjegyzék bejegyzéseit.
Biztonsági rés kiaknázása elleni védelem alaphelyzetbe állítása
Fontos
Ha az XML-fájlt üzembe helyező csoportházirend vagy MDM-szabályzat már nincs kényszerítve, az XML-konfigurációs fájl által telepített beállítások nem törlődnek automatikusan.
A biztonsági rés kiaknázása elleni védelem beállításainak eltávolításához exportálja az XML-konfigurációt egy tiszta Windows 10 vagy Windows 11 eszközről, és telepítse az új XML-fájlt. Másik lehetőségként Microsoft egy XML-fájlt is biztosít az Windows Biztonság alapkonfigurációk részeként a biztonsági rések elleni védelem beállításainak alaphelyzetbe állításához.
A biztonsági rések védelmi beállításainak a PowerShell használatával történő alaphelyzetbe állításához futtassa az alábbi parancsot az XML-fájl alaphelyzetbe állítási házirendjének alkalmazásához, és állítsa vissza a kockázatcsökkentési beállításokat az alapértelmezett beállításokra:
Set-ProcessMitigation -PolicyFilePath EP-reset.xml
Az alábbi XML-fájl a Windows Biztonság Baselines mellékelt EP-reset.xml fájl. Ez a fájl alkalmazásonkénti kockázatcsökkentési felülbírálásokat határoz meg, amelyek visszaállítják a kihasználási védelmi beállítások alapértelmezett beállításait az olyan gyakori alkalmazások esetében, mint a Microsoft Office, a webböngészők és a média lejátszók:
<?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>
Kockázatcsökkentési referencia
Az alábbi biztonsági rések elleni védelemre vonatkozó megoldások mindegyike tartalmaz leírást, kompatibilitási szempontokat és konfigurációs beállításokat.
Tetszőleges programkód futtatása elleni védelem
A következő szakaszok az tetszőleges kódőr működését, kompatibilitási hatását és konfigurációs lehetőségeit ismertetik.
Leírás
A Tetszőleges programkód futtatása elleni védelem véd a rosszindulatú támadók ellen, amelyek a választott kódot egy memóriabiztonsági biztonsági résen keresztül töltik be a memóriába, és képesek végrehajtani azt.
A tetszőleges kódőr megvédi az alkalmazásokat a dinamikusan generált kódok végrehajtásától (például magából az exe-ből vagy egy dll-ből), amelyek nincsenek betöltve. A Tetszőleges programkód futtatása elleni védelem úgy működik, hogy megakadályozza, hogy a memória végrehajthatóként legyen megjelölve. Amikor egy alkalmazás memóriát próbál lefoglalni, ellenőrizzük a védelmi jelzőket. (A memória olvasási, írási és/vagy végrehajtási védelmi jelzőkkel foglalható le.) Ha a lefoglalás megkísérli megadni a végrehajtási védelmi jelzőt, a memóriafoglalás meghiúsul, és hibakódot ad vissza (STATUS_DYNAMIC_CODE_BLOCKED). Hasonlóképpen, ha egy alkalmazás megkísérli módosítani a már lefoglalt és a végrehajtás védelmi jelzőt tartalmazó memória védelmi jelzőit, akkor az engedély módosítása sikertelen lesz, és hibakódot ad vissza (STATUS_DYNAMIC_CODE_BLOCKED).
A végrehajtási jelző beállításának megakadályozásával a Windows 10 és a Windows 11 adatvégrehajtás megakadályozása funkciója védelmet nyújthat az adott memóriára beállított utasításmutatóval és a kód futtatásával szemben.
Kompatibilitási szempontok
Az Arbitrary Code Guard megakadályozza, hogy bármilyen memória végrehajthatóként legyen lefoglalva, ami kompatibilitási problémákat vet fel az olyan megközelítések esetén, mint a just-in-time (JIT) fordítók. A legtöbb modern böngésző például natív kódba fordítja a JavaScriptet a teljesítmény optimalizálása érdekében. A kockázatcsökkentés támogatásához újra kell tervezni őket, hogy a JIT-fordítást a védett folyamaton kívülre lehessen helyezni. Az egyéb alkalmazások, amelyeknek a kialakítása dinamikusan generál kódot szkriptekből vagy más köztes nyelvekből, hasonlóképpen nem kompatibilisek ezzel a kockázatcsökkentéssel.
Konfigurációs beállítások
Szál elutasításának engedélyezése – A kockázatcsökkentés konfigurálható úgy, hogy az egyes szálak kikapcsolják ezt a védelmet. A fejlesztőnek meg kell írnia az alkalmazást ennek a kockázatcsökkentésnek a tudatában, és meg kell hívnia a SetThreadInformation API-t, amelynek ThreadInformation paramétere ThreadDynamicCodePolicy értékre van állítva ahhoz, hogy dinamikus kódot lehessen végrehajtani ezen a szálon.
Csak naplózás – Ezt a kockázatcsökkentést naplózási módban engedélyezheti az alkalmazás esetleges kompatibilitási hatásainak méréséhez. A naplózási események ezután megtekinthetők az eseménynaplóban vagy a Végponthoz készült Defender speciális veszélyforrás-keresés funkciójának használatával.
Alacsony integritású lemezképek blokkolása
A következő szakaszok ismertetik az alacsony integritású képek működését, kompatibilitási hatását és konfigurációs beállításait.
Leírás
Az alacsony integritású képek blokkolása megakadályozza, hogy az alkalmazás betöltse a nem megbízható fájlokat, általában azért, mert azokat egy védőfalas böngészőből töltötték le az internetről.
Ez a kockázatcsökkentő intézkedés blokkolja a képek betöltését, ha a kép rendelkezik olyan hozzáférés-vezérlési bejegyzéssel (ACE), amely hozzáférést biztosít az alacsony integritási szintű (Low IL) folyamatok számára, és nem tartalmaz megbízhatósági címkét tartalmazó ACE-t. A memóriakezelő implementálta, amely megakadályozza, hogy a fájl a memóriába legyen leképezve. Ha egy alkalmazás alacsony integritású rendszerképet kísérel meg leképezni, STATUS_ACCESS_DENIED hibát vált ki. Az integritási szintek működésével kapcsolatos részletekért lásd a következőt: Kötelező integritás-vezérlés.
Kompatibilitási szempontok
Az alacsony integritású képek blokkolása megakadályozza, hogy az alkalmazás betöltse az internetről letöltött fájlokat. Ha az alkalmazás-munkafolyamat letöltött képek betöltését igényli, győződjön meg arról, hogy egy magasabb megbízhatósági folyamatból tölti le őket, vagy explicit módon újracímkézett a kockázatcsökkentés alkalmazása érdekében.
Konfigurációs beállítások
Csak naplózás – Ezt a kockázatcsökkentést naplózási módban engedélyezheti az alkalmazás esetleges kompatibilitási hatásainak méréséhez. A naplózási események ezután megtekinthetők az eseménynaplóban vagy a Végponthoz készült Microsoft Defender speciális veszélyforrás-keresés funkciójának használatával.
Távoli képek blokkolása
A következő szakaszok ismertetik a távoli képek blokkolásának működését, kompatibilitási hatását és konfigurációs beállításait.
Leírás
A Távoli lemezképek blokkolása segít megakadályozni, hogy az alkalmazás betöltsön távoli eszközön tárolt fájlokat, például egy UNC-megosztást. A Távoli lemezképek blokkolása segít megakadályozni a bináris fájlok betöltését a memóriába, amelyek a támadó által vezérelt külső eszközön találhatók.
Ez az enyhítő intézkedés megakadályozza a képek betöltését, ha a rendszer úgy állapítja meg, hogy a kép távoli eszközön található. A memóriakezelő implementálta, amely megakadályozza, hogy a fájl a memóriába legyen leképezve. Ha egy alkalmazás megpróbál leképezni egy távoli fájlt, STATUS_ACCESS_DENIED hibát vált ki.
Kompatibilitási szempontok
A távoli rendszerképek letiltása megakadályozza, hogy az alkalmazás képeket töltsen be a távoli eszközökről. Ha az alkalmazás fájlokat vagy beépülő modulokat tölt be távoli eszközökről, akkor az nem lesz kompatibilis ezzel a kockázatcsökkentéssel.
Konfigurációs beállítások
Csak naplózás – Ezt a kockázatcsökkentést naplózási módban engedélyezheti az alkalmazás esetleges kompatibilitási hatásainak méréséhez. A naplózási események ezután megtekinthetők az eseménynaplóban vagy a Végponthoz készült Microsoft Defender speciális veszélyforrás-keresés funkciójának használatával.
Nem megbízható betűkészletek blokkolása
A következő szakaszok a nem megbízható betűtípusok letiltásának működését, kompatibilitási hatását és konfigurációs beállításait ismertetik.
Leírás
A Nem megbízható betűkészletek blokkolása csökkenti a betűkészlet-elemzés hibájának kockázatát, amely miatt a támadó képessé válhat kódot futtatni az eszközön. A GDI csak a windows\fonts könyvtárba telepített betűtípusokat tölti be feldolgozásra.
Ez a kockázatcsökkentés a GDI-n belül valósul meg, amely ellenőrzi a fájl helyét. Ha a fájl nem szerepel a rendszer betűtípus-könyvtárában, a betűtípus nem töltődik be elemzésre, és a hívás sikertelen lesz.
Ez a kockázatcsökkentés a Windows 10 1607-as és újabb verzióiban, valamint a Windows 11-ben elérhető beépített kockázatcsökkentésen felüli, amely a betűtípus-elemzést a kernelből egy felhasználói módú alkalmazástárolóba helyezi át. A betűtípus-elemzésen alapuló biztonsági rések kihasználása ezért védőfal mögé helyezett és elkülönített környezetben történik, ami jelentősen csökkenti a kockázatot.
Kompatibilitási szempontok
A rendszer betűkészlet-könyvtárán kívüli betűtípusokat leggyakrabban webes betűtípusokkal használják. A modern böngészők, például a Microsoft Edge, GDI helyett DirectWrite használnak, és nem érintik őket. Az örökölt böngészőkre azonban, például az Internet Explorer 11-re (és az új Microsoft Edge IE módjára) azonban hatással lehetnek, különösen az olyan alkalmazások esetében, mint az Office 365, amelyek szimbólumokat használnak a felhasználói felület megjelenítéséhez.
Konfigurációs beállítások
Csak naplózás – Ezt a kockázatcsökkentést naplózási módban engedélyezheti az alkalmazás esetleges kompatibilitási hatásainak méréséhez. A naplózási események ezután megtekinthetők az eseménynaplóban vagy a Végponthoz készült Microsoft Defender speciális veszélyforrás-keresés funkciójának használatával.
Kódintegritás-védelem
A következő szakaszok a kódintegritási védelem működését, kompatibilitási hatását és konfigurációs lehetőségeit ismertetik.
Leírás
A kódintegritás-védelem biztosítja, hogy az egy folyamatba betöltött összes bináris fájl digitálisan aláírt a Microsoft által. A kódintegritás-védő WHQL-aláírásokat (Windows hardverminőségi tesztkörnyezeteket) tartalmaz, amelyek lehetővé teszik a WHQL által jóváhagyott illesztőprogramok futtatását a folyamaton belül.
Ez a kockázatcsökkentő intézkedés a memóriakezelőben van megvalósítva, amely megakadályozza a bináris állomány memóriába való leképezését. Ha olyan bináris fájlt próbál betölteni, amelyet nem a Microsoft írt alá, a memóriakezelő a STATUS_INVALID_IMAGE_HASH hibát adja vissza. A memóriakezelő szintjén történő blokkolás révén ez megakadályozza a folyamat által betöltött bináris fájlok és a folyamatba injektált bináris fájlok betöltését is.
Kompatibilitási szempontok
Ez a kockázatcsökkentés kifejezetten blokkolja a Microsoft által nem aláírt bináris fájlokat. Ezért nem kompatibilis a legtöbb nem Microsoft-szoftverrel, kivéve, ha a szoftvert a Microsoft Store terjeszti (és digitálisan aláírja), és a Microsoft Store által aláírt képek betöltésének engedélyezése lehetőség van kiválasztva.
Konfigurációs beállítások
A Microsoft Store által aláírt képek betöltésének is engedélyezése – A Microsoft Store által terjesztett alkalmazásokat a Microsoft Store digitálisan aláírja, és ennek a konfigurációnak a hozzáadásával lehetővé teszi, hogy az alkalmazás betöltse az áruház minősítési folyamatán végighaladó bináris fájlokat.
Csak naplózás – Ezt a kockázatcsökkentést naplózási módban engedélyezheti az alkalmazás esetleges kompatibilitási hatásainak méréséhez. A naplózási események ezután megtekinthetők az eseménynaplóban vagy a Végponthoz készült Microsoft Defender speciális veszélyforrás-keresés funkciójának használatával.
Vezérlési folyamat védelme (CFG)
A következő szakaszok a folyamatvédelem működését, kompatibilitási hatását és konfigurációs lehetőségeit ismertetik.
Leírás
A Vezérlésfolyam-szabályozás (CFG) a közvetett függvényhívások védelmével csökkenti a memóriasérülések biztonsági réseit kihasználó támadások kockázatát. Egy támadó például egy puffertúlcsordulási biztonsági rést használva felülírhatja a függvénymutatót tartalmazó memóriát, és lecserélheti a függvénymutatót egy tetszőleges végrehajtható kódra (amelyet a programba is beszúrhat).
Ezt a kockázatcsökkentést úgy biztosítja a rendszer, hogy a fordításkor egy másik ellenőrzést injektál. Az egyes közvetett függvényhívások előtt további utasítások jelennek meg, amelyek ellenőrzik, hogy a cél egy érvényes hívási cél-e a hívás előtt. Ha a cél nem érvényes hívási cél, akkor az alkalmazás leáll. Ezért csak a CFG-támogatással lefordított alkalmazások használhatják ezt a kockázatcsökkentést.
Az érvényes cél ellenőrzését a Windows-kernel biztosítja. A végrehajtható fájlok betöltésekor a rendszer kinyeri a közvetett hívási célok metaadatait betöltési időben, és érvényes hívási célként jelöli meg azokat. Emellett, ha a memória le van foglalva és végrehajthatóként van megjelölve (például a generált kódhoz), a rendszer ezeket a memóriahelyeket is érvényes hívási célokként jelöli meg az olyan mechanizmusok támogatása érdekében, mint a JIT-fordítás.
Kompatibilitási szempontok
Mivel az alkalmazásokat a CFG támogatásához kell lefordítani, implicit módon deklarálják a vele való kompatibilitásukat. Ezért a legtöbb alkalmazásnak engedélyeznie kell ezt a kockázatcsökkentést a működése során. Mivel ezek az ellenőrzések a bináris fájlba vannak lefordítva, az alkalmazható konfiguráció csak a Windows-kernelen belüli ellenőrzések letiltására vonatkozik. Más szóval a kockázatcsökkentés alapértelmezés szerint be van kapcsolva, de konfigurálhatja úgy a Windows-kernelt, hogy mindig "igen" értéket adjon vissza, ha később megállapítja, hogy az alkalmazás fejlesztője nem észlelt kompatibilitási problémát a tesztelés során, ami ritka lehet.
Konfigurációs beállítások
Szigorú CFG használata – Szigorú módban a folyamatba betöltött összes bináris fájlt le kell fordítani a Vezérlésfolyam-szabályozás számára (vagy nem tartalmazhatnak végrehajtható kódot – például erőforrás-dll-eket) a betöltéshez.
Megjegyzés:
A Vezérlésfolyam-szabályozás nem rendelkezik naplózási móddal. A bináris fájlok úgy vannak lefordítva, hogy engedélyezve van ez a kockázatcsökkentés.
Adatvégrehajtás megakadályozása (DEP)
Az alábbi szakaszok az adatvégrehajtás megelőzésének működését, kompatibilitási hatását és konfigurációs lehetőségeit ismertetik.
Leírás
Az adatvégrehajtás megakadályozása (DEP) megakadályozza az olyan memória végrehajtását, amely nem lett explicit módon végrehajthatóként lefoglalva. A DEP segít megakadályozni a támadó tevékenységét, aki kártékony kódot szúr be a folyamatba, például egy puffertúlcsorduláson keresztül, majd végrehajtja a kódot.
Ha olyan memóriacímre próbálja beállítani az utasításmutatót, amely nincs végrehajthatóként megjelölve, a processzor kivételt (általános védelmi szabálysértést) jelez, ami az alkalmazás összeomlását okozza.
Kompatibilitási szempontok
Minden x64-, ARM- és Arm64-végrehajtható fájlhoz alapértelmezés szerint engedélyezve van a DEP, és nem tiltható le. Mivel az alkalmazás nem hajtható végre DEP nélkül, a rendszer kompatibilitást feltételez.
Minden x86 (32 bites) bináris fájlhoz alapértelmezés szerint engedélyezve van a DEP, de a DEP folyamatonként letiltható. Előfordulhat, hogy egyes régi régi alkalmazások, amelyek általában a Windows XP SP2 előtt lettek kifejlesztve, nem kompatibilisek a DEP-vel. Az ilyen alkalmazások általában dinamikusan generálnak kódot (például JIT-fordítás), vagy olyan régebbi kódtárakra (például az ATL régebbi verzióira) hivatkoznak, amelyek dinamikusan generálják a kódot.
Konfigurációs beállítások
Atl Thunk emuláció engedélyezése – Ez a beállítás szabályozza az ATL Thunk emulációt. Az ATL, az ActiveX sablontára úgy lett kialakítva, hogy a lehető legkisebb és leggyorsabb legyen. A bináris méret csökkentése érdekében egy úgynevezett csonkolás technikát használ. A thunkingot gyakran a 32 és 16 bites környezetek közötti együttműködéshez kapcsolják, de az ATL-nek nincsenek 16 bites összetevői. Ehelyett a helytakarékosság érdekében az ATL olyan gépkódot tárol a memóriában, amely nincs szóhoz igazítva. Ez egy kisebb bináris fájlt hoz létre. Az ATL ezután közvetlenül futtatja a kódot. A Visual Studio 7.1 vagy korábbi verzióval (2003 Visual Studio) lefordított ATL-verziók nem jelölik meg végrehajthatóként ezt a memóriát. A thunk emuláció megoldja ezt a problémát. A bináris kiterjesztésű modellel (például Internet Explorer 11) rendelkező alkalmazásoknak engedélyezni kell az ATL Thunk emulációt.
Hosszabbítópontok letiltása
A következő szakaszok ismertetik a bővítménypontok letiltásának működését, kompatibilitási hatását és konfigurációs beállításait.
Leírás
A bővítménypontok letiltása elleni megoldás letiltja az alkalmazások különböző bővítménypontjait, amelyek felhasználhatók a rosszindulatú tartalmak megőrzésére vagy jogosultságainak emelésére.
Ezek közé tartoznak a következők:
- AppInit DLL-ek – Amikor egy folyamat elindul, a rendszer betölti a megadott DLL-t az újonnan elindított folyamat környezetébe, mielőtt meghívná a belépési pont függvényét. Az AppInit DLL-ekkel kapcsolatos részletek itt találhatók. Ennek az elhárítási intézkedésnek az alkalmazásával az AppInit DLL-ek nem töltődnek be. A Windows 7-től kezdődően az AppInit DLL-eket digitálisan alá kell írni az itt leírtak szerint. Emellett a Windows 8 kezdődően az AppInit DLL-ek nem töltődnek be, ha a SecureBoot engedélyezve van, az itt leírtak szerint.
- Régi írásjegybevivők – Az írásjegybevivő (IME) lehetővé teszi a felhasználó számára, hogy olyan nyelven írjon be szöveget, amely több karaktert tartalmaz, mint amennyi a billentyűzeten megjeleníthető. Harmadik felek is létrehozhatnak IME-ket. Egy rosszindulatú IME hitelesítő adatokat vagy egyéb bizalmas információkat szerezhet meg ebből a bevitel rögzítéséből. Egyes, örökölt IME-ként említett IME-k csak a Windows asztali alkalmazásaiban működnek, az UWP-alkalmazásokban nem. Ez a kockázatcsökkentés azt is megakadályozza, hogy ez a régi IME betöltődjön a megadott Windows asztali alkalmazásba.
- Windows-eseményre vonatkozó beavatkozási pontok – Az alkalmazások meghívhatják a SetWinEventHook API-t, hogy regisztrálja egy megrendezésre kerülő esemény iránti érdeklődést. Meg van adva egy DLL, amely beszúrható a folyamatba. Ez az enyhítő intézkedés kikényszeríti, hogy a hook a regisztráló processzhoz legyen továbbítva, ahelyett, hogy egy injektált DLL-en keresztül, folyamaton belül futna.
Kompatibilitási szempontok
A bővítménypontok többségét viszonylag ritkán használják, így a kompatibilitási hatás általában kicsi, különösen az egyes alkalmazások szintjén. Az egyik szempont az, ha a felhasználók nem Microsoft örökölt csevegőalkalmazásokat használnak, amelyek nem működnek a védett alkalmazással.
Konfigurációs beállítások
Ehhez a kockázatcsökkentéshez nincsenek konfigurációs beállítások.
Megjegyzés:
A bővítménypontok letiltása nem rendelkezik naplózási móddal.
Win32k rendszerhívások letiltása
A következő szakaszok ismertetik, hogyan működik a Win32k rendszer hívásainak letiltása, a kompatibilitási hatás és a konfigurációs beállítások.
Leírás
A Win32k.sys széles körű támadási felületet biztosít egy támadó számára. Kernelmódú összetevőként gyakran a védőfalas alkalmazások feloldóvektoraként használják. Ez a kockázatcsökkentés megakadályozza a win32k.sys fájlba irányuló hívásokat azáltal, hogy letiltja, hogy egy szál grafikus felhasználói felületi szállá konvertálja magát, amely ezután hozzáférést kap a Win32k függvények meghívásához. A szál létrehozásakor a szál nem grafikus felhasználói felületű, de a win32k.sys fájlba irányuló első híváskor vagy az IsGuiThread API-hívásán keresztül konvertálódik.
Kompatibilitási szempontok
Ez a kockázatcsökkentés dedikált, nem felhasználói felületi folyamatokhoz készült. Számos modern böngésző például folyamatelkülönítést használ, és nem felhasználói felületi folyamatokat foglal magában. Ez a kockázatcsökkentés minden olyan alkalmazást érint, amely grafikus felhasználói felületet jelenít meg egyetlen folyamat használatával.
Konfigurációs beállítások
Csak naplózás – Ezt a kockázatcsökkentést naplózási módban engedélyezheti az alkalmazás esetleges kompatibilitási hatásainak méréséhez. A naplózási események ezután megtekinthetők az eseménynaplóban vagy a Végponthoz készült Microsoft Defender speciális veszélyforrás-keresés funkciójának használatával.
Gyermekfolyamatok letiltása
A következő szakaszok bemutatják, hogyan működik a gyermekfolyamatok nem engedélyezett csökkentése, a kompatibilitási hatás és a konfigurációs beállítások.
Leírás
A „Ne engedélyezze a gyermekfolyamatokat” biztonsági intézkedés megakadályozza, hogy az alkalmazás új gyermekfolyamatokat hozzon létre. Az ellenfelek által gyakran alkalmazott technika, hogy az eszközön egy megbízható folyamatot indítanak el kártékony bemenettel (ez egy „living off the land” típusú támadás), ami gyakran megköveteli egy másik alkalmazás elindítását az eszközön. Ha nincsenek jogos indokok arra, hogy egy alkalmazás elindítson egy gyermekfolyamatot, ez a kockázatcsökkentés csökkenti ezt a lehetséges támadási vektort. A kockázatcsökkentés egy tulajdonság beállításával alkalmazható a folyamat tokenjén, amely megakadályozza egy tokent létrehozását a gyermekfolyamathoz a STATUS_CHILD_PROCESS_BLOCKED hibaüzenettel.
Kompatibilitási szempontok
Ha az alkalmazás bármilyen okból elindítja a gyermekalkalmazásokat, például a böngészőt vagy külső böngészőt megnyitó hivatkozásokat, vagy amelyek más segédprogramokat indítanak el a számítógépen, ez a funkció megszakad ezzel a kockázatcsökkentéssel.
Konfigurációs beállítások
Csak naplózás – Ezt a kockázatcsökkentést naplózási módban engedélyezheti az alkalmazás esetleges kompatibilitási hatásainak méréséhez. A naplózási események ezután megtekinthetők az eseménynaplóban vagy a Végponthoz készült Microsoft Defender speciális veszélyforrás-keresés funkciójának használatával.
Exportcímek szűrése
A következő szakaszok az exportálási címszűrés működését, kompatibilitási hatását és konfigurációs beállításait ismertetik.
Leírás
Az Exportcímszűrés (EAF) csökkenti annak a kockázatát, hogy a kártékony kódok az összes betöltött modul exportálási címtáblájában keresnek olyan modulokat, amelyek a támadásukhoz hasznos API-kat tartalmaznak. A shellcode gyakran alkalmazza ezt a taktikát. Az ilyen támadások kockázatának mérséklése érdekében ez a kockázatcsökkentés három gyakran támadott modult véd:
- ntdll.dll
- kernelbase.dll
- kernel32.dll
A kockázatcsökkentés védi az [exportálási könyvtár azon memóriaoldalát, amely az exportcímtáblára mutat. Ezen a memórialapon a PAGE_GUARD védelem van alkalmazva. Amikor valaki megpróbál hozzáférni ehhez a memóriaterülethez, az STATUS_GUARD_PAGE_VIOLATION hibát eredményez. A védelmi mechanizmus kezeli ezt a kivételt, és ha az elérési utasítás nem megy át az érvényesítésen, a folyamat megszakad.
Kompatibilitási szempontok
Ez az enyhítő intézkedés elsősorban az olyan alkalmazások esetében jelent problémát, mint a hibakeresők, a homokozóba zárt alkalmazások, a DRM-et használó alkalmazások vagy a hibakeresés elleni technológiát alkalmazó alkalmazások.
Konfigurációs beállítások
A biztonsági résekkel gyakran visszaélő modulok hozzáférésének ellenőrzése – Ez a lehetőség, más néven EAF+, védelmet biztosít más gyakran támadott modulok számára:
mshtml.dllflash*.ocxjscript*.ocxvbscript.dllvgx.dllmozjs.dllxul.dllacrord32.dllacrofx32.dllacroform.api
Emellett az EAF+ engedélyezésével ez a kockázatcsökkentés hozzáadja a PAGE_GUARD védelmet az "MZ" fejlécet tartalmazó oldalhoz, amely egy PE-fájl DOS-fejlécének első 2 bájtja, ez az ismert memóriatartalom egyik aspektusa, amelyet a rendszerhéjkód megkereshet a memóriában található potenciálisan érdekes modulok azonosítása érdekében.
Csak naplózás – Ezt a kockázatcsökkentést naplózási módban engedélyezheti az alkalmazás esetleges kompatibilitási hatásainak méréséhez. A naplózási események ezután megtekinthetők az eseménynaplóban vagy a Végponthoz készült Microsoft Defender speciális veszélyforrás-keresés funkciójának használatával.
Véletlenszerűsítés kényszerítése képek esetén (kényszerített ASLR)
A következő szakaszok a kötelező ASLR működését, kompatibilitási hatását és konfigurációs lehetőségeit ismertetik.
Leírás
A Véletlenszerű címtérelrendezés (ASLR) csökkenti annak kockázatát, hogy a támadó a rendszer memóriaelrendezésének ismeretét felhasználva végrehajtsa a folyamat memóriájában már megtalálható és végrehajthatóként megjelölt kódot. Ez mérsékelheti annak kockázatát, hogy egy támadó olyan technikákat használjon, mint a visszatérés a libcbe, ahol a támadó beállítja a környezetet, majd módosítja a visszatérési címet a meglévő kód végrehajtásához a támadó céljának megfelelő kontextussal.
A kötelező ASLR a folyamat összes DLL-je számára új alap megadását kényszeríti. A fejlesztő a /DYNAMICBASE szerkesztőkapcsolóval engedélyezheti az ASLR-t, és ez az enyhítés ugyanazzal a hatással jár.
Amikor a memóriakezelő leképezi a futtatható képet a folyamat címtartományába, a kötelező ASLR kényszerrel új báziscímre helyezi azokat a DLL-eket és EXE-ket, amelyek nem választották az ASLR használatát. Vegye figyelembe azonban, hogy az új alap megadása nem tartalmaz entrópiát, ezért kiszámítható helyre helyezhető a memóriában. Az új alappal beálított és véletlenszerűen elhelyezett bináris fájlok esetében ezt a kockázatcsökkentést véletlenszerű memóriafoglalásokkal (ASLR alulról felfelé) kell párosítani.
Kompatibilitási szempontok
Az ASLR kompatibilitási hatása általában azokra a régebbi alkalmazásokra korlátozódik, amelyek olyan fordítók használatával készültek, amelyek feltételezték egy bináris fájl alapcímét, vagy elvették az alapáthelyezés információit. Ez kiszámíthatatlan hibákhoz vezethet, mivel a végrehajtási folyamat a várt helyre próbál ugrani a memória tényleges helye helyett.
Konfigurációs beállítások
Az áthelyezési információiktól megfosztott lemezképek tiltása - Ez a beállítás letiltja azon lemezképek betöltését, amelyekből eltávolították az áthelyezési információkat. A Windows PE fájlformátum abszolút címeket tartalmaz, és a fordító létrehoz egy [alapáthelyezés táblázatot is, amellyel a betöltő megtalálhatja az összes relatív memóriahivatkozást és azok eltolását, így frissíthetők, ha a bináris fájl nem töltődik be az előnyben részesített alapcímen. Egyes régebbi alkalmazások eltávolítják ezt az információt az éles verziókból, ezért ezeket a bináris fájlokat nem lehet másik báziscímre áthelyezni. Ez a megoldás megakadályozza az ilyen bináris fájlok betöltését (ahelyett, hogy lehetővé tenné számukra a betöltést az előnyben részesített alapcímükön).
Megjegyzés:
A képekhez tartozó véletlenszerűsítés kényszerítése (kötelező ASLR) beállításhoz nincs audit mód.
Hardveresen érvényesített veremvédelem
Leírás
A hardveresen kikényszerített veremvédelem erős védelmet nyújt a ROP-alapú támadások ellen. Egy program tervezett végrehajtási folyamatának nyilvántartásával működik. A zökkenőmentes bevezetés és az alkalmazáskompatibilitás támogatása érdekében Windows ezt a védelmet nyújtja opt-in modellként. A fejlesztők saját tempójukban engedélyezhetik.
Kompatibilitási szempontok
A hardveresen kikényszerített veremvédelem csak azokon a lapkakészleteken működik, amelyek támogatják a hardveres árnyékvermeket, az Intel Control-flow Enforcement Technologyját (CET) vagy az AMD árnyékvermeit.
Ha .NET Framework-alapú alkalmazásokat futtat, a hardveresen kikényszerített veremvédelem a .NET Framework 7-es verzióval (külön engedélyezéssel) vagy újabbal működik. Ha régebbi verziót használ, összeomlással vagy magas processzorhasználattal szembesülhet. Ezek a problémák naplózási módban is előfordulhatnak, vagy ha csak kompatibilis modulokat céloznak meg.
Konfigurációs beállítások
Csak naplózás – Ezt a kockázatcsökkentést naplózási módban engedélyezheti az alkalmazás esetleges kompatibilitási hatásainak méréséhez. A naplózási események ezután megtekinthetők az eseménynaplóban vagy a Végponthoz készült Defender speciális veszélyforrás-keresés funkciójának használatával.
Kényszerítés az összes modulra a kompatibilis modulok helyett – Ezt a védelmi intézkedést engedélyezheti a Kényszerítés az összes modulra a kompatibilis modulok helyett beállítással.
Importálási címek szűrése (IAF)
Leírás
Az importcímszűrés (IAF) kockázatcsökkentése segít mérsékelni annak kockázatát, hogy egy támadó módosítja egy alkalmazás vezérlési folyamatát azáltal, hogy módosítja az importcímtáblát (IAT) úgy, hogy a támadó által választott tetszőleges kódra irányítsa át a függvény meghívásakor. A támadók ezzel a módszerrel eltéríthetik az irányítást, illetve elfoghatják, megvizsgálhatják és potenciálisan blokkolhatják a bizalmas API-k hívásait.
Az összes védett API memórialapja rendelkezik a PAGE_GUARD védelemmel. Amikor valaki megpróbál hozzáférni ehhez a memóriaterülethez, az STATUS_GUARD_PAGE_VIOLATION hibát eredményez. A védelmi mechanizmus kezeli ezt a kivételt, és ha az elérési utasítás nem megy át az érvényesítésen, a folyamat megszakad.
Ez a kockázatcsökkentés a következő Windows API-kat védi:
GetProcAddressGetProcAddressForCallerLoadLibraryALoadLibraryExALoadLibraryWLoadLibraryExWLdrGetProcedureAddressLdrGetProcedureAddressExLdrGetProcedureAddressForCallerLdrLoadDllVirtualProtectVirtualProtectExVirtualAllocVirtualAllocExNtAllocateVirtualMemoryNtProtectVirtualMemoryCreateProcessACreateProcessWWinExecCreateProcessAsUserACreateProcessAsUserWGetModuleHandleAGetModuleHandleWRtlDecodePointerDecodePointer
Kompatibilitási szempontok
Az API-hívásokat elfogó legitim alkalmazásokat ez a védelmi intézkedés észlelheti, és emiatt egyes alkalmazások összeomolhatnak. Ilyenek például a biztonsági szoftverek és az alkalmazás-kompatibilitási rétegek.
Konfigurációs beállítások
Csak naplózás – Ezt a kockázatcsökkentést naplózási módban engedélyezheti az alkalmazás esetleges kompatibilitási hatásainak méréséhez. A naplózási események ezután megtekinthetők az eseménynaplóban vagy a Végponthoz készült Microsoft Defender speciális veszélyforrás-keresés funkciójának használatával.
A memóriafoglalások véletlenszerűvé tétele (alulról felfelé irányuló ASLR)
Leírás
A memóriafoglalások (ASLR alulról felfelé) véletlenszerűsítése entrópiát ad az áthelyezésekhez, így a helyük véletlenszerű, ezért kevésbé kiszámítható. Ez a kockázatcsökkentés kötelező ASLR-t igényel.
A 32 bites címtér mérete gyakorlati korlátozásokat okoz a hozzáadható entrópiában, ezért a 64 bites alkalmazások megnehezítik a támadók számára a memória helyének megbecslését.
Kompatibilitási szempontok
A kötelező ASLR-rel (újrabázisozással) működő alkalmazások többsége az alulról felfelé építkező ASLR-rel is működik. Egyes alkalmazások mutató-csonkolással kapcsolatos problémái lehetnek, ha helyi mutatókat mentenek 32 bites változókba. Ezek az alkalmazások 4 GB-nál kisebb alapcímet várnak, így nem fognak működni a magas entrópia beállítással. Szükség esetén letilthatja a magas entrópiát.
Konfigurációs beállítások
Ne használjon magas entrópiát – ez a beállítás letiltja a magas entrópiás ASLR használatát, amely 24 bit entrópiát (1 TB varianciát) ad hozzá a 64 bites alkalmazások alulról felfelé történő felosztásához.
Megjegyzés:
A Véletlenszerű memóriafoglalás (ASLR alulról felfelé) nem rendelkezik naplózási móddal.
Végrehajtás szimulálása (SimExec)
Leírás
A szimulált végrehajtás (SimExec) csak a 32 bites alkalmazásokhoz használható kockázatcsökkentési megoldás. Ez segít ellenőrizni, hogy a bizalmas API-k hívásai visszatérnek-e a megbízható hívó függvényekhez. Ezt úgy teszi, hogy elfogja a bizalmas API-kba irányuló hívásokat, majd szimulálja ezeknek az API-knak a végrehajtását a kódolt szerelvény nyelvi utasításainak végigjárásával, és megkeresi a RET utasítást, amelynek vissza kell térnie a hívóhoz. Ezután megvizsgálja ezt a függvényt, és visszafelé halad a memóriában, és megkeresi az előző CALL utasítást annak megállapításához, hogy a függvény és a CALL utasítás egyezik-e, és hogy a RET nem lett-e elfogva.
A kockázatcsökkentés által elfogott API-k a következők:
LoadLibraryALoadLibraryWLoadLibraryExALoadLibraryExWLdrLoadDllVirtualAllocVirtualAllocExNtAllocateVirtualMemoryVirtualProtectVirtualProtectExNtProtectVirtualMemoryHeapCreateRtlCreateHeapCreateProcessACreateProcessWCreateProcessInternalACreateProcessInternalWNtCreateUserProcessNtCreateProcessNtCreateProcessExCreateRemoteThreadCreateRemoteThreadExNtCreateThreadExWriteProcessMemoryNtWriteVirtualMemoryWinExecCreateFileMappingACreateFileMappingWCreateFileMappingNumaWNtCreateSectionMapViewOfFileMapViewOfFileExMapViewOfFileFromAppLdrGetProcedureAddressForCaller
Ha a rendszer észleli az ROP kisalkalmazást, a folyamat leáll.
Kompatibilitási szempontok
Az API-elfogást végző alkalmazások, különösen a biztonsági szoftverek kompatibilitási problémákat okozhatnak ezzel a kockázatcsökkentéssel.
Ez a kockázatcsökkentés nem kompatibilis a Tetszőleges programkód futtatása elleni védelem kockázatcsökkentéssel.
Konfigurációs beállítások
Csak naplózás – Ezt a kockázatcsökkentést naplózási módban engedélyezheti az alkalmazás esetleges kompatibilitási hatásainak méréséhez. A naplózási események ezután megtekinthetők az eseménynaplóban vagy a Végponthoz készült Microsoft Defender speciális veszélyforrás-keresés funkciójának használatával.
API-meghívás ellenőrzése (CallerCheck)
Leírás
Az API-meghívás ellenőrzése (CallerCheck) a visszatérésorientált programozási (ROP) technikák kockázatcsökkentése, amely ellenőrzi, hogy a bizalmas API-k egy érvényes hívótól lettek-e meghívva. Ez a kockázatcsökkentő eljárás ellenőrzi az átadott visszatérési címet, majd heurisztikusan visszafelé disassemblál, hogy a visszatérési cím előtt egy hívást találjon, és megállapítsa, hogy a hívás célcíme megegyezik-e a függvénynek átadott paraméterrel.
A kockázatcsökkentés által elfogott API-k a következők:
LoadLibraryALoadLibraryWLoadLibraryExALoadLibraryExWLdrLoadDllVirtualAllocVirtualAllocExNtAllocateVirtualMemoryVirtualProtectVirtualProtectExNtProtectVirtualMemoryHeapCreateRtlCreateHeapCreateProcessACreateProcessWCreateProcessInternalACreateProcessInternalWNtCreateUserProcessNtCreateProcessNtCreateProcessExCreateRemoteThreadCreateRemoteThreadExNtCreateThreadExWriteProcessMemoryNtWriteVirtualMemoryWinExecCreateFileMappingACreateFileMappingWCreateFileMappingNumaWNtCreateSectionMapViewOfFileMapViewOfFileExMapViewOfFileFromAppLdrGetProcedureAddressForCaller
Ha a rendszer észleli az ROP kisalkalmazást, a folyamat leáll.
Kompatibilitási szempontok
Az API-elfogást végző alkalmazások, különösen a biztonsági szoftverek kompatibilitási problémákat okozhatnak ezzel a kockázatcsökkentéssel.
Ez a kockázatcsökkentés nem kompatibilis a Tetszőleges programkód futtatása elleni védelem kockázatcsökkentéssel.
Konfigurációs beállítások
Csak naplózás – Ezt a kockázatcsökkentést naplózási módban engedélyezheti az alkalmazás esetleges kompatibilitási hatásainak méréséhez. A naplózási események ezután megtekinthetők az eseménynaplóban vagy a Végponthoz készült Microsoft Defender speciális veszélyforrás-keresés funkciójának használatával.
Kivételláncok ellenőrzése (SEHOP)
Leírás
A kivételláncok ellenőrzése (SEHOP) a Structured Exception Handler (SEH) felülírására épülő kihasználási technika elleni védelmi mechanizmus. A strukturált kivételkezelés az a folyamat, amellyel egy alkalmazás kérheti egy adott kivétel kezelését. A kivételkezelők össze vannak kapcsolva, így ha egy kivételkezelő úgy dönt, hogy nem kezel egy adott kivételt, akkor az tovább adható a lánc következő kivételkezelőjének, amíg az egyik úgy nem dönt, hogy kezeli azt. Mivel a kezelők listája dinamikus, a veremben van tárolva. A támadó egy veremtúlcsordulási sebezhetőséget kihasználva ezután felülírhatja a kivételkezelőt egy, a támadó által választott kódra mutató mutatóval.
Ez a kockázatcsökkentés a SEH kialakítására támaszkodik, ahol minden SEH-bejegyzés tartalmaz egy mutatót a kivételkezelőhöz, és egy mutatót a kivétellánc következő kezelője felé. Ezt a védelmi mechanizmust a kivételkezelő hívja meg, amely egy kivétel bekövetkezésekor ellenőrzi az SEH-láncot. Ellenőrzi, hogy:
- Minden kivételláncrekord a veremhatáron belül van
- Minden kivételrekord igazítva van
- Egyetlen kivételkezelő mutató sem mutat a veremre
- Nincsenek visszafelé mutató mutatók
- A kivétellánc egy ismert végső kivételkezelővel végződik
Ha ezek az ellenőrzések sikertelenek, a kivételkezelés megszakad, és a kivétel nem lesz kezelve.
Kompatibilitási szempontok
A SEHOP-kompatibilitási problémák viszonylag ritkák. Ritkán fordul elő, hogy egy alkalmazás a kivétellánc sérülésétől teszi magát függővé. Egyes alkalmazásokat azonban érintenek az időzítés apró változásai, amelyek versenyhelyzetként jelenhetnek meg, amely rejtett többszálú hibát tár fel az alkalmazásban.
Konfigurációs beállítások
Megjegyzés:
A Kivételláncok érvényesítése (SEHOP) nem rendelkezik auditálási móddal.
Leírókezelés ellenőrzése
Leírás
A fogantyúhasználat ellenőrzése egy olyan kockázatcsökkentő intézkedés, amely segít megakadályozni, hogy egy támadó egy meglévő fogantyúval hozzáférjen egy védett objektumhoz. A handle egy védett objektumra mutató hivatkozás. Ha az alkalmazáskód érvénytelen fogantyúra hivatkozik, az azt jelezheti, hogy egy támadó olyan fogantyút próbál használni, amelyet korábban eltárolt (de amelyről az alkalmazás hivatkozásszámlálása nem tudna). Ha az alkalmazás érvénytelen objektumot próbál használni, ahelyett, hogy egyszerűen null értéket ad vissza, az alkalmazás kivételt (STATUS_INVALID_HANDLE) jelez.
Ez a kockázatcsökkentés automatikusan alkalmazva lesz a Windows Áruház alkalmazásaira.
Kompatibilitási szempontok
Ez a kockázatcsökkentés hatással lehet azokra az alkalmazásokra, amelyek nem követték pontosan a leíróhivatkozásokat, és amelyek nem csomagolták be ezeket a műveleteket a kivételkezelőkbe.
Konfigurációs beállítások
Megjegyzés:
A Leírókezelés ellenőrzése nem rendelkezik naplózási móddal.
Heap integritásának ellenőrzése
Leírás
A halommemória-integritás ellenőrzése kockázatcsökkentés növeli a halommemória-kockázatcsökkentések védelmi szintjét a Windowsban azáltal, hogy az alkalmazás leáll, ha halommemória-sérülést észlel. A kockázatcsökkentések közé tartoznak a következők:
- HEAP-fogantyú felszabadításának megakadályozása
- Újabb ellenőrzés végrehajtása a halommemória-foglalások kiterjesztett blokkfejlécén
- Annak ellenőrzése, hogy a heapfoglalások nincsenek-e már használatban lévőként megjelölve
- Védőoldalak hozzáadása a minimális méretet meghaladó nagyméretű foglalásokhoz, halomszegmensekhez és alszegmensekhez
Kompatibilitási szempontok
Ez a kockázatcsökkentés már alapértelmezés szerint alkalmazva van a 64 bites és a Windows Vista vagy újabb rendszert célzó 32 bites alkalmazások esetében. A Windows XP vagy korábbi rendszerből származó örökölt alkalmazások vannak a legnagyobb kockázatnak kitéve, bár a kompatibilitási problémák ritkán fordulnak elő.
Konfigurációs beállítások
Megjegyzés:
A kupacintegritás ellenőrzése nem rendelkezik audit móddal.
A rendszerkép függőségeinek integritásellenőrzése
Leírás
A rendszerképfüggőségek érvényesítése nevű enyhítő intézkedés segít védelmet nyújtani az olyan támadásokkal szemben, amelyek megpróbálnak más kódot behelyettesíteni a Windows binárisaihoz statikusan kapcsolt DLL-ek helyére. A DLL telepítési technika visszaél a betöltő keresési mechanizmusával, és kártékony kódot szúr be, amely a rosszindulatú kódok emelt szintű környezetben való futtatására használható. Amikor a betöltő betölt egy Windows által aláírt bináris fájlt, majd betölti a bináris fájltól függő dll-eket, a bináris fájlok ellenőrzése biztosítja, hogy azok is windowsos binárisként legyenek digitálisan aláírva. Ha nem sikerül az aláírás ellenőrzése, a DLL nem töltődik be, és kivételt jelez, és STATUS_INVALID_IMAGE_HASH állapotot ad vissza.
Kompatibilitási szempontok
A kompatibilitási problémák nem gyakoriak. A windowsos bináris fájlok helyi privát verzióra való lecserélésétől függő alkalmazásokra is hatással van, és kisebb a kockázata annak, hogy apró időzítési hibákat tárnak fel a többszálas alkalmazásokban.
Konfigurációs beállítások
Csak naplózás – Ezt a kockázatcsökkentést naplózási módban engedélyezheti az alkalmazás esetleges kompatibilitási hatásainak méréséhez. A naplózási események ezután megtekinthetők az eseménynaplóban vagy a Végponthoz készült Microsoft Defender speciális veszélyforrás-keresés funkciójának használatával.
Halomintegritás ellenőrzése (StackPivot)
Leírás
A veremintegritás ellenőrzése (StackPivot) enyhítés segít védelmet nyújtani a Stack Pivot támadással szemben, amely egy olyan ROP-támadás, amelyben a támadó hamis vermet hoz létre a kupacmemóriában, majd ráveszi az alkalmazást, hogy a hamis verembe térjen vissza, amely a végrehajtás menetét vezérli.
Ez a kockázatcsökkentés számos Windows API-t elfog, és vizsgálja a veremmutató értékét. Ha a veremmutató címe nem a verem alja és teteje közé esik, akkor a rendszer eseményt rögzít, és ha nincs audit módban, a folyamatot leállítják.
A kockázatcsökkentés által elfogott API-k a következők:
LoadLibraryALoadLibraryWLoadLibraryExALoadLibraryExWLdrLoadDllVirtualAllocVirtualAllocExNtAllocateVirtualMemoryVirtualProtectVirtualProtectExNtProtectVirtualMemoryHeapCreateRtlCreateHeapCreateProcessACreateProcessWCreateProcessInternalACreateProcessInternalWNtCreateUserProcessNtCreateProcessNtCreateProcessExCreateRemoteThreadCreateRemoteThreadExNtCreateThreadExWriteProcessMemoryNtWriteVirtualMemoryWinExecCreateFileMappingACreateFileMappingWCreateFileMappingNumaWNtCreateSectionMapViewOfFileMapViewOfFileExMapViewOfFileFromAppLdrGetProcedureAddressForCaller
Kompatibilitási szempontok
Ez hatással van a hamis vermet használó alkalmazásokra, és fennáll annak a kockázata is, hogy apró időzítési hibákat tárnak fel a többszálas alkalmazásokban. Az API-elfogást végző alkalmazások, különösen a biztonsági szoftverek kompatibilitási problémákat okozhatnak ezzel a kockázatcsökkentéssel.
Ez a kockázatcsökkentés nem kompatibilis a Tetszőleges programkód futtatása elleni védelem kockázatcsökkentéssel.
Konfigurációs beállítások
Csak naplózás – Ezt a kockázatcsökkentést naplózási módban engedélyezheti az alkalmazás esetleges kompatibilitási hatásainak méréséhez. A naplózási események ezután megtekinthetők az eseménynaplóban vagy a Végponthoz készült Microsoft Defender speciális veszélyforrás-keresés funkciójának használatával.