Verwijzing voor bescherming tegen misbruik
Van toepassing op:
- Plan 1 voor Microsoft Defender voor Eindpunt
- Plan 2 voor Microsoft Defender voor Eindpunt
- Microsoft Defender XDR
Wilt u Microsoft Defender voor Eindpunt ervaren? Meld u aan voor een gratis proefversie.
Exploit Protection biedt geavanceerde beveiligingen voor toepassingen die ondernemingsbeheerders en IT-professionals kunnen toepassen nadat een ontwikkelaar software compileert en distribueert.
Dit artikel helpt u te begrijpen hoe exploit protection werkt, zowel op beleidsniveau als op het individuele risicobeperkingsniveau, om u te helpen bij het bouwen en toepassen van beveiligingsbeleid voor misbruik.
Hoe beperkingen worden toegepast
Risicobeperkingen voor misbruikbeveiliging worden per toepassing toegepast.
Beperkingen worden geconfigureerd via een registervermelding voor elk programma waarvoor u beveiligingen configureert. Deze instellingen worden opgeslagen in de registervermelding MitigationOptions voor elk programma (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\*ImageFileName*\MitigationOptions
). Ze worden van kracht wanneer u het programma opnieuw start en blijven van kracht totdat u ze wijzigt en het programma opnieuw start.
Belangrijk
Met uitvoeropties voor afbeeldingsbestanden kunt u alleen een bestandsnaam of pad opgeven, en niet een versienummer, architectuur of een andere differentiator. Wees voorzichtig met het beperken van apps met unieke namen of paden en pas de beperkingen alleen toe op apparaten waarop u die versie en die architectuur van de toepassing hebt getest.
Als u risicobeperkingen voor misbruikbeveiliging configureert met behulp van een XML-configuratiebestand met behulp van PowerShell, groepsbeleid of MDM, worden bij het verwerken van dit XML-configuratiebestand afzonderlijke registerinstellingen voor u geconfigureerd.
Exploit Protection opnieuw instellen
Belangrijk
Wanneer het beleid dat het XML-bestand distribueert niet meer wordt afgedwongen, worden de instellingen die door dit XML-configuratiebestand zijn geïmplementeerd, niet automatisch verwijderd.
Als u instellingen voor misbruikbeveiliging wilt verwijderen, exporteert u de XML-configuratie van een schoon Windows 10 of Windows 11 apparaat en implementeert u dit nieuwe XML-bestand. Microsoft biedt ook een XML-bestand als onderdeel van de Windows-beveiliging Basislijnen voor het opnieuw instellen van instellingen voor misbruikbeveiliging.
Gebruik de volgende opdracht om instellingen voor exploit protection opnieuw in te stellen met behulp van PowerShell:
Set-ProcessMitigation -PolicyFilePath EP-reset.xml
Hieronder vindt u EP-reset.xml die is gedistribueerd met de Windows-beveiligingsbasislijnen:
<?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>
Verwijzing naar beperking
In de volgende secties worden de beveiligingen beschreven die worden geboden door elke Exploit Protection-beperking, de compatibiliteitsoverwegingen voor de beperking en de beschikbare configuratieopties.
Willekeurige codebeveiliging
Beschrijving
Willekeurige codebeveiliging helpt u te beschermen tegen een kwaadwillende aanvaller die de code van zijn keuze in het geheugen laadt via een beveiligingsprobleem met betrekking tot geheugenveiligheid en die code kan uitvoeren.
Willekeurige code guard beschermt een toepassing tegen het uitvoeren van dynamisch gegenereerde code (code die bijvoorbeeld niet wordt geladen vanuit de exe zelf of een dll). Willekeurige codebeveiliging werkt door te voorkomen dat geheugen wordt gemarkeerd als uitvoerbaar. Wanneer een toepassing probeert geheugen toe te wijzen, controleren we de beveiligingsvlaggen. (Geheugen kan worden toegewezen met beveiligingsvlaggen voor lezen, schrijven en/of uitvoeren.) Als de toewijzing probeert de vlag voor uitvoeringsbeveiliging op te nemen, mislukt de geheugentoewijzing en wordt een foutcode (STATUS_DYNAMIC_CODE_BLOCKED) geretourneerd. Op dezelfde manier mislukt de machtigingswijziging als een toepassing probeert de toegewezen beveiligingsvlaggen van geheugen te wijzigen en de vlag voor uitvoeringsbeveiliging bevat, en wordt vervolgens een foutcode (STATUS_DYNAMIC_CODE_BLOCKED) geretourneerd.
Door te voorkomen dat de uitvoeringsvlag wordt ingesteld, kan de functie gegevensuitvoeringspreventie van Windows 10 en Windows 11 vervolgens beveiligen tegen de instructieaanwijzer die is ingesteld op dat geheugen en die code uitvoert.
Informatie over compatibiliteit
Willekeurige codebeveiliging voorkomt het toewijzen van geheugen als uitvoerbaar bestand, wat een compatibiliteitsprobleem met benaderingen zoals JIT-compilers (Just-In-Time) vormt. De meeste moderne browsers compileren JavaScript bijvoorbeeld in systeemeigen code om de prestaties te optimaliseren. Om deze beperking te ondersteunen, moeten ze opnieuw worden ingericht om de JIT-compilatie buiten het beveiligde proces te verplaatsen. Andere toepassingen waarvan het ontwerp dynamisch code genereert op basis van scripts of andere tussenliggende talen, zijn op dezelfde manier niet compatibel met deze beperking.
Configuratieopties
Opt-out van thread toestaan - U kunt de beperking zo configureren dat een afzonderlijke thread zich kan afmelden voor deze beveiliging. De ontwikkelaar moet de toepassing schrijven met kennis van deze beperking en de SetThreadInformation-API aanroepen met de parameter ThreadInformation ingesteld op ThreadDynamicCodePolicy om dynamische code op deze thread uit te voeren.
Alleen controle - U kunt deze beperking inschakelen in de controlemodus om de mogelijke compatibiliteitsimpact op een toepassing te meten. Controlegebeurtenissen kunnen vervolgens worden weergegeven in de logboeken of met behulp van Geavanceerde opsporing in Defender voor Eindpunt.
Afbeeldingen met lage integriteit blokkeren
Beschrijving
Met Installatiekopieën met een lage integriteit blokkeren voorkomt u dat de toepassing bestanden laadt die niet worden vertrouwd, meestal omdat ze van internet zijn gedownload vanuit een sandboxbrowser.
Met deze beperking wordt het laden van afbeeldingen geblokkeerd als de installatiekopieën een ace (Access Control Entry) hebben die toegang verleent tot Low IL-processen en die geen vertrouwenslabel ACE heeft. Het wordt geïmplementeerd door het geheugenbeheer, waardoor het bestand niet kan worden toegewezen aan het geheugen. Als een toepassing probeert een afbeelding met een lage integriteit toe te wijzen, wordt er een STATUS_ACCESS_DENIED-fout geactiveerd. Zie Mandatory Integrity Control voor meer informatie over hoe integriteitsniveaus werken.
Informatie over compatibiliteit
Met afbeeldingen met een lage integriteit kunt u voorkomen dat de toepassing bestanden laadt die zijn gedownload van internet. Als uw toepassingswerkstroom vereist dat afbeeldingen worden geladen die worden gedownload, wilt u ervoor zorgen dat ze worden gedownload vanuit een proces met een hogere vertrouwensrelatie of expliciet opnieuw worden gelabeld om deze beperking toe te passen.
Configuratieopties
Alleen controle - U kunt deze beperking inschakelen in de controlemodus om de mogelijke compatibiliteitsimpact op een toepassing te meten. Controlegebeurtenissen kunnen vervolgens worden weergegeven in de logboeken of met behulp van Geavanceerde opsporing in Microsoft Defender voor Eindpunt.
Externe afbeeldingen blokkeren
Beschrijving
Het blokkeren van externe afbeeldingen helpt voorkomen dat de toepassing bestanden laadt die worden gehost op een extern apparaat, zoals een UNC-share. Het blokkeren van externe afbeeldingen helpt u te beschermen tegen het laden van binaire bestanden in het geheugen dat zich op een extern apparaat bevindt dat wordt beheerd door de aanvaller.
Deze beperking blokkeert het laden van afbeeldingen als wordt vastgesteld dat de installatiekopieën zich op een extern apparaat bevindt. Het wordt geïmplementeerd door het geheugenbeheer, waardoor het bestand niet kan worden toegewezen aan het geheugen. Als een toepassing probeert een extern bestand toe te wijzen, wordt er een STATUS_ACCESS_DENIED-fout geactiveerd.
Informatie over compatibiliteit
Externe installatiekopieën blokkeren voorkomt dat de toepassing afbeeldingen van externe apparaten laadt. Als uw toepassing bestanden of invoegtoepassingen van externe apparaten laadt, is deze niet compatibel met deze beperking.
Configuratieopties
Alleen controle - U kunt deze beperking inschakelen in de controlemodus om de mogelijke compatibiliteitsimpact op een toepassing te meten. Controlegebeurtenissen kunnen vervolgens worden weergegeven in de logboeken of met behulp van Geavanceerde opsporing in Microsoft Defender voor Eindpunt.
Niet-vertrouwde lettertypen blokkeren
Beschrijving
Als u niet-vertrouwde lettertypen blokkeert, wordt het risico op een fout in het parseren van lettertypen beperkt, waardoor de aanvaller code op het apparaat kan uitvoeren. Alleen lettertypen die zijn geïnstalleerd in de map windows\fonts worden geladen voor verwerking door GDI.
Deze beperking wordt geïmplementeerd in GDI, waarmee de locatie van het bestand wordt gevalideerd. Als het bestand zich niet in de map met systeemlettertypen bevindt, wordt het lettertype niet geladen voor parsering en mislukt die aanroep.
Deze beperking is een aanvulling op de ingebouwde beperking in Windows 10 1607 en hoger, en Windows 11, waarmee lettertypeparsering uit de kernel en in een app-container in gebruikersmodus wordt verplaatst. Elke aanval op basis van lettertypeparsering vindt als gevolg hiervan plaats in een sandbox- en geïsoleerde context, waardoor het risico aanzienlijk wordt verminderd. Zie de blog Hardening Windows 10 with zero-day exploit mitigations voor meer informatie over deze beperking.
Informatie over compatibiliteit
Het meest voorkomende gebruik van lettertypen buiten de map met systeemlettertypen is met weblettertypen. Moderne browsers, zoals Microsoft Edge, gebruiken DirectWrite in plaats van GDI en worden niet beïnvloed. Oudere browsers, zoals Internet Explorer 11 (en IE-modus in de nieuwe Microsoft Edge), kunnen echter wel worden beïnvloed, met name met toepassingen zoals Office 365, die lettertype-glyphs gebruiken om de gebruikersinterface weer te geven.
Configuratieopties
Alleen controle - U kunt deze beperking inschakelen in de controlemodus om de mogelijke compatibiliteitsimpact op een toepassing te meten. Controlegebeurtenissen kunnen vervolgens worden weergegeven in de logboeken of met behulp van Geavanceerde opsporing in Microsoft Defender voor Eindpunt.
Beveiliging van code-integriteit
Beschrijving
Beveiliging van code-integriteit zorgt ervoor dat alle binaire bestanden die in een proces worden geladen, digitaal worden ondertekend door Microsoft. Code Integrity Guard bevat WHQL-handtekeningen (Windows Hardware Quality Labs), waarmee WHQL-goedgekeurde stuurprogramma's binnen het proces kunnen worden uitgevoerd.
Deze beperking wordt geïmplementeerd in het geheugenbeheer, waardoor het binaire bestand niet kan worden toegewezen aan het geheugen. Als u probeert een binair bestand te laden dat niet is ondertekend door Microsoft, retourneert het geheugenmanger de fout STATUS_INVALID_IMAGE_HASH. Door te blokkeren op geheugenbeheerniveau voorkomt u toewijzing van zowel binaire bestanden die door het proces worden geladen als binaire bestanden die in het proces worden geïnjecteerd.
Informatie over compatibiliteit
Deze beperking blokkeert specifiek elk binair bestand dat niet is ondertekend door Microsoft. Als zodanig is het niet compatibel met de meeste niet-Microsoft-software, tenzij die software wordt gedistribueerd door (en digitaal ondertekend door) de Microsoft Store en de optie voor het laden van afbeeldingen die zijn ondertekend door de Microsoft Store is geselecteerd.
Configuratieopties
Ook het laden van installatiekopieën toestaan die zijn ondertekend door de Microsoft Store : toepassingen die worden gedistribueerd door de Microsoft Store worden digitaal ondertekend door de Microsoft Store. Als u deze configuratie toevoegt, kunnen binaire bestanden die het certificeringsproces van de store doorlopen, door de toepassing worden geladen.
Alleen controle - U kunt deze beperking inschakelen in de controlemodus om de mogelijke compatibiliteitsimpact op een toepassing te meten. Controlegebeurtenissen kunnen vervolgens worden weergegeven in de logboeken of met behulp van Geavanceerde opsporing in Microsoft Defender voor Eindpunt.
Controlestroombeveiliging (CFG)
Beschrijving
Met Controlestroombeveiliging (CFG) vermindert u het risico dat aanvallers beveiligingsproblemen met geheugenbeschadiging gebruiken door indirecte functieaanroepen te beveiligen. Een aanvaller kan bijvoorbeeld een kwetsbaarheid voor bufferoverloop gebruiken om geheugen met een functieaanwijzer te overschrijven en die functieaanwijzer te vervangen door een aanwijzer naar uitvoerbare code van zijn keuze (die ook in het programma kan worden geïnjecteerd).
Deze beperking wordt geboden door een andere controle te injecteren tijdens het compileren. Vóór elke indirecte functie-aanroep worden nog een instructies toegevoegd waarmee wordt gecontroleerd of het doel een geldig aanroepdoel is voordat het wordt aangeroepen. Als het doel geen geldig aanroepdoel is, wordt de toepassing beëindigd. Daarom kunnen alleen toepassingen die zijn gecompileerd met CFG-ondersteuning profiteren van deze beperking.
De controle op een geldig doel wordt geleverd door de Windows-kernel. Wanneer uitvoerbare bestanden worden geladen, worden de metagegevens voor indirecte aanroepdoelen tijdens het laden geëxtraheerd en gemarkeerd als geldige aanroepdoelen. Wanneer geheugen wordt toegewezen en gemarkeerd als uitvoerbaar (zoals voor gegenereerde code), worden deze geheugenlocaties ook gemarkeerd als geldige aanroepdoelen ter ondersteuning van mechanismen zoals JIT-compilatie.
Informatie over compatibiliteit
Omdat toepassingen moeten worden gecompileerd ter ondersteuning van CFG, declareren ze impliciet hun compatibiliteit ermee. De meeste toepassingen moeten daarom werken met deze beperking ingeschakeld. Omdat deze controles worden gecompileerd in het binaire bestand, is de configuratie die u kunt toepassen alleen het uitschakelen van controles binnen de Windows-kernel. Met andere woorden, de beperking is standaard ingeschakeld, maar u kunt de Windows-kernel configureren om altijd 'ja' te retourneren als u later vaststelt dat er een compatibiliteitsprobleem is dat de ontwikkelaar van de toepassing niet heeft ontdekt tijdens het testen, wat zeldzaam zou moeten zijn.
Configuratieopties
Strikte CFG gebruiken - In de strikte modus moeten alle binaire bestanden die in het proces zijn geladen, worden gecompileerd voor Controlestroombeveiliging (of er geen uitvoerbare code in hebben, zoals bron-dll's) om te kunnen worden geladen.
Opmerking
Controlestroombeveiliging heeft geen controlemodus. Binaire bestanden worden gecompileerd met deze beperking ingeschakeld.
Preventie van gegevensuitvoering (DEP)
Beschrijving
Preventie van gegevensuitvoering (DEP) voorkomt dat geheugen dat niet expliciet is toegewezen als uitvoerbaar, kan worden uitgevoerd. DEP beschermt tegen een aanvaller die schadelijke code in het proces invoert, zoals via een bufferoverloop, en die code vervolgens uitvoert.
Als u de instructieaanwijzer probeert in te stellen op een geheugenadres dat niet is gemarkeerd als uitvoerbaar, genereert de processor een uitzondering (schending van de algemene beveiliging), waardoor de toepassing vastloopt.
Informatie over compatibiliteit
Voor alle x64-, ARM- en ARM-64-uitvoerbare bestanden is DEP standaard ingeschakeld en kan dit niet worden uitgeschakeld. Omdat een toepassing niet wordt uitgevoerd zonder DEP, wordt compatibiliteit verondersteld.
Voor alle binaire x86-bestanden (32-bits) is DEP standaard ingeschakeld, maar DEP kan per proces worden uitgeschakeld. Sommige oudere toepassingen, meestal toepassingen die zijn ontwikkeld vóór Windows XP SP2, zijn mogelijk niet compatibel met DEP. Dergelijke toepassingen genereren code doorgaans dynamisch (bijvoorbeeld JIT-compileren) of koppelen aan oudere bibliotheken (zoals oudere versies van ATL) die dynamische code genereren.
Configuratieopties
ATL Thunk-emulatie inschakelen - Met deze configuratieoptie wordt ATL Thunk-emulatie uitgeschakeld. ATL, de ActiveX-sjabloonbibliotheek, is ontworpen om zo klein en snel mogelijk te zijn. Om de binaire grootte te verkleinen, wordt een techniek gebruikt die thunking wordt genoemd. Thunking wordt doorgaans gebruikt voor interactie tussen 32-bits en 16-bits toepassingen, maar er zijn hier geen 16-bits onderdelen voor ATL. Om te optimaliseren voor binaire grootte slaat ATL computercode op in het geheugen dat niet is uitgelijnd (waardoor een kleiner binair bestand wordt gemaakt) en roept deze code vervolgens rechtstreeks aan. ATL-onderdelen die zijn gecompileerd met Visual Studio 7.1 of eerder (Visual Studio 2003) wijzen dit geheugen niet toe als uitvoerbaar. Met thunk-emulatie wordt dit compatibiliteitsprobleem opgelost. Toepassingen met een binair extensiemodel (zoals Internet Explorer 11) moeten vaak ATL Thunk-emulatie hebben ingeschakeld.
Uitbreidingspunten uitschakelen
Beschrijving
Met deze beperking worden verschillende uitbreidingspunten voor een toepassing uitgeschakeld, die kunnen worden gebruikt om persistentie tot stand te brengen of bevoegdheden voor schadelijke inhoud te verhogen.
Dit zijn:
- AppInit-DLL's : wanneer een proces wordt gestart, laadt het systeem de opgegeven DLL in de context van het zojuist gestarte proces voordat de ingangspuntfunctie wordt aangeroepen. Meer informatie over AppInit DLL's vindt u hier. Als deze beperking is toegepast, worden AppInit-DLL's niet geladen. Vanaf Windows 7 moeten AppInit DLL's digitaal worden ondertekend, zoals hier wordt beschreven. Bovendien worden AppInit-DLL's vanaf Windows 8 niet geladen als SecureBoot is ingeschakeld, zoals hier wordt beschreven.
- Verouderde IME's - Met een Input Method Editor (IME) kan een gebruiker tekst typen in een taal met meer tekens dan op een toetsenbord kan worden weergegeven. Derden kunnen IME's maken. Een kwaadwillende IME kan referenties of andere gevoelige informatie verkrijgen uit deze invoeropname. Sommige IME's, ook wel verouderde IME's genoemd, werken alleen op Windows Desktop-apps en niet op UWP-apps. Deze beperking voorkomt ook dat deze verouderde IME wordt geladen in de opgegeven Windows Desktop-app.
- Windows Event Hooks - Een toepassing kan de SetWinEventHook-API aanroepen om interesse te registreren in een gebeurtenis die plaatsvindt. Er wordt een DLL-bestand gespecificeerd dat in het proces kan worden opgenomen. Deze beperking dwingt af dat de hook wordt gepost in het registratieproces in plaats van dat deze in het proces wordt uitgevoerd via een geïnjecteerd DLL-bestand.
Informatie over compatibiliteit
De meeste van deze uitbreidingspunten worden relatief weinig gebruikt, dus de compatibiliteitsimpact is doorgaans klein, met name op een afzonderlijk toepassingsniveau. De enige overweging is of gebruikers verouderde IME's van derden gebruiken die niet werken met de beveiligde toepassing.
Configuratieopties
Er zijn geen configuratieopties voor deze beperking.
Opmerking
Extensiepunten uitschakelen heeft geen controlemodus.
Systeemoproepen van Win32k uitschakelen
Beschrijving
Win32k.sys biedt een breed aanvalsoppervlak voor een aanvaller. Als onderdeel van de kernelmodus is het vaak bedoeld als een escape-vector voor toepassingen die in de sandbox zijn geplaatst. Deze beperking voorkomt aanroepen naar win32k.sys door te voorkomen dat een thread zichzelf converteert naar een GUI-thread, die vervolgens toegang krijgt om Win32k-functies aan te roepen. Een thread is niet-GUI wanneer deze wordt gemaakt, maar wordt geconverteerd bij de eerste aanroep naar win32k.sys of via een API-aanroep naar IsGuiThread.
Informatie over compatibiliteit
Deze beperking is ontworpen voor processen die toegewezen niet-UI-processen zijn. Veel moderne browsers gebruiken bijvoorbeeld procesisolatie en bevatten niet-UI-processen. Elke toepassing die een GUI weergeeft met behulp van één proces, wordt beïnvloed door deze beperking.
Configuratieopties
Alleen controle - U kunt deze beperking inschakelen in de controlemodus om de mogelijke compatibiliteitsimpact op een toepassing te meten. Controlegebeurtenissen kunnen vervolgens worden weergegeven in de logboeken of met behulp van Geavanceerde opsporing in Microsoft Defender voor Eindpunt.
Onderliggende processen niet toestaan
Beschrijving
Deze beperking voorkomt dat een toepassing nieuwe onderliggende toepassingen maakt. Een veelgebruikte techniek van kwaadwillende gebruikers is het initiëren van een vertrouwd proces op het apparaat met schadelijke invoer (een 'living off the land'-aanval), waarvoor vaak een andere toepassing op het apparaat moet worden gestart. Als er geen legitieme redenen zijn waarom een toepassing een onderliggend proces zou starten, blokkeert deze beperking die mogelijke aanvalsvector. De beperking wordt toegepast door een eigenschap in te stellen op het procestoken, waardoor het maken van een token voor het onderliggende proces wordt geblokkeerd met het foutbericht STATUS_CHILD_PROCESS_BLOCKED.
Informatie over compatibiliteit
Als uw toepassing om wat voor reden dan ook onderliggende toepassingen start, zoals het ondersteunen van hyperlinks waarmee een browser of een externe browser wordt gestart, of die andere hulpprogramma's op de computer starten, wordt deze functionaliteit verbroken wanneer deze beperking wordt toegepast.
Configuratieopties
Alleen controle - U kunt deze beperking inschakelen in de controlemodus om de mogelijke compatibiliteitsimpact op een toepassing te meten. Controlegebeurtenissen kunnen vervolgens worden weergegeven in de logboeken of met behulp van Geavanceerde opsporing in Microsoft Defender voor Eindpunt.
Exportadresfiltering
Beschrijving
Exportadresfiltering (EAF) vermindert het risico van schadelijke code die de exportadrestabel van alle geladen modules bekijkt op zoek naar modules die nuttige API's voor hun aanval bevatten. Dit is een bekende tactiek die wordt gebruikt door shellcode. Om het risico van een dergelijke aanval te beperken, beveiligt deze beperking drie vaak aangevallen modules:
- ntdll.dll
- kernelbase.dll
- kernel32.dll
De beperking beveiligt de geheugenpagina in de [exportmap die verwijst naar de exportadrestabel. Op deze geheugenpagina is de PAGE_GUARD beveiliging toegepast. Wanneer iemand toegang probeert te krijgen tot dit geheugen, wordt er een STATUS_GUARD_PAGE_VIOLATION gegenereerd. De beperking verwerkt deze uitzondering en als de toegangsinstructie niet wordt gevalideerd, wordt het proces beëindigd.
Informatie over compatibiliteit
Deze beperking is voornamelijk een probleem voor toepassingen zoals foutopsporingsprogramma's, toepassingen in de sandbox, toepassingen die DRM gebruiken of toepassingen die anti-foutopsporingstechnologie implementeren.
Configuratieopties
Valideer de toegang voor modules die vaak worden misbruikt door exploits- Met deze optie, ook wel bekend als EAF+, worden beveiligingen toegevoegd voor andere modules die vaak worden aangevallen:
mshtml.dll
flash*.ocx
jscript*.ocx
vbscript.dll
vgx.dll
mozjs.dll
xul.dll
acrord32.dll
acrofx32.dll
acroform.api
Door EAF+ in te schakelen, voegt deze beperking bovendien de PAGE_GUARD-beveiliging toe aan de pagina met de 'MZ'-header, de eerste twee bytes van de DOS-header in een PE-bestand. Dit is een ander aspect van bekende geheugeninhoud waarnaar shellcode kan zoeken om modules te identificeren die mogelijk interessant zijn voor het geheugen.
Alleen controle - U kunt deze beperking inschakelen in de controlemodus om de mogelijke compatibiliteitsimpact op een toepassing te meten. Controlegebeurtenissen kunnen vervolgens worden weergegeven in de logboeken of met behulp van Geavanceerde opsporing in Microsoft Defender voor Eindpunt.
Randomisering voor afbeeldingen forceren (verplichte ASLR)
Beschrijving
Randomisering van adresruimte-indeling (ASLR) vermindert het risico van een aanval met behulp van de kennis van de aanvaller met betrekking tot de geheugenindeling van het systeem om code uit te voeren die al aanwezig is in het procesgeheugen en al is gemarkeerd als uitvoerbaar. Dit kan het risico van een aanvaller beperken die technieken gebruikt zoals return-to-libc-aanvallen, waarbij de indringer de context instelt en vervolgens het retouradres wijzigt om bestaande code uit te voeren met context die past bij het doel van de aanvaller.
Verplichte ASLR dwingt een rebase af van alle DLL's binnen het proces. Een ontwikkelaar kan ASLR inschakelen met de linkeroptie /DYNAMICBASE en deze beperking heeft hetzelfde effect.
Wanneer het geheugenbeheer in de afbeelding in het proces wordt toegewezen, worden DLL's en EXE's die niet zijn aangemeld, geforceerd opnieuw gebaseerd op ASLR. Houd er echter rekening mee dat deze rebasing geen entropie heeft en daarom op een voorspelbare locatie in het geheugen kan worden geplaatst. Voor een rebased en gerandomiseerde locatie van binaire bestanden moet deze beperking worden gekoppeld aan Randomisering van geheugentoewijzingen (bottom-up ASLR).
Informatie over compatibiliteit
Deze compatibiliteitsimpact van ASLR is doorgaans beperkt tot oudere toepassingen die zijn gebouwd met compilers die veronderstellingen hebben gedaan over het basisadres van een binair bestand of basislocatiegegevens hebben verwijderd. Dit kan leiden tot onvoorspelbare fouten wanneer de uitvoeringsstroom probeert te springen naar de verwachte locatie in plaats van de werkelijke locatie in het geheugen.
Configuratieopties
Geen gestripte afbeeldingen toestaan - Met deze optie wordt het laden van afbeeldingen waarvan de herlocatiegegevens zijn verwijderd geblokkeerd. De Windows PE-bestandsindeling bevat absolute adressen en de compiler genereert ook een [basisverplaatsingstabel die het loader kan gebruiken om alle relatieve geheugenverwijzingen en hun verschuiving te vinden, zodat ze kunnen worden bijgewerkt als het binaire bestand niet wordt geladen op het gewenste basisadres. Sommige oudere toepassingen verwijderen deze informatie in productie-builds en daarom kunnen deze binaire bestanden niet opnieuw worden gebaseerd. Met deze beperking wordt voorkomen dat dergelijke binaire bestanden worden geladen (in plaats van dat ze kunnen worden geladen op hun voorkeursbasisadres).
Opmerking
Randomisering voor afbeeldingen forceren (verplichte ASLR) heeft geen controlemodus.
Door hardware afgedwongen stackbeveiliging
Beschrijving
Door hardware afgedwongen stackbeveiliging biedt robuuste bescherming tegen ROP-aanvallen, omdat hiermee een record wordt bijgehouden van de beoogde uitvoeringsstroom van een programma. Om ervoor te zorgen dat het ecosysteem soepel wordt ingebruikname en toepassingscompatibiliteit, biedt Windows deze beveiliging als een opt-in-model, zodat ontwikkelaars deze beveiliging in uw eigen tempo kunnen ontvangen.
Informatie over compatibiliteit
Door hardware afgedwongen stackbeveiliging werkt alleen op chipsets met ondersteuning voor hardwareschaduwstacks, Intel's Control-flow Enforcement Technology (CET) of AMD shadow stacks.
Als u toepassingen uitvoert op basis van het .Net Framework, is hardware-afgedwongen stackbeveiliging compatibel met .Net Framework 7 (opt-in), .Net Framework 9.0 of hoger. Als u een toepassing gebruikt met een oudere versie (ouder dan .Net Framework 7), kunt u stabiliteitsproblemen (vastlopen of vastlopen) en/of prestatieproblemen (hoog CPU- of geheugenlekken) verwachten.
Configuratieopties
Alleen controle - U kunt deze beperking inschakelen in de controlemodus om de mogelijke compatibiliteitsimpact op een toepassing te meten. Controlegebeurtenissen kunnen vervolgens worden weergegeven in de logboeken of met behulp van Geavanceerde opsporing in Defender voor Eindpunt.
Afdwingen voor alle modules in plaats van compatibele modules : u kunt deze beperking inschakelen om af te dwingen voor alle modules in plaats van compatibele modules.
Filteren op adressen importeren (IAF)
Beschrijving
De beperking filteren van adressen importeren (IAF) helpt bij het beperken van het risico dat een kwaadwillende persoon de controlestroom van een toepassing wijzigt door de IAT (importadrestabel) aan te passen om om te leiden naar willekeurige code van de aanvaller wanneer die functie wordt aangeroepen. Een aanvaller kan deze methode gebruiken om het beheer te kapen of om aanroepen naar gevoelige API's te onderscheppen, te inspecteren en mogelijk te blokkeren.
Op de geheugenpagina's voor alle beveiligde API's wordt de PAGE_GUARD beveiliging toegepast. Wanneer iemand toegang probeert te krijgen tot dit geheugen, wordt er een STATUS_GUARD_PAGE_VIOLATION gegenereerd. De beperking verwerkt deze uitzondering en als de toegangsinstructie niet wordt gevalideerd, wordt het proces beëindigd.
Deze beperking beveiligt de volgende Windows-API's:
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
Informatie over compatibiliteit
Legitieme toepassingen die API-interceptie uitvoeren, kunnen door deze beperking worden gedetecteerd en ervoor zorgen dat sommige toepassingen vastlopen. Voorbeelden zijn beveiligingssoftware en toepassingscompatibiliteits-shims.
Configuratieopties
Alleen controle - U kunt deze beperking inschakelen in de controlemodus om de mogelijke compatibiliteitsimpact op een toepassing te meten. Controlegebeurtenissen kunnen vervolgens worden weergegeven in de logboeken of met behulp van Geavanceerde opsporing in Microsoft Defender voor Eindpunt.
Randomisering van geheugentoewijzingen (bottom-up ASLR).
Beschrijving
Door het willekeurig toekennen van geheugentoewijzingen (bottom-up ASLR) wordt entropie toegevoegd aan verplaatsingen, zodat de locatie van de locaties willekeurig wordt weergegeven en dus minder voorspelbaar is. Deze beperking vereist dat Verplichte ASLR van kracht wordt.
De grootte van de 32-bits adresruimte zorgt voor praktische beperkingen voor de entropie die kan worden toegevoegd en daarom maken 64-bits toepassingen het moeilijker voor een aanvaller om een locatie in het geheugen te raden.
Informatie over compatibiliteit
De meeste toepassingen die compatibel zijn met Verplichte ASLR (rebasing) zijn ook compatibel met de andere entropie van Bottom-up ASLR. Sommige toepassingen kunnen problemen hebben met aanwijzer-afkapping als ze lokale aanwijzers opslaan in 32-bits variabelen (waarbij een basisadres van minder dan 4 GB wordt verwacht) en dus niet compatibel zijn met de optie voor hoge entropie (die kan worden uitgeschakeld).
Configuratieopties
Gebruik geen hoge entropie - Met deze optie wordt het gebruik van ASLR met hoge entropie uitgeschakeld, waarmee 24-bits entropie (1 TB variantie) wordt toegevoegd aan de bottom-up toewijzing voor 64-bits toepassingen.
Opmerking
Randomisering van geheugentoewijzingen (bottom-up ASLR) heeft geen controlemodus.
Uitvoering simuleren (SimExec)
Beschrijving
Uitvoering simuleren (SimExec) is alleen een beperking voor 32-bits toepassingen. Dit helpt te valideren dat aanroepen naar gevoelige API's terugkeren naar legitieme aanroepfuncties. Dit wordt gedaan door aanroepen in gevoelige API's te onderscheppen en vervolgens de uitvoering van deze API's te simuleren door de gecodeerde assemblytaalinstructies te doorlopen die op zoek zijn naar de RET-instructie, die naar de aanroeper moet terugkeren. Vervolgens wordt die functie gecontroleerd en teruggeschoven in het geheugen om de voorgaande CALL-instructie te vinden om te bepalen of de functie en CALL-instructie overeenkomen en of de RET niet is onderschept.
De API's die door deze beperking worden onderschept, zijn:
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
Als er een ROP-gadget wordt gedetecteerd, wordt het proces beëindigd.
Informatie over compatibiliteit
Toepassingen die API-interceptie uitvoeren, met name beveiligingssoftware, kunnen compatibiliteitsproblemen met deze beperking veroorzaken.
Deze beperking is niet compatibel met de beperking Willekeurige codebeveiliging.
Configuratieopties
Alleen controle - U kunt deze beperking inschakelen in de controlemodus om de mogelijke compatibiliteitsimpact op een toepassing te meten. Controlegebeurtenissen kunnen vervolgens worden weergegeven in de logboeken of met behulp van Geavanceerde opsporing in Microsoft Defender voor Eindpunt.
API-aanroep valideren (CallerCheck)
Beschrijving
API-aanroep valideren (CallerCheck) is een beperking voor ROP-technieken (Return Oriented Programming) waarmee wordt gevalideerd dat gevoelige API's zijn aangeroepen vanuit een geldige aanroeper. Met deze beperking wordt het doorgegeven retouradres gecontroleerd en vervolgens heuristisch teruggedraaid om een aanroep boven het retouradres te vinden om te bepalen of het aanroepdoel overeenkomt met de parameter die is doorgegeven aan de functie.
De API's die door deze beperking worden onderschept, zijn:
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
Als er een ROP-gadget wordt gedetecteerd, wordt het proces beëindigd.
Informatie over compatibiliteit
Toepassingen die API-interceptie uitvoeren, met name beveiligingssoftware, kunnen compatibiliteitsproblemen met deze beperking veroorzaken.
Deze beperking is niet compatibel met de beperking Willekeurige codebeveiliging.
Configuratieopties
Alleen controle - U kunt deze beperking inschakelen in de controlemodus om de mogelijke compatibiliteitsimpact op een toepassing te meten. Controlegebeurtenissen kunnen vervolgens worden weergegeven in de logboeken of met behulp van Geavanceerde opsporing in Microsoft Defender voor Eindpunt.
Uitzonderingsketens valideren (SEHOP)
Beschrijving
Uitzonderingsketens valideren (SEHOP) is een beperking voor de SEH-overschrijvingstechniek (Structured Exception Handler). Gestructureerde uitzonderingsafhandeling is het proces waarmee een toepassing kan vragen om een bepaalde uitzondering af te handelen. Uitzonderingshandlers worden aan elkaar gekoppeld, zodat als één uitzonderingshandler ervoor kiest om een bepaalde uitzondering niet af te handelen, deze kan worden doorgegeven aan de volgende uitzonderingshandler in de keten totdat één besluit deze af te handelen. Omdat de lijst met handler dynamisch is, wordt deze opgeslagen op de stack. Een aanvaller kan een beveiligingsprobleem met stackoverloop gebruiken om vervolgens de uitzonderingshandler te overschrijven met een verwijzing naar de code van de aanvaller.
Deze beperking is afhankelijk van het ontwerp van SEH, waarbij elke SEH-vermelding zowel een aanwijzer naar de uitzonderingshandler als een aanwijzer naar de volgende handler in de uitzonderingsketen bevat. Deze beperking wordt aangeroepen door het uitzonderingsverdeelprogramma, die de SEH-keten valideert wanneer een uitzondering wordt aangeroepen. Hiermee wordt gecontroleerd of:
- Alle uitzonderingsketenrecords zich binnen de stackgrenzen bevinden
- Alle uitzonderingsrecords zijn uitgelijnd
- Er geen aanwijzers voor uitzonderingshandlers zijn die naar de stack verwijzen
- Er geen achterwaartse aanwijzers zijn
- De uitzonderingsketen eindigt op een bekende definitieve uitzonderingshandler
Als deze validaties mislukken, wordt de afhandeling van uitzonderingen afgebroken en wordt de uitzondering niet verwerkt.
Informatie over compatibiliteit
Compatibiliteitsproblemen met SEHOP zijn relatief zeldzaam. Het is niet gebruikelijk dat een toepassing afhankelijk is van het beschadigen van de uitzonderingsketen. Sommige toepassingen worden echter beïnvloed door de subtiele wijzigingen in de timing, die zich kunnen manifesteren als een racevoorwaarde die een latente multithreading-bug in de toepassing aan het licht brengt.
Configuratieopties
Opmerking
Uitzonderingsketens valideren (SEHOP) heeft geen controlemodus.
Ingangsgebruik valideren
Beschrijving
Ingangsgebruik valideren is een risicobeperking die bescherming biedt tegen een aanvaller die een bestaande ingang gebruikt om toegang te krijgen tot een beveiligd object. Een ingang is een verwijzing naar een beveiligd object. Als toepassingscode verwijst naar een ongeldige ingang, kan dit erop wijzen dat een kwaadwillende persoon een ingang probeert te gebruiken die deze eerder heeft vastgelegd (maar waarvan het tellen van toepassingsverwijzingen niet op de hoogte is). Als de toepassing probeert een ongeldig object te gebruiken, in plaats van alleen null te retourneren, genereert de toepassing een uitzondering (STATUS_INVALID_HANDLE).
Deze beperking wordt automatisch toegepast op Windows Store-toepassingen.
Informatie over compatibiliteit
Toepassingen die niet nauwkeurig verwijzingen naar ingangen bijhouden en die deze bewerkingen niet verpakten in uitzonderingshandlers, worden mogelijk beïnvloed door deze beperking.
Configuratieopties
Opmerking
Ingangsgebruik valideren heeft geen controlemodus.
Integriteit van heap valideren
Beschrijving
De valideren van heapintegriteit-beperking verhoogt het beveiligingsniveau van heap-oplossingen in Windows, doordat de toepassing wordt beëindigd als er een heap-beschadiging wordt gedetecteerd. De beperkingen omvatten:
- Het voorkomen dat een HEAP-ingang wordt vrij gemaakt
- Een andere validatie uitvoeren op uitgebreide blokheaders voor heap-toewijzingen
- Controleren of heap-toewijzingen nog niet zijn gemarkeerd als in gebruik
- Beveiligde pagina's toevoegen aan grote toewijzingen, heapsegmenten en subsegmenten boven een minimumgrootte
Informatie over compatibiliteit
Deze beperking wordt standaard al toegepast voor 64-bits toepassingen en voor 32-bits toepassingen die gericht zijn op Windows Vista of hoger. Oudere toepassingen van Windows XP of eerder lopen het meeste risico, hoewel compatibiliteitsproblemen zeldzaam zijn.
Configuratieopties
Opmerking
Valideren van heapintegriteit heeft geen controlemodus.
Integriteit van afhankelijkheid van afbeelding valideren
Beschrijving
Afbeeldingsafhankelijkheid valideren helpt u te beschermen tegen aanvallen die proberen code te vervangen door dll's die statisch zijn verbonden door binaire Windows-bestanden. Met de techniek van het planten van DLL's wordt misbruik gemaakt van het zoekmechanisme van de loader om schadelijke code te injecteren, die vervolgens kan worden gebruikt om schadelijke code uit te voeren in een context met verhoogde bevoegdheden. Wanneer het loader een met Windows ondertekend binair bestand laadt en vervolgens dll's laadt die afhankelijk zijn van het binaire bestand, worden deze binaire bestanden geverifieerd om ervoor te zorgen dat ze ook digitaal zijn ondertekend als een windows-binair bestand. Als de handtekeningcontrole mislukt, wordt het dll-bestand niet geladen en wordt er een uitzondering gegenereerd en wordt de status STATUS_INVALID_IMAGE_HASH geretourneerd.
Informatie over compatibiliteit
Compatibiliteitsproblemen zijn ongebruikelijk. Toepassingen die afhankelijk zijn van het vervangen van binaire Windows-bestanden door lokale privéversies, worden beïnvloed en er is ook een klein risico dat subtiele timingfouten worden onthuld in toepassingen met meerdere threads.
Configuratieopties
Alleen controle - U kunt deze beperking inschakelen in de controlemodus om de mogelijke compatibiliteitsimpact op een toepassing te meten. Controlegebeurtenissen kunnen vervolgens worden weergegeven in de logboeken of met behulp van Geavanceerde opsporing in Microsoft Defender voor Eindpunt.
Integriteit van stack valideren (StackPivot)
Beschrijving
Stackintegriteit valideren (StackPivot) helpt u te beschermen tegen de Stack Pivot-aanval, een ROP-aanval waarbij een aanvaller een valse stack in heap-geheugen maakt en vervolgens de toepassing laat terugkeren naar de valse stack die de uitvoeringsstroom beheert.
Deze beperking onderschept veel Windows-API's en inspecteert de waarde van de stackpointer. Als het adres van de stackaanwijzer niet tussen de onderkant en de bovenkant van de stack valt, wordt een gebeurtenis vastgelegd en, indien niet in de controlemodus, wordt het proces beëindigd.
De API's die door deze beperking worden onderschept, zijn:
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
Informatie over compatibiliteit
Toepassingen die gebruikmaken van valse stacks worden beïnvloed en er is ook een klein risico dat subtiele timingfouten worden onthuld in toepassingen met meerdere threads. Toepassingen die API-interceptie uitvoeren, met name beveiligingssoftware, kunnen compatibiliteitsproblemen met deze beperking veroorzaken.
Deze beperking is niet compatibel met de beperking Willekeurige codebeveiliging.
Configuratieopties
Alleen controle - U kunt deze beperking inschakelen in de controlemodus om de mogelijke compatibiliteitsimpact op een toepassing te meten. Controlegebeurtenissen kunnen vervolgens worden weergegeven in de logboeken of met behulp van Geavanceerde opsporing in Microsoft Defender voor Eindpunt.
Tip
Wil je meer weten? Engage met de Microsoft Security-community in onze Tech Community: Microsoft Defender voor Eindpunt Tech Community.