Del via


Utnytte beskyttelsesreferanse

Gjelder for:

Vil du oppleve Microsoft Defender for endepunkt? Registrer deg for en gratis prøveperiode.

Utnyttelsesbeskyttelse gir avansert beskyttelse for programmer som bedriftsadministratorer og IT-eksperter kan bruke etter at en utvikler kompilerer og distribuerer programvare.

Denne artikkelen hjelper deg med å forstå hvordan utnyttelsesbeskyttelse fungerer, både på policynivå og på det individuelle begrensningsnivået, for å hjelpe deg med å bygge og bruke policyer for utnyttelse av beskyttelse.

Slik brukes begrensninger

Begrensninger for utnyttelse av beskyttelse brukes per program.

Begrensninger konfigureres via en registeroppføring for hvert program som du konfigurerer beskyttelse for. Disse innstillingene lagres i mitigationOptions-registeroppføringen for hvert program (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\*ImageFileName*\MitigationOptions). De trer i kraft når du starter programmet på nytt, og forblir effektive til du endrer dem og starter programmet på nytt.

Viktig

Med alternativer for kjøring av bildefiler kan du bare angi et filnavn eller en bane, og ikke et versjonsnummer, en arkitektur eller en annen differensier. Vær forsiktig med å rette begrensninger mot apper som har unike navn eller baner, og bruk dem bare på enheter der du testet den versjonen og den arkitekturen i programmet.

Hvis du konfigurerer tiltak for utnyttelse av beskyttelse ved hjelp av en XML-konfigurasjonsfil ved hjelp av PowerShell, gruppepolicy eller MDM, konfigureres individuelle registerinnstillinger for deg når du behandler denne XML-konfigurasjonsfilen.

Tilbakestilling av utnyttelsesbeskyttelse

Viktig

Når policyen som distribuerer XML-filen ikke lenger håndheves, fjernes ikke innstillingene som distribueres av denne XML-konfigurasjonsfilen, automatisk.

Hvis du vil fjerne innstillinger for beskyttelse mot utnyttelse, eksporterer du XML-konfigurasjonen fra en ren Windows 10 eller Windows 11 enhet, og distribuerer denne nye XML-filen. Microsoft tilbyr alternativt en XML-fil som en del av Windows Sikkerhet grunnlinjer for tilbakestilling av innstillinger for utnyttelsesbeskyttelse.

Hvis du vil tilbakestille innstillinger for utnyttelse av beskyttelse ved hjelp av PowerShell, bruker du følgende kommando:

Set-ProcessMitigation -PolicyFilePath EP-reset.xml

Følgende er EP-reset.xml distribuert med Windows Sikkerhet opprinnelige planer:

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

Begrensningsreferanse

De følgende avsnittene beskriver beskyttelsene som tilbys av hver utnyttelsesbeskyttelsesreduksjon, kompatibilitetshensyn for reduksjonen og de tilgjengelige konfigurasjonsalternativene.

Vilkårlig kodevakt

Beskrivelse

Tilfeldig kodevakt bidrar til å beskytte mot en ondsinnet angriper som laster inn koden de ønsker i minnet, gjennom et sikkerhetsproblem for minnesikkerhet og å kunne utføre denne koden.

Tilfeldig kodebeskytter beskytter et program mot å kjøre dynamisk generert kode (kode som ikke er lastet inn, for eksempel fra selve exe-filen eller en DLL-fil). Tilfeldig kodebeskyttelse fungerer ved å hindre at minnet merkes som kjørbart. Når et program prøver å tildele minne, kontrollerer vi beskyttelsesflaggene. (Minne kan tildeles med flagg for lese-, skrive- og/eller kjøre beskyttelsesflagg.) Hvis tildelingen forsøker å inkludere flagget for kjørebeskyttelse , mislykkes minnetildelingen og returnerer en feilkode (STATUS_DYNAMIC_CODE_BLOCKED). På samme måte, hvis et program forsøker å endre beskyttelsesflaggene for minnet som allerede er tildelt og inkluderer flagget for kjørebeskyttelse , mislykkes tillatelsesendringen og returnerer en feilkode (STATUS_DYNAMIC_CODE_BLOCKED).

Ved å hindre at kjøreflagget angis, kan funksjonen for hindring av datakjøring i Windows 10 og Windows 11 deretter beskytte mot at instruksjonspekeren settes til det minnet og kjører denne koden.

Kompatibilitetshensyn

Tilfeldig kodebeskytter hindrer tildeling av minne som kjørbar fil, noe som presenterer et kompatibilitetsproblem med tilnærminger som just-in-time (JIT)-kompilatorer. De fleste moderne nettlesere kompilerer for eksempel JavaScript til opprinnelig kode for å optimalisere ytelsen. For å kunne støtte denne begrensningen må de arkiveres på nytt for å flytte JIT-samlingen utenfor den beskyttede prosessen. Andre programmer med utforming som dynamisk genererer kode fra skript eller andre mellomliggende språk, er like inkompatible med denne begrensningen.

Konfigurasjonsalternativer

Tillat utmelding av tråd – Du kan konfigurere begrensningen slik at en individuell tråd kan velge bort denne beskyttelsen. Utvikleren må skrive programmet med bevissthet om denne begrensningen, og kalle SetThreadInformation-API-en med ThreadInformation-parameteren satt til ThreadDynamicCodePolicy for å kunne kjøre dynamisk kode på denne tråden.

Bare overvåking – Du kan aktivere denne begrensningen i overvåkingsmodus for å måle den potensielle kompatibilitetsvirkningen på et program. Overvåkingshendelser kan deretter vises enten i hendelsesvisningen eller ved hjelp av Avansert jakt i Defender for endepunkt.

Blokker bilder med lav integritet

Beskrivelse

Blokker bilder med lav integritet hindrer programmet i å laste inn filer som ikke er klarert, vanligvis fordi de er lastet ned fra Internett fra en nettleser i sandkassemodus.

Denne begrensningen blokkerer bildeinnlastinger hvis bildet har en Access Control Entry (ACE) som gir tilgang til low IL-prosesser, og som ikke har en klareringsetikett ACE. Den implementeres av minnebehandlingen, som blokkerer filen fra å bli tilordnet i minnet. Hvis et program prøver å tilordne et bilde med lav integritet, utløses en STATUS_ACCESS_DENIED feil. Hvis du vil ha mer informasjon om hvordan integritetsnivåer fungerer, kan du se Obligatorisk integritetskontroll.

Kompatibilitetshensyn

Blokkere bilder med lav integritet hindrer programmet i å laste inn filer som ble lastet ned fra Internett. Hvis programarbeidsflyten krever innlasting av bilder som er lastet ned, må du sørge for at de lastes ned fra en prosess med høyere klarering, eller er eksplisitt relabeled for å kunne bruke denne begrensningen.

Konfigurasjonsalternativer

Bare overvåking – Du kan aktivere denne begrensningen i overvåkingsmodus for å måle den potensielle kompatibilitetsvirkningen på et program. Overvåkingshendelser kan deretter vises enten i hendelsesvisningen eller ved hjelp av Avansert jakt i Microsoft Defender for endepunkt.

Blokker eksterne bilder

Beskrivelse

Blokkering av eksterne bilder bidrar til å hindre at programmet laster inn filer som driftes på en ekstern enhet, for eksempel en UNC-deling. Blokkering av eksterne bilder bidrar til å beskytte mot å laste binærfiler inn i minnet som er på en ekstern enhet som kontrolleres av angriperen.

Denne begrensningen blokkerer bildeinnlastinger hvis bildet er fastslått å være på en ekstern enhet. Den implementeres av minnebehandlingen, som blokkerer filen fra å bli tilordnet i minnet. Hvis et program prøver å tilordne en ekstern fil, utløses en STATUS_ACCESS_DENIED feil.

Kompatibilitetshensyn

Blokker eksterne bilder hindrer programmet i å laste inn bilder fra eksterne enheter. Hvis programmet laster inn filer eller plugin-moduler fra eksterne enheter, vil det ikke være kompatibelt med denne begrensningen.

Konfigurasjonsalternativer

Bare overvåking – Du kan aktivere denne begrensningen i overvåkingsmodus for å måle den potensielle kompatibilitetsvirkningen på et program. Overvåkingshendelser kan deretter vises enten i hendelsesvisningen eller ved hjelp av Avansert jakt i Microsoft Defender for endepunkt.

Blokker uklarerte skrifttyper

Beskrivelse

Blokk ikke-klarerte skrifter reduserer risikoen for en feil i skriftanalyse som fører til at angriperen kan kjøre kode på enheten. Bare skrifter som er installert i windows\fonts-katalogen, lastes inn for behandling av GDI.

Denne begrensningen implementeres i GDI, som validerer plasseringen av filen. Hvis filen ikke er i mappen for systemskrifter, lastes ikke skriften inn for analyse, og kallet vil mislykkes.

Denne begrensningen er i tillegg til den innebygde reduksjonen som er angitt i Windows 10 1607 og nyere, og Windows 11, som flytter skriftanalyse ut av kjernen og inn i en appbeholder i brukermodus. Enhver utnyttelse basert på skriftanalyse, som et resultat, skjer i en sandkassebasert og isolert kontekst, noe som reduserer risikoen betydelig. Hvis du vil ha mer informasjon om denne begrensningen, kan du se bloggen Hardening Windows 10 med null-dagers utnyttelsesreduksjoner.

Kompatibilitetshensyn

Den vanligste bruken av skrifter utenfor systemskriftkatalogen er med nettskrifter. Moderne nettlesere, for eksempel Microsoft Edge, bruker DirectWrite i stedet for GDI, og påvirkes ikke. Eldre nettlesere, for eksempel Internet Explorer 11 (og IE-modus i nye Microsoft Edge), kan imidlertid påvirkes, spesielt med programmer som Office 365, som bruker skriftsymboler til å vise brukergrensesnittet.

Konfigurasjonsalternativer

Bare overvåking – Du kan aktivere denne begrensningen i overvåkingsmodus for å måle den potensielle kompatibilitetsvirkningen på et program. Overvåkingshendelser kan deretter vises enten i hendelsesvisningen eller ved hjelp av Avansert jakt i Microsoft Defender for endepunkt.

Vern for kodeintegritet

Beskrivelse

Kodeintegritetsvern sikrer at alle binærfiler som lastes inn i en prosess, signeres digitalt av Microsoft. Kodeintegritetsvakt inkluderer WHQL-signaturer (Windows Hardware Quality Labs), som gjør det mulig for WHQL-godkjente drivere å kjøre i prosessen.

Denne begrensningen implementeres i minnebehandlingen, som blokkerer binærfilen fra å bli tilordnet i minnet. Hvis du prøver å laste inn en binær som ikke er signert av Microsoft, returnerer minnebehandling feilen STATUS_INVALID_IMAGE_HASH. Ved å blokkere på minnebehandlingsnivå forhindrer dette at både binærfiler lastes inn av prosessen og binærfiler som settes inn i prosessen.

Kompatibilitetshensyn

Denne begrensningen blokkerer spesifikt binære data som ikke er signert av Microsoft. Derfor er den inkompatibel med de fleste programvarer som ikke er fra Microsoft, med mindre programvaren distribueres av (og signeres digitalt av) Microsoft Store, og alternativet for å tillate innlasting av bilder signert av Microsoft Store er valgt.

Konfigurasjonsalternativer

Tillat også innlasting av bilder signert av Microsoft Store – Programmer som distribueres av Microsoft Store, signeres digitalt av Microsoft Store, og hvis du legger til denne konfigurasjonen, kan binærfiler som går gjennom lagringssertifiseringsprosessen, lastes inn av programmet.

Bare overvåking – Du kan aktivere denne begrensningen i overvåkingsmodus for å måle den potensielle kompatibilitetsvirkningen på et program. Overvåkingshendelser kan deretter vises enten i hendelsesvisningen eller ved hjelp av Avansert jakt i Microsoft Defender for endepunkt.

Control Flow Guard (CFG)

Beskrivelse

Kontrollflytvakt (CFG) reduserer risikoen for at angripere bruker sikkerhetsproblemer med minnekorrupsjon ved å beskytte indirekte funksjonskall. En angriper kan for eksempel bruke et sikkerhetsproblem med bufferoverflyt til å overskrive minne som inneholder en funksjonspeker, og erstatte denne funksjonspekeren med en peker til den kjørbare koden de selv velger (som også kan settes inn i programmet).

Denne begrensningen gis ved å sette inn en ny kontroll på kompileringstidspunktet. Før hvert indirekte funksjonsanrop legges det til en annen instruksjoner som bekrefter at målet er et gyldig anropsmål før det kalles. Hvis målet ikke er et gyldig anropsmål, avsluttes programmet. Derfor kan bare programmer som er kompilert med CFG-støtte dra nytte av denne begrensningen.

Kontrollen for et gyldig mål er angitt av Windows-kjernen. Når kjørbare filer lastes inn, trekkes metadataene for indirekte anropsmål ut ved innlastingstidspunktet og merkes som gyldige samtalemål. I tillegg, når minnet tildeles og merkes som kjørbart (for eksempel for generert kode), merkes disse minneplasseringene også som gyldige samtalemål, for å støtte mekanismer som JIT-kompilering.

Kompatibilitetshensyn

Siden programmer må kompileres for å støtte CFG, erklærer de implisitt sin kompatibilitet med den. De fleste programmer bør derfor fungere med denne begrensningen aktivert. Fordi disse kontrollene er kompilert i binærfilen, er konfigurasjonen du kan bruke bare for å deaktivere kontroller i Windows-kjernen. Begrensningen er med andre ord aktivert som standard, men du kan konfigurere Windows-kjernen til alltid å returnere «ja» hvis du senere finner ut at det er et kompatibilitetsproblem som programutvikleren ikke oppdaget i testingen, noe som burde være sjeldent.

Konfigurasjonsalternativer

Bruk streng CFG – I streng modus må alle binærfiler som lastes inn i prosessen kompileres for Control Flow Guard (eller ikke ha noen kjørbar kode i dem – for eksempel ressurs-DLL-filer) for å kunne lastes inn.

Obs!

Kontrollflytvern har ingen overvåkingsmodus. Binærfiler kompileres med denne begrensningen aktivert.

Datakjøringsforhindring (DEP)

Beskrivelse

Datakjøringsforhindring (DEP) hindrer at minne som ikke eksplisitt ble tildelt som kjørbart, blir utført. DEP bidrar til å beskytte mot at en angriper injiserer skadelig kode i prosessen, for eksempel gjennom en bufferoverflyt, og deretter utfører denne koden.

Hvis du prøver å angi instruksjonspekeren til en minneadresse som ikke er merket som kjørbar, genererer prosessoren et unntak (brudd på generell beskyttelse), noe som fører til at programmet krasjer.

Kompatibilitetshensyn

Alle x64-, ARM- og Arm64-kjørbare filer har DEP aktivert som standard, og de kan ikke deaktiveres. Siden et program ikke kjøres uten DEP, antas kompatibilitet.

Alle x86-binærfiler (32-biters) har DEP aktivert som standard, men DEP kan deaktiveres per prosess. Enkelte gamle programmer, vanligvis programmer som er utviklet før Windows XP SP2, er kanskje ikke kompatible med DEP. Slike programmer genererer vanligvis kode dynamisk (for eksempel JIT-kompilering) eller kobler til eldre biblioteker (for eksempel eldre versjoner av ATL) som dynamisk genererer kode.

Konfigurasjonsalternativer

Aktiver ATL Thunk-emulering – Dette konfigurasjonsalternativet deaktiverer ATL Thunk-emulering. ATL, ActiveX-malbiblioteket, er utformet for å være så lite og raskt som mulig. For å redusere binær størrelse, ville den bruke en teknikk som kalles thunking. Thunking er vanligvis tenkt på for samhandling mellom 32-biters og 16-biters programmer, men det er ingen 16-biters komponenter til ATL her. For å optimalisere for binær størrelse lagrer ATL maskinkode i minnet som ikke er ordjustert (oppretter en mindre binær), og deretter aktiverer du koden direkte. ATL-komponenter som er kompilert med Visual Studio 7.1 eller tidligere (Visual Studio 2003), tilordner ikke dette minnet som kjørbart . Thunk-emulering løser dette kompatibilitetsproblemet. Programmer som har en binær utvidelsesmodell (for eksempel Internet Explorer 11), må ha ATL Thunk-emulering aktivert.

Deaktiver utvidelsespunkter

Beskrivelse

Denne begrensningen deaktiverer ulike utvidelsespunkter for et program, som kan brukes til å etablere vedvarende eller utvide rettigheter for skadelig innhold.

Dette inkluderer:

  • AppInit-dll-filer – Når en prosess starter, laster systemet den angitte DLL-filen inn i konteksten for den nylig startede prosessen før den kaller opp startpunktfunksjonen. Du finner mer informasjon om dll-adresser for AppInit her. Når denne begrensningen er tatt i bruk, lastes ikke dll-adresser for AppInit inn. Fra og med Windows 7 må dll-adresser for AppInit signeres digitalt, som beskrevet her. I tillegg, fra og med Windows 8, lastes ikke AppInit-DLL-er inn hvis SecureBoot er aktivert, som beskrevet her.
  • Eldre direktemeldinger – en inndatametode Redaktør (IME) gjør det mulig for en bruker å skrive inn tekst på et språk som har flere tegn enn det som kan representeres på et tastatur. Tredjeparter kan opprette direktemeldinger. En ondsinnet IME kan få legitimasjon eller annen sensitiv informasjon fra dette inndataopptaket. Noen direktemeldinger, kalt eldre direktemeldinger, fungerer bare på Windows-skrivebordsprogrammer og ikke UWP-apper. Denne begrensningen hindrer også at denne eldre IME-en lastes inn i den angitte Windows-skrivebordsappen.
  • Windows Event Hooks - Et program kan kalle SetWinEventHook-API-en for å registrere interesse for et arrangement som finner sted. En DLL-fil er angitt og kan settes inn i prosessen. Denne begrensningen tvinger kroken til å bli lagt inn i registreringsprosessen i stedet for å kjøre i prosessen gjennom en injisert DLL.

Kompatibilitetshensyn

De fleste av disse utvidelsespunktene er relativt sjeldne brukt, så kompatibilitetseffekten er vanligvis liten, spesielt på individuelt programnivå. Den ene vurderingen er om brukere bruker ikke-eldre microsoft-direktemeldinger som ikke fungerer med det beskyttede programmet.

Konfigurasjonsalternativer

Det finnes ingen konfigurasjonsalternativer for denne begrensningen.

Obs!

Deaktivering av utvidelsespunkter har ingen overvåkingsmodus.

Deaktiver Win32k systemanrop

Beskrivelse

Win32k.sys gir en bred angrepsoverflate for en angriper. Som kjernemoduskomponent er den ofte målrettet som en escape-vektor for programmer som er sandkasse. Denne begrensningen hindrer kall til win32k.sys ved å blokkere en tråd fra å konvertere seg selv til en GUI-tråd, som deretter gis tilgang til å aktivere Win32k-funksjoner. En tråd er ikke-GUI når den opprettes, men konverteres ved første kall til win32k.sys, eller gjennom et API-kall til IsGuiThread.

Kompatibilitetshensyn

Denne begrensningen er utformet for prosesser som er dedikerte prosesser som ikke er brukergrensesnittprosesser. Mange moderne nettlesere bruker for eksempel prosessisolasjon og innlemmer prosesser som ikke er i brukergrensesnittet. Alle programmer som viser en GUI ved hjelp av én enkelt prosess, blir påvirket av denne begrensningen.

Konfigurasjonsalternativer

Bare overvåking – Du kan aktivere denne begrensningen i overvåkingsmodus for å måle den potensielle kompatibilitetsvirkningen på et program. Overvåkingshendelser kan deretter vises enten i hendelsesvisningen eller ved hjelp av Avansert jakt i Microsoft Defender for endepunkt.

Ikke tillat underordnede prosesser

Beskrivelse

Denne begrensningen hindrer at et program oppretter nye underordnede programmer. En vanlig teknikk som brukes av motstandere er å starte en pålitelig prosess på enheten med ondsinnet inngang (et "leve av landet" angrep), som ofte krever lansering av et annet program på enheten. Hvis det ikke finnes noen legitime grunner til at et program vil starte en underordnet prosess, reduserer denne begrensningen den potensielle angrepsvektoren. Begrensningen brukes ved å angi en egenskap på prosesstokenet, som blokkerer oppretting av et token for den underordnede prosessen med feilmeldingen STATUS_CHILD_PROCESS_BLOCKED.

Kompatibilitetshensyn

Hvis programmet starter underordnede programmer av en eller annen grunn, for eksempel støtte for hyperkoblinger som starter en nettleser eller en ekstern nettleser, eller som starter andre verktøy på datamaskinen, er denne funksjonaliteten brutt med denne begrensningen.

Konfigurasjonsalternativer

Bare overvåking – Du kan aktivere denne begrensningen i overvåkingsmodus for å måle den potensielle kompatibilitetsvirkningen på et program. Overvåkingshendelser kan deretter vises enten i hendelsesvisningen eller ved hjelp av Avansert jakt i Microsoft Defender for endepunkt.

Filtrering av eksportadresse

Beskrivelse

Eksportadressefiltrering (EAF) reduserer risikoen for at skadelig kode ser på eksportadressetabellen for alle innlastede moduler for å finne moduler som inneholder nyttige API-er for angrepet. Dette er en vanlig taktikk som brukes av shellcode. For å redusere risikoen for et slikt angrep beskytter denne reduksjonen tre ofte angrepsmoduler:

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

Begrensningen beskytter minnesiden i [eksportkatalogen som peker til eksportadressetabellen. Denne minnesiden har PAGE_GUARD beskyttelsen. Når noen prøver å få tilgang til dette minnet, genereres det en STATUS_GUARD_PAGE_VIOLATION. Begrensningen håndterer dette unntaket, og hvis tilgangsinstruksjonen ikke består valideringen, avsluttes prosessen.

Kompatibilitetshensyn

Denne begrensningen er hovedsakelig et problem for programmer som feilsøkingsprogrammer, sandkasseprogrammer, programmer som bruker DRM eller programmer som implementerer feilsøkingsteknologi.

Konfigurasjonsalternativer

Valider tilgang for moduler som ofte blir misbrukt av bedrifter – Dette alternativet, også kjent som EAF+, legger til beskyttelse for andre ofte angrepsmoduler:

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

I tillegg, ved å aktivere EAF+, legger denne begrensningen til PAGE_GUARD beskyttelse på siden som inneholder «MZ»-toppteksten, de første 2 bytene i DOS-toppteksten i en PE-fil, dette er et aspekt av kjent minneinnhold som skallkode kan se etter for å identifisere potensielt interessante moduler i minnet.

Bare overvåking – Du kan aktivere denne begrensningen i overvåkingsmodus for å måle den potensielle kompatibilitetsvirkningen på et program. Overvåkingshendelser kan deretter vises enten i hendelsesvisningen eller ved hjelp av Avansert jakt i Microsoft Defender for endepunkt.

Tving randomisering for bilder (obligatorisk ASLR)

Beskrivelse

Address Space Layout Randomization (ASLR) reduserer risikoen for at en angriper bruker kunnskapen om minneoppsettet for systemet for å kjøre kode som allerede finnes i prosessminnet og allerede er merket som kjørbar. Dette kan redusere risikoen for at en angriper bruker teknikker som retur-til-libc-angrep, der motstanderen angir konteksten og deretter endrer returadressen for å utføre eksisterende kode med kontekst som passer motstanderens formål.

Obligatorisk ASLR tvinger en rebase av alle dll-adresser i prosessen. En utvikler kan aktivere ASLR ved hjelp av / DYNAMICBASE-koblingsalternativet , og denne begrensningen har samme effekt.

Når minnebehandlingen tilordnes i bildet til prosessen, vil obligatorisk ASLR tvangsrebasere DLL-er og EKS-er som ikke har valgt ASLR. Vær imidlertid oppmerksom på at denne rebasingen ikke har noen entropitet, og kan derfor plasseres på et forutsigbart sted i minnet. For rebased and randomized location of binaries, this mitigation should be paired with Randomize memory allocations (Bottom-up ASLR).

Kompatibilitetshensyn

Denne kompatibilitetseffekten av ASLR er vanligvis begrenset til eldre programmer som ble bygget ved hjelp av kompilatorer som gjorde antagelser om basisadressen til en binær fil eller har fjernet grunnleggende flytteinformasjon. Dette kan føre til uforutsigbare feil når kjøringsflyten forsøker å hoppe til forventet plassering i stedet for den faktiske plasseringen i minnet.

Konfigurasjonsalternativer

Ikke tillat fjernet bilder - Dette alternativet blokkerer innlasting av bilder som har flytteinformasjon fjernet. Windows PE-filformatet inneholder absolutte adresser, og kompilatoren genererer også en [base flytttabell som lasteren kan bruke til å finne alle relative minnereferanser og forskyvningen, slik at de kan oppdateres hvis binærfilen ikke lastes inn på den foretrukne basisadressen. Noen eldre programmer fjerner denne informasjonen i produksjonsbygg, og derfor kan ikke disse binærfilene baseres på nytt. Denne begrensningen blokkerer slike binærfiler fra å lastes inn (i stedet for å tillate at de lastes inn på den foretrukne basisadressen).

Obs!

Tving tilfeldighet for bilder (obligatorisk ASLR) har ingen overvåkingsmodus.

Maskinvare-fremtvunget stakkbeskyttelse

Beskrivelse

Maskinvarehåndhevet stakkbeskyttelse gir robust beskyttelse mot ROP-utnyttelser siden den opprettholder en oversikt over den tiltenkte utførelsesflyten til et program. For å sikre jevn implementering av økosystem og programkompatibilitet tilbyr Windows denne beskyttelsen som en opt-in-modell, slik at utviklere kan motta denne beskyttelsen i ditt eget tempo.

Kompatibilitetshensyn

Maskinvarehåndhevet stakkbeskyttelse fungerer bare på brikkesett med støtte for skyggestabler for maskinvare, Intels kontrollflythåndhevelsesteknologi (CET) eller AMD-skyggestabel.

Hvis du kjører programmer basert på .NET Framework, fungerer maskinvarehåndhevet stakkbeskyttelse med .NET Framework 7 (påmelding) eller nyere. Hvis du bruker en eldre versjon, kan du få krasj eller høy CPU-bruk. Disse problemene kan også oppstå i overvåkingsmodus eller ved målretting av bare kompatible moduler.

Konfigurasjonsalternativer

Bare overvåking – Du kan aktivere denne begrensningen i overvåkingsmodus for å måle den potensielle kompatibilitetsvirkningen på et program. Overvåkingshendelser kan deretter vises enten i hendelsesvisningen eller ved hjelp av Avansert jakt i Defender for endepunkt.

Fremtving for alle moduler i stedet for kompatible moduler – Du kan aktivere denne begrensningen for å håndheve for alle moduler i stedet for kompatible moduler.

Importadressefiltrering (IAF)

Beskrivelse

Begrensningen for filtrering av importadresse (IAF) bidrar til å redusere risikoen for at en motstander endrer kontrollflyten for et program ved å endre importadressetabellen (IAT) for å omdirigere til vilkårlig kode for angriperens valg når denne funksjonen kalles. En angriper kan bruke denne tilnærmingen til å kapre kontroll, eller til å fange opp, inspisere og potensielt blokkere anrop til sensitive API-er.

Minnesidene for alle beskyttede API-er har PAGE_GUARD beskyttelsen. Når noen prøver å få tilgang til dette minnet, genereres det en STATUS_GUARD_PAGE_VIOLATION. Begrensningen håndterer dette unntaket, og hvis tilgangsinstruksjonen ikke består valideringen, avsluttes prosessen.

Denne begrensningen beskytter følgende Windows-API-er:

  • 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

Kompatibilitetshensyn

Legitime programmer som utfører API-avskjæring, kan oppdages av denne begrensningen og føre til at noen programmer krasjer. Eksempler inkluderer sikkerhetsprogramvare og programkompatibilitetsshim.

Konfigurasjonsalternativer

Bare overvåking – Du kan aktivere denne begrensningen i overvåkingsmodus for å måle den potensielle kompatibilitetsvirkningen på et program. Overvåkingshendelser kan deretter vises enten i hendelsesvisningen eller ved hjelp av Avansert jakt i Microsoft Defender for endepunkt.

Tilfeldige minnetildelinger (nedenfra og opp ASLR)

Beskrivelse

Randomize memory allocations (Bottom-up ASLR) adds entropy to relocations, so their location is randomized and therefore less predictable. Denne begrensningen krever obligatorisk ASLR for å tre i kraft.

Størrelsen på 32-biters adresseområdet setter praktiske begrensninger på entropien som kan legges til, og derfor gjør 64-biters programmer det vanskeligere for en angriper å gjette en plassering i minnet.

Kompatibilitetshensyn

De fleste programmer som er kompatible med obligatorisk ASLR (rebasing) er også kompatible med den andre entropien til Bottom-up ASLR. Noen programmer kan ha problemer med pekeravkorting hvis de lagrer lokale pekere i 32-biters variabler (forventer en basisadresse under 4 GB), og dermed vil være inkompatibel med det høye entropialternativet (som kan deaktiveres).

Konfigurasjonsalternativer

Ikke bruk høy entropi – dette alternativet deaktiverer bruken av ASLR med høy entropi, som legger til 24 biter entropi (1 TB varians) i nedenfra-og-opp-tildelingen for 64-biters applikasjoner.

Obs!

Randomize memory allocations (Bottom-up ASLR) har ingen overvåkingsmodus.

Simuler kjøring (SimExec)

Beskrivelse

Simuler kjøring (SimExec) er en begrensning bare for 32-biters programmer. Dette bidrar til å validere at kall til sensitive API-er går tilbake til legitime oppringerfunksjoner. Den gjør dette ved å fange opp kall til sensitive API-er, og deretter simulere kjøringen av disse API-ene ved å gå gjennom de kodede instruksjonene for samlingsspråk på jakt etter RET-instruksjonen, som skal gå tilbake til innringeren. Den inspiserer deretter funksjonen og går bakover i minnet for å finne den foregående ANROP-instruksjonen for å finne ut om funksjonen og ANROP-instruksjonen samsvarer, og at RET ikke er fanget opp.

API-ene som fanges opp av denne begrensningen, er:

  • 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

Hvis et ROP-miniprogram oppdages, avsluttes prosessen.

Kompatibilitetshensyn

Programmer som utfører API-avskjæring, spesielt sikkerhetsprogramvare, kan forårsake kompatibilitetsproblemer med denne begrensningen.

Denne begrensningen er ikke kompatibel med begrensningen for vilkårlig kodebeskyttelse.

Konfigurasjonsalternativer

Bare overvåking – Du kan aktivere denne begrensningen i overvåkingsmodus for å måle den potensielle kompatibilitetsvirkningen på et program. Overvåkingshendelser kan deretter vises enten i hendelsesvisningen eller ved hjelp av Avansert jakt i Microsoft Defender for endepunkt.

Valider API-aktivering (CallerCheck)

Beskrivelse

Valider API-aktivering (CallerCheck) er en begrensning for returorienterte programmeringsteknikker (ROP) som validerer at sensitive API-er ble kalt fra en gyldig anroper. Denne begrensningen inspiserer den sendte avsenderadressen, og demonteres deretter bakover for å finne et anrop over avsenderadressen for å finne ut om anropsmålet samsvarer med parameteren som sendes inn i funksjonen.

API-ene som fanges opp av denne begrensningen, er:

  • 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

Hvis et ROP-miniprogram oppdages, avsluttes prosessen.

Kompatibilitetshensyn

Programmer som utfører API-avskjæring, spesielt sikkerhetsprogramvare, kan forårsake kompatibilitetsproblemer med denne begrensningen.

Denne begrensningen er ikke kompatibel med begrensningen for vilkårlig kodebeskyttelse.

Konfigurasjonsalternativer

Bare overvåking – Du kan aktivere denne begrensningen i overvåkingsmodus for å måle den potensielle kompatibilitetsvirkningen på et program. Overvåkingshendelser kan deretter vises enten i hendelsesvisningen eller ved hjelp av Avansert jakt i Microsoft Defender for endepunkt.

Valider unntakskjeder (SEHOP)

Beskrivelse

Valider unntakskjeder (SEHOP) er en begrensning mot SEH (Structured Exception Handler) som overskriver teknikk for utnyttelse. Strukturert unntaksbehandling er prosessen der et program kan be om å håndtere et bestemt unntak. Unntaksbehandlinger kjedes sammen, slik at hvis ett unntaksbehandling velger ikke å håndtere et bestemt unntak, kan det sendes videre til neste unntaksbehandling i kjeden til man bestemmer seg for å håndtere det. Fordi listen over behandlingsprogram er dynamisk, lagres den på stabelen. En angriper kan bruke et sikkerhetsproblem med stakkoverflyt til deretter å overskrive unntaksbehandlingen med en peker til koden for angriperens valg.

Denne begrensningen er avhengig av utformingen av SEH, der hver SEH-oppføring inneholder både en peker til unntaksbehandlingen og en peker til neste behandlingsprogram i unntakskjeden. Denne begrensningen kalles av unntakssentralen, som validerer SEH-kjeden når et unntak aktiveres. Den bekrefter at:

  • Alle unntakskjedeposter er innenfor stakkgrensene
  • Alle unntaksposter er justert
  • Ingen unntaksbehandlingspekere peker til stabelen
  • Det er ingen bakvendte pekere
  • Unntakskjeden slutter på en kjent endelig unntaksbehandling

Hvis disse valideringene mislykkes, avbrytes unntaksbehandlingen, og unntaket blir ikke håndtert.

Kompatibilitetshensyn

Kompatibilitetsproblemer med SEHOP er relativt sjeldne. Det er uvanlig at et program er avhengig av å ødelegge unntakskjeden. Noen programmer påvirkes imidlertid av de subtile endringene i timingen, noe som kan manifestere seg som en rasetilstand som avslører en latent multitrådfeil i programmet.

Konfigurasjonsalternativer

Obs!

Valider unntakskjeder (SEHOP) har ingen overvåkingsmodus.

Valider referansebruk

Beskrivelse

Validering av bruk av håndtak er en begrensning som bidrar til å beskytte mot en angriper ved hjelp av et eksisterende håndtak for å få tilgang til et beskyttet objekt. Et håndtak er en referanse til et beskyttet objekt. Hvis programkode refererer til et ugyldig håndtak, kan det indikere at en motstander forsøker å bruke et håndtak det tidligere har registrert (men hvilken programreferansetelling ville ikke være klar over). Hvis programmet prøver å bruke et ugyldig objekt, utløser programmet et unntak (STATUS_INVALID_HANDLE) i stedet for bare å returnere null.

Denne begrensningen brukes automatisk på Windows Store-programmer.

Kompatibilitetshensyn

Programmer som ikke nøyaktig sporet referansereferanser, og som ikke pakket inn disse operasjonene i unntaksbehandlinger, vil potensielt bli påvirket av denne begrensningen.

Konfigurasjonsalternativer

Obs!

Valider bruk av håndtaket har ingen overvåkingsmodus.

Valider heap-integritet

Beskrivelse

Valideringen av heap-integritetsreduksjonen øker beskyttelsesnivået for heap-begrensninger i Windows, ved at programmet avsluttes hvis det oppdages en heap-skade. Begrensningene omfatter:

  • Hindrer at et HEAP-håndtak blir frigjort
  • Utføre en annen validering på utvidede blokkoverskrifter for heap-tildelinger
  • Kontrollere at heap-tildelinger ikke allerede er flagget som i bruk
  • Legge til vaktsider i store tildelinger, heapsegmenter og undersegmenter over en minimumsstørrelse

Kompatibilitetshensyn

Denne begrensningen brukes allerede som standard for 64-biters programmer og for 32-biters programmer som er rettet mot Windows Vista eller nyere. Eldre programmer fra Windows XP eller tidligere er mest utsatt, selv om kompatibilitetsproblemer er sjeldne.

Konfigurasjonsalternativer

Obs!

Valider heap-integritet har ingen overvåkingsmodus.

Valider integritet for avbildningsavhengighet

Beskrivelse

Begrensningen for validering av bildeavhengighet bidrar til å beskytte mot angrep som forsøker å erstatte kode for dll-filer som er statisk koblet av Windows-binærfiler. Teknikken for DLL-planting misbruker lasterens søkemekanisme for å injisere skadelig kode, som kan brukes til å få skadelig kode til å kjøre i en forhøyet kontekst. Når innlasteren laster inn en Windows-signert binærfil, og deretter laster opp dll-filer som binærfilen avhenger av, bekreftes disse binærfilene for å sikre at de også er digitalt signert som en Windows-binærfil. Hvis de ikke får signaturkontrollen, lastes ikke DLL-filen inn, og et unntak returneres med statusen STATUS_INVALID_IMAGE_HASH.

Kompatibilitetshensyn

Kompatibilitetsproblemer er uvanlige. Programmer som er avhengige av å erstatte Windows-binærfiler med lokale private versjoner, påvirkes, og det er også en liten risiko for å avsløre subtile tidsberegningsfeil i flertrådete programmer.

Konfigurasjonsalternativer

Bare overvåking – Du kan aktivere denne begrensningen i overvåkingsmodus for å måle den potensielle kompatibilitetsvirkningen på et program. Overvåkingshendelser kan deretter vises enten i hendelsesvisningen eller ved hjelp av Avansert jakt i Microsoft Defender for endepunkt.

Valider stabelintegritet (StackPivot)

Beskrivelse

Begrensningen for validering av stakkintegritet (StackPivot) bidrar til å beskytte mot Stack Pivot-angrepet, et ROP-angrep der en angriper oppretter en falsk stabel i heap-minne, og deretter lurer programmet til å returnere til den falske stabelen som styrer utførelsesflyten.

Denne begrensningen avskjærer mange Windows-API-er og undersøker verdien til stakkpekeren. Hvis adressen til stakkpekeren ikke faller mellom bunnen og toppen av stabelen, registreres en hendelse, og hvis den ikke er i overvåkingsmodus, avsluttes prosessen.

API-ene som fanges opp av denne begrensningen, er:

  • 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

Kompatibilitetshensyn

Programmer som bruker falske stabler påvirkes, og det er også en liten risiko for å avsløre subtile tidsberegningsfeil i flertrådete programmer. Programmer som utfører API-avskjæring, spesielt sikkerhetsprogramvare, kan forårsake kompatibilitetsproblemer med denne begrensningen.

Denne begrensningen er ikke kompatibel med begrensningen for vilkårlig kodebeskyttelse.

Konfigurasjonsalternativer

Bare overvåking – Du kan aktivere denne begrensningen i overvåkingsmodus for å måle den potensielle kompatibilitetsvirkningen på et program. Overvåkingshendelser kan deretter vises enten i hendelsesvisningen eller ved hjelp av Avansert jakt i Microsoft Defender for endepunkt.

Tips

Vil du lære mer? Engage med Microsoft Security-fellesskapet i teknisk fellesskap: Microsoft Defender for endepunkt teknisk fellesskap.