Jaa


Hyökkäysten eston viittaus

Koskee seuraavia:

Haluatko kokea Microsoft Defender for Endpointin? Rekisteröidy maksuttomaan kokeiluversioon.

Hyödyntämissuojaus tarjoaa lisäsuojauksia sovelluksille, joita suuryrityksen järjestelmänvalvojat ja IT-ammattilaiset voivat soveltaa sen jälkeen, kun kehittäjä on kääntänyt ja jakelenut ohjelmistoja.

Tässä artikkelissa kerrotaan, miten hyödyntämissuojaus toimii sekä käytäntötasolla että yksittäisen lievennyksen tasolla, jotta voit onnistuneesti luoda ja käyttää hyökkäyssuojakäytäntöjä.

Miten lievennyksiä käytetään

Hyökkäyssuojauksen mitätöinnit otetaan käyttöön sovelluskohtaisena.

Lievennykset määritetään rekisterimerkinnän kautta kullekin ohjelmalle, jolle määrität suojaukset. Nämä asetukset tallennetaan kunkin ohjelman (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\*ImageFileName*\MitigationOptions) MitigationOptions-rekisterimerkinnässä. Ne tulevat voimaan, kun käynnistät ohjelman uudelleen, ja ne pysyvät voimassa, kunnes muutat niitä ja käynnistät ohjelman uudelleen.

Tärkeää

Kuvatiedoston suoritusasetusten avulla voit määrittää vain tiedoston nimen tai polun, et versionumeroa, arkkitehtuuria tai mitään muuta erotinta. Ole varovainen, kun kohdistat lievennyksiä sovelluksiin, joilla on yksilölliset nimet tai polut, ja käytä niitä vain laitteissa, joissa olet testannut kyseisen version ja sovelluksen arkkitehtuurin.

Jos määrität suojauksen mitätöinnit XML-määritystiedoston avulla käyttämällä PowerShelliä, ryhmäkäytäntö tai MDM:ää, sinun on määritettävä sinulle yksittäiset rekisteriasetukset tätä XML-määritystiedostoa käsiteltäessä.

Hyödynnön suojauksen palauttaminen

Tärkeää

Kun XML-tiedoston jakamiskäytäntöä ei enää käytetä, tämän XML-määritystiedoston käyttöönottamia asetuksia ei poisteta automaattisesti.

Jos haluat poistaa hyödyntämisen suojausasetukset, vie XML-määritys puhtaasta Windows 10 tai Windows 11 laitteesta ja ota tämä uusi XML-tiedosto käyttöön. Vaihtoehtoisesti Microsoft tarjoaa XML-tiedoston osana perusaikataulujen Windowsin suojaus hyödynnön suojausasetusten palauttamiseksi.

Voit palauttaa hyödynnön suojausasetukset PowerShellin avulla seuraavalla komennolla:

Set-ProcessMitigation -PolicyFilePath EP-reset.xml

Seuraavassa on EP-reset.xml, joka on jaettu Windowsin suojaus perusaikataulujen kanssa:

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

Lievennysviittaus

Seuraavissa osioissa on eritelty kunkin hyödyntämissuojauksen lievennyksen tarjoamat suojaukset, lievennyksen yhteensopivuusongelmat ja käytettävissä olevat määritysvaihtoehdot.

Satunnainen koodisuoja

Kuvaus

Satunnainen koodisuoja auttaa suojautumaan haitalliselta hyökkääjältä, joka lataa valitsemansa koodin muistiin muistin turvallisuushaavoittuvuuden kautta ja pystyy suorittamaan koodin.

Mielivaltainen koodisuoja suojaa sovellusta dynaamisesti muodostetun koodin suorittamiselta (koodia, jota ei ladata esimerkiksi itse exe-tiedostosta tai dll-tiedostosta). Satunnainen koodisuoja estää muistin merkitsemisen suoritettavaksi. Kun sovellus yrittää varata muistia, tarkistamme suojausmerkinnät. (Muisti voidaan varata luku-, kirjoitus- ja/tai suoritussuojausmerkinnöillä.) Jos varaus yrittää sisällyttää suoritussuojausmerkinnän, muistin varaus epäonnistuu ja palauttaa virhekoodin (STATUS_DYNAMIC_CODE_BLOCKED). Vastaavasti jos sovellus yrittää muuttaa jo varatun muistin suojausmerkintöjä joka on jo varattu ja sisältää suoritussuojausmerkinnän, käyttöoikeuksien muutos epäonnistuu ja palauttaa virhekoodin (STATUS_DYNAMIC_CODE_BLOCKED).

Estämällä suoritusmerkinnän määrittämisen Windows 10 ja Windows 11:n tietojen suorittamisen estotoiminto voi sitten suojautua kyseiselle muistille asetetulta komento-osoittimelta ja suorittaa koodin.

Yhteensopivuusongelmat

Satunnainen koodisuoja estää muistin varaamisen suoritettavaksi tiedostoksi, mikä aiheuttaa yhteensopivuusongelman esimerkiksi Just-in-Time (JIT) -kääntäjien kanssa. Useimmat nykyaikaiset selaimet esimerkiksi kääntävät JavaScriptin alkuperäiseen koodiin suorituskyvyn optimoimiseksi. Tämän lievennyksen tukemiseksi ne on ohjattava uudelleen, jotta JIT-käännös voidaan siirtää suojatun prosessin ulkopuolelle. Muut sovellukset, joiden rakenne luo dynaamisesti koodia komentosarjoista tai muista välikielistä, eivät myöskään ole yhteensopivia tämän lievennyksen kanssa.

Määritysasetukset:

Salli säikeen kieltäytyminen – voit määrittää lievennyksen sallimaan yksittäisen säikeen kieltäytymisen tästä suojauksesta. Kehittäjän on kirjoitettava sovellus tietoisina tästä lievennyksesta ja kutsuttava SetThreadInformation-ohjelmointirajapintaa , jonka ThreadInformation-parametrin arvoksi on määritetty ThreadDynamicCodePolicy , jotta hän voi suorittaa dynaamista koodia tässä säikeessä.

Vain valvonta – Voit ottaa tämän lievennyksen käyttöön valvontatilassa, jotta voit mitata sovelluksen mahdollisia yhteensopivuusvaikutuksia. Valvontatapahtumia voi tarkastella joko tapahtumienvalvonnassa tai Defender for Endpointinkehittyneen etsinnän avulla.

Estä eheydeltään alhaiset kuvat

Kuvaus

Heikkojen eheyskuvien estäminen estää sovellusta lataamasta tiedostoja, joihin ei luoteta, yleensä siksi, että ne on ladattu Internetistä eristetystä selaimesta.

Tämä lievennys estää näköistiedoston lataamisen, jos kuvassa on Käyttöoikeuksien hallinta Entry (ACE), joka myöntää käyttöoikeuden matalan ehtymisen prosesseihin ja jossa ei ole luottamusotsikon ACE:tä. Muistinhallinta toteuttaa sen, mikä estää tiedoston yhdistämisen muistiin. Jos sovellus yrittää yhdistää pienen eheyden näköistiedoston, se aiheuttaa STATUS_ACCESS_DENIED virheen. Lisätietoja eheystasojen toiminnasta on kohdassa Pakollinen eheyden valvonta.

Yhteensopivuusongelmat

Heikkojen eheyskuvien estäminen estää sovellusta lataamasta Internetistä ladattuja tiedostoja. Jos sovelluksen työnkulku edellyttää ladattujen kuvien lataamista, haluat varmistaa, että ne on ladattu korkeamman luottamuksen prosessista tai että ne on merkitty uudelleen, jotta lievennys voidaan ottaa käyttöön.

Määritysasetukset:

Vain valvonta – Voit ottaa tämän lievennyksen käyttöön valvontatilassa, jotta voit mitata sovelluksen mahdollisia yhteensopivuusvaikutuksia. Valvontatapahtumia voi tarkastella joko tapahtumienvalvonnassa tai Microsoft Defender for Endpointinkehittyneen etsinnän avulla.

Estä etäkuvat

Kuvaus

Etänäköistiedostojen estäminen auttaa estämään sovellusta lataamasta etälaitteessa isännöityjä tiedostoja, kuten UNC-jakoa. Etäkuvien estäminen auttaa suojautumaan lataamasta binaaritiedostoja muistiin, joka on hyökkääjän hallitsemassa ulkoisessa laitteessa.

Tämä lievennys estää näköistiedoston lataamisen, jos kuvan on määritetty olevan etälaitteessa. Muistinhallinta toteuttaa sen, mikä estää tiedoston yhdistämisen muistiin. Jos sovellus yrittää yhdistää etätiedoston, se aiheuttaa STATUS_ACCESS_DENIED virheen.

Yhteensopivuusongelmat

Estä etäkuvat estävät sovellusta lataamasta kuvia etälaitteista. Jos sovellus lataa tiedostoja tai laajennuksia etälaitteista, se ei ole yhteensopiva tämän lievennyksen kanssa.

Määritysasetukset:

Vain valvonta – Voit ottaa tämän lievennyksen käyttöön valvontatilassa, jotta voit mitata sovelluksen mahdollisia yhteensopivuusvaikutuksia. Valvontatapahtumia voi tarkastella joko tapahtumienvalvonnassa tai Microsoft Defender for Endpointinkehittyneen etsinnän avulla.

Estä muut kuin luotetut fontit

Kuvaus

Estä fontit, joihin ei luoteta, vähentää fonttijäsennyksen virheen riskiä, joka johtaa siihen, että hyökkääjä pystyy suorittamaan koodia laitteessa. GDI lataa vain windows\fonts-hakemistoon asennetut fontit käsittelyä varten.

Tämä lievennys toteutetaan GDI:ssä, joka vahvistaa tiedoston sijainnin. Jos tiedosto ei ole järjestelmän fonttien hakemistossa, fonttia ei ladata jäsennystä varten ja kyseinen kutsu epäonnistuu.

Tämä lievennys täydentää Windows 10 1607:ssä ja uudemmissa versioissa sekä Windows 11:ssä annettua sisäistä lievennystä, joka siirtää fonttijäsennyksen ytimestä käyttäjätilan sovellussäilöön. Kaikki fonttijäsennykseen perustuvat hyödyntämiset tapahtuvat eristetyssä ja eristetyssä kontekstissa, mikä vähentää riskiä merkittävästi. Lisätietoja tästä lievennymisestä on blogissa Hardening Windows 10, jossa on nollapäiväisiä hyökkäysten lieventämisiä.

Yhteensopivuusongelmat

Yleisin fonttien käyttö järjestelmän fonttihakemiston ulkopuolella on verkkofontit. Nykyaikaiset selaimet, kuten Microsoft Edge, käyttävät DirectWrite GDI:n sijaan, joten ne eivät kärsi. Tämä voi kuitenkin vaikuttaa vanhoihin selaimiin, kuten Internet Explorer 11:een (ja IE-tilaan uudessa Microsoft Edgessä) erityisesti Office 365:n kaltaisten sovellusten kanssa, jotka näyttävät käyttöliittymän fonttimerkkien avulla.

Määritysasetukset:

Vain valvonta – Voit ottaa tämän lievennyksen käyttöön valvontatilassa, jotta voit mitata sovelluksen mahdollisia yhteensopivuusvaikutuksia. Valvontatapahtumia voi tarkastella joko tapahtumienvalvonnassa tai Microsoft Defender for Endpointinkehittyneen etsinnän avulla.

Koodin yhtenäisyyssuojaus

Kuvaus

Koodin eheyden suojaus varmistaa, että Microsoft allekirjoittaa digitaalisesti kaikki prosessiin ladatut binaaritiedostot. Koodin eheyssuoja sisältää WHQL (Windows Hardware Quality Labs) -allekirjoitukset, joiden avulla WHQL-hyväksytyt ohjaimet voidaan suorittaa prosessin aikana.

Tämä lievennys toteutetaan muistinhallinnassa, mikä estää binaarin yhdistämisen muistiin. Jos yrität ladata binaarin, jota Microsoft ei ole allekirjoittanut, muistin mies palauttaa virheen STATUS_INVALID_IMAGE_HASH. Estämällä muistinhallinnan tasolla tämä estää sekä prosessin lataamat binaarit että prosessiin lisätyt binaaritiedostot.

Yhteensopivuusongelmat

Tämä lievennys estää erityisesti kaikki binaarit, joita Microsoft ei ole allekirjoittanut. Näin ollen se ei ole yhteensopiva useimpien muiden kuin Microsoft-ohjelmistojen kanssa, ellei Microsoft Store ja (digitaalisesti allekirjoittanut) ja ellei Microsoft Storen allekirjoittamien kuvien lataaminen ole valittuna.

Määritysasetukset:

Salli myös Microsoft Storen allekirjoittamien kuvien lataaminen – Microsoft Storen jakamat sovellukset ovat Microsoft Storen digitaalisesti allekirjoittamia, ja tämän määrityksen lisääminen mahdollistaa sen, että sovellus lataa säilön sertifiointiprosessin läpi käyvät binaaritiedostot.

Vain valvonta – Voit ottaa tämän lievennyksen käyttöön valvontatilassa, jotta voit mitata sovelluksen mahdollisia yhteensopivuusvaikutuksia. Valvontatapahtumia voi tarkastella joko tapahtumienvalvonnassa tai Microsoft Defender for Endpointinkehittyneen etsinnän avulla.

Hallintavirran suojaus (CFG)

Kuvaus

Ohjausobjektin virtaussuoja (CFG) vähentää muistin vioittumishaavoittuvuuksia käyttävien hyökkääjien riskiä suojaamalla epäsuoria toimintokutsuja. Hyökkääjä saattaa esimerkiksi käyttää puskurin ylivuotohaavoittuvuutta funktioosoittimen sisältävän muistin korvaamiseen ja korvata kyseisen funktio-osoittimen valitsemallaan suorituskoodin osoittimella (joka voidaan myös lisätä ohjelmaan).

Tämä lievennys tehdään lisäämällä toinen tarkistus kääntämisen aikana. Ennen kutakin epäsuoraa funktiokutsua lisätään toinen ohje, joka varmistaa, että kohde on kelvollinen kutsukohde, ennen kuin sitä kutsutaan. Jos kohde ei ole kelvollinen kutsun kohde, sovellus lopetetaan. Näin ollen vain SOVELLUKSET, jotka on käännetty CFG-tuella, voivat hyötyä tästä lievennystavasta.

Windows-ydin tarkistaa kelvollisen kohteen. Kun suoritettavat tiedostot ladataan, epäsuorien puhelukohteiden metatiedot poimitaan lataushetkellä ja merkitään kelvollisiksi kutsun kohteiksi. Lisäksi kun muisti varataan ja merkitään suoritettavaksi (kuten luodulle koodille), nämä muistisijainnit merkitään myös kelvollisiksi kutsukohteiksi, jotka tukevat jit-kääntämisen kaltaisia mekanismeja.

Yhteensopivuusongelmat

Koska sovellukset on käännettävä tukemaan CFG:tä, ne ilmoittavat implisiittisesti yhteensopivuutensa sen kanssa. Tämän vuoksi useimpien sovellusten pitäisi toimia, kun tämä lievennys on käytössä. Koska nämä tarkistukset on käännetty binaariin, käytettävissä oleva määritys on vain tarkistusten poistaminen käytöstä Windows-ytimessä. Toisin sanoen lievennys on käytössä oletusarvoisesti, mutta voit määrittää Windows-ytimen aina palauttamaan arvon "kyllä", jos myöhemmin huomaat, että on olemassa yhteensopivuusongelma, jota sovelluskehittäjä ei löytänyt testauksessaan, minkä pitäisi olla harvinaista.

Määritysasetukset:

Käytä tiukkaa CFG-koodia – strict-tilassa kaikki prosessiin ladatut binaaritiedostot on käännettävä Control Flow Guardia varten (tai niissä ei ole suoritettavaa koodia, kuten resurssi-dll-tiedostoja), jotta ne voidaan ladata.

Huomautus

Ohjausobjektin työnkulun suojauksella ei ole valvontatilaa. Binaarit on käännetty käyttäen tätä lievennystä.

Tietojen suorittamisen esto (DEP)

Kuvaus

Tietojen suorittamisen estäminen estää sellaisen muistin suorittamisen, jota ei ole eksplisiittisesti määritetty suoritettavaksi. DEP auttaa suojautumaan hyökkääjältä, joka lisää prosessiin haitallista koodia, kuten puskurin ylivuodon kautta, ja suorittaa sitten koodin.

Jos yrität asettaa ohjeosoittimen muistiosoitteeseen, jota ei ole merkitty suoritettavaksi, suoritin aiheuttaa poikkeuksen (yleinen suojausrikkomus), jolloin sovellus kaatuu.

Yhteensopivuusongelmat

Kaikissa x64-, ARM- ja ARM-64-tiedostoissa on oletusarvoisesti DEP-toiminto käytössä, eikä sitä voi poistaa käytöstä. Koska sovellusta ei suoriteta ilman dep-toimintoa, yhteensopivuuden oletetaan olevan.

Kaikissa x86:n (32-bittisissä) binaaritiedostoissa on oletusarvoisesti käytössä DEP, mutta DEP voidaan poistaa käytöstä prosessikohtaisesti. Jotkin vanhat sovellukset, jotka on yleensä kehitetty ennen Windows XP SP2:a, eivät ehkä ole yhteensopivia DEP:n kanssa. Tällaiset sovellukset luovat yleensä koodin dynaamisesti (esimerkiksi JIT-kääntäminen) tai linkittävät vanhempiin kirjastoihin (kuten ATL:n vanhempiin versioihin), jotka luovat koodin dynaamisesti.

Määritysasetukset:

Ota ATL Thunk -emulointi käyttöön – tämä määritysasetus poistaa ATL Thunk -emuloinnin käytöstä. ActiveX-mallikirjasto ATL on suunniteltu mahdollisimman pieneksi ja nopeaksi. Binaarikoon pienentämiseksi se käyttäisi thunking-tekniikkaa. Thunkingia ajatellaan yleensä 32-bittisten ja 16-bittisten sovellusten vuorovaikutuksessa, mutta ATL:ssä ei ole tässä 16-bittisiä osia. Sen sijaan ATL tallentaa binaarikoon optimoimiseksi konekoodin muistiin, jota ei ole word-tasattu (pienen binaarimuodon luominen) ja kutsuu sitten kyseisen koodin suoraan. Visual Studio 7.1:n tai sitä aiempien versioiden kanssa käännetyt ATL-osat (Visual Studio 2003) eivät varaa tätä muistia suoritettavaksi - ehunk-emulointi ratkaisee yhteensopivuusongelman. Sovelluksissa, joissa on binaarilaajennusmalli (kuten Internet Explorer 11), on usein otettava ATL Thunk -emulointi käyttöön.

Poista laajennuskohdat käytöstä

Kuvaus

Tämä lievennys poistaa käytöstä sovelluksen eri laajennuspisteet, joita voidaan käyttää haitallisen sisällön pysyvyyden määrittämiseen tai oikeuksien nostamiseen.

Tällaisia ovat esimerkiksi:

  • AppInit DLL :t – Aina kun prosessi käynnistyy, järjestelmä lataa määritetyn DLL:n juuri aloitetun prosessin kontekstiin, ennen kuin se kutsuu aloituspisteen funktiota. AppInit DLL -luetteloiden tiedot löytyvät täältä. Kun tämä lievennys on käytössä, AppInit DLL -tiedostoja ei ladata. Windows 7:stä alkaen AppInit-DLL-tiedostot on allekirjoitettava digitaalisesti tässä kuvatulla tavalla. Lisäksi Windows 8 alkaen AppInit-DLL-tiedostoja ei ladata, jos SecureBoot on käytössä, kuten tässä on kuvattu.
  • Vanhat kirjoitustuet Kirjoitustuen (IME) avulla käyttäjä voi kirjoittaa tekstiä kielellä, jossa on enemmän merkkejä kuin näppäimistössä voi esittää. Kolmannet osapuolet voivat luoda pikaviestejä. Haitallinen IME voi hankkia tunnistetiedot tai muita arkaluonteisia tietoja tästä syötteen sieppauksesta. Jotkin IME:t, joita kutsutaan vanhoiksi pikaviesteiksi, toimivat vain Windowsin työpöytäsovelluksissa, eivät UWP-sovelluksissa. Tämä lievennys estää myös tämän vanhan kirjoitustuen (IME) lataamisen määritettyyn Windowsin työpöytäsovellukseen.
  • Windowsin tapahtumakoukut – sovellus voi kutsua SetWinEventHook-ohjelmointirajapintaa rekisteröidäkseen kiinnostuksen tapahtumaan. DLL on määritetty, ja se voidaan lisätä prosessiin. Tämä lievennys pakottaa, että koukku julkaistaan rekisteröintiprosessiin sen sijaan, että se suoritettiin prosessin aikana lisätyn DLL-tiedoston kautta.

Yhteensopivuusongelmat

Useimpia näistä laajennuspisteistä käytetään melko harvoin, joten yhteensopivuusvaikutus on yleensä pieni erityisesti yksittäisellä sovellustasolla. Yksi huomioon otettava seikka on se, käyttävätkö käyttäjät kolmannen osapuolen vanhoja ime-järjestelmiä, jotka eivät toimi suojatun sovelluksen kanssa.

Määritysasetukset:

Tälle lievennystoiminnolle ei ole määritysasetuksia.

Huomautus

Laajennuspisteiden käytöstä poistamisella ei ole valvontatilaa.

Poista Win32k-järjestelmäpuhelut käytöstä

Kuvaus

Win32k.sys tarjoaa laajan hyökkäysalueen hyökkääjälle. Ydintilan osana se kohdistuu usein eristetyille sovelluksille tilanvaihtovektorina. Tämä lievennys estää win32k.sys-kutsut estämällä säikeen muuntamisen GUI-säikeeksi, jolle annetaan käyttöoikeus Win32k-funktioiden kutsumiseen. Säie ei ole GUI-muotoinen, kun se luodaan, mutta se muunnetaan ensimmäisellä kutsulla osoitteeseen win32k.sys tai ohjelmointirajapintakutsulla IsGuiThreadiin.

Yhteensopivuusongelmat

Tämä lievennys on suunniteltu prosesseille, jotka ovat erillisiä muita kuin käyttöliittymäprosesseja. Esimerkiksi monet nykyaikaiset selaimet käyttävät prosessin eristämistä ja sisältävät muita kuin käyttöliittymäprosesseja. Tämä lievennys vaikuttaa kaikkiin sovelluksiin, jotka näyttävät GUI-tunnuksen käyttäen yhtä prosessia.

Määritysasetukset:

Vain valvonta – Voit ottaa tämän lievennyksen käyttöön valvontatilassa, jotta voit mitata sovelluksen mahdollisia yhteensopivuusvaikutuksia. Valvontatapahtumia voi tarkastella joko tapahtumienvalvonnassa tai Microsoft Defender for Endpointinkehittyneen etsinnän avulla.

Älä salli alaprosesseja

Kuvaus

Tämä lievennys estää sovellusta luomasta uusia alisovelluksia. Yleinen vihollisten käyttämä tekniikka on aloittaa luotettu prosessi laitteessa haitallisella syötteellä ("living off the land" -hyökkäys), joka usein edellyttää toisen sovelluksen käynnistämistä laitteessa. Jos ei ole olemassa mitään oikeutettuja syitä sille, miksi sovellus käynnistäisi aliprosessin, tämä lievennys lieventää mahdollista hyökkäysvektoria. Lievennystä käytetään määrittämällä prosessitunnuksen ominaisuus, joka estää tunnuksen luomisen aliprosessille virhesanomalla STATUS_CHILD_PROCESS_BLOCKED.

Yhteensopivuusongelmat

Jos sovelluksesi käynnistää alisovelluksia jostakin syystä, kuten tukemalla hyperlinkkejä, jotka käynnistävät selaimen tai ulkoisen selaimen tai jotka käynnistävät muita apuohjelmia tietokoneessa, tämä toiminto on katkennut tämän lievennyksen käytössä.

Määritysasetukset:

Vain valvonta – Voit ottaa tämän lievennyksen käyttöön valvontatilassa, jotta voit mitata sovelluksen mahdollisia yhteensopivuusvaikutuksia. Valvontatapahtumia voi tarkastella joko tapahtumienvalvonnassa tai Microsoft Defender for Endpointinkehittyneen etsinnän avulla.

Vie osoitesuodatus

Kuvaus

Vientiosoitteen suodatus (EAF) vähentää haittakoodin riskiä katsomalla kaikkien ladattujen moduulien vientiosoitetaulukkoa löytääkseen moduuleja, jotka sisältävät hyödyllisiä ohjelmointirajapintoja niiden hyökkäyksille. Tämä on yleinen shellcoden käyttämä tapa. Tällaisen hyökkäyksen riskin pienentämiseksi tämä lievennys suojaa kolmea yleisesti hyökkäyksen kohteena olevaa moduulia:

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

Lievennys suojaa [vientihakemiston, joka osoittaa vientiosoitetaulukkoon, muistisivun. Tässä muistisivussa on käytössä PAGE_GUARD suojaus. Kun joku yrittää käyttää tätä muistia, se luo STATUS_GUARD_PAGE_VIOLATION. Lievennys käsittelee tämän poikkeuksen, ja jos käyttöohje ei läpäise vahvistusta, prosessi lopetetaan.

Yhteensopivuusongelmat

Tämä lievennys on ensisijaisesti ongelma sovelluksille, kuten virheenkorjaussovelluksille, eristetyille sovelluksille, DRM:iä käyttäville sovelluksille tai sovelluksille, jotka ottavat käyttöön virheenkorjauksen torjuntateknologiaa.

Määritysasetukset:

Vahvista sellaisten moduulien käyttöoikeudet, joita hyödyntävät moduulit käyttävät yleisesti väärin – Tämä vaihtoehto, joka tunnetaan myös nimellä EAF+, lisää suojausta muille usein hyökkäyksen kohteena oleville moduuleille:

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

Lisäksi ottamalla EAF+:n käyttöön tämä lievennys lisää PAGE_GUARD suojauksen sivulle, joka sisältää "MZ"-otsikon eli DOS-otsikon kaksi ensimmäistä tavua PE-tiedostossa. Tämä on toinen tunnettuun muistisisältöön liittyvä osa, jota liittymäkoodi voi etsiä muistiin mahdollisesti kiinnostavien moduulien tunnistamiseksi.

Vain valvonta – Voit ottaa tämän lievennyksen käyttöön valvontatilassa, jotta voit mitata sovelluksen mahdollisia yhteensopivuusvaikutuksia. Valvontatapahtumia voi tarkastella joko tapahtumienvalvonnassa tai Microsoft Defender for Endpointinkehittyneen etsinnän avulla.

Pakota kuvien satunnaistaminen (pakollinen ASLR)

Kuvaus

Osoitetilan asettelun satunnaistaminen (ASLR) vähentää riskiä, että hyökkääjä käyttää järjestelmän muistiasettelun tuntemustaan suorittaakseen koodin, joka on jo prosessin muistissa ja joka on jo merkitty suoritettavaksi. Tämä voi vähentää hyökkääjän riskiä käyttämällä tekniikoita, kuten paluu-libc-hyökkäyksiä, joissa hyökkääjä asettaa kontekstin ja muokkaa sitten palautusosoitetta suorittamaan olemassa olevan koodin kontekstilla, joka sopii hyökkääjän tarkoitukseen.

Pakollinen ASLR pakottaa prosessin kaikkien DLL-luetteloiden uudelleenkannan. Kehittäjä voi ottaa ASLR:n käyttöön / DYNAMICBASE-linkitinasetuksen avulla, ja tällä lievennystoiminnolla on sama vaikutus.

Kun muistinhallinta yhdistää kuvan prosessiin, pakollinen ASLR palauttaa väkisin DLL-tiedostot ja exe-tiedostot, jotka eivät ole valinneet ASLR:ää. Huomaa kuitenkin, että tällä käänteessä ei ole entropiaa, joten se voidaan sijoittaa ennustettavaan paikkaan muistissa. Binaarien uudelleenperustaisessa ja satunnaistetussa sijainnissa tämä lievennys tulee yhdistää Randomize Memory Allocations (Bottom-Up ASLR) -varauksiin.

Yhteensopivuusongelmat

Tämä ASLR:n yhteensopivuusvaikutus rajoittuu yleensä vanhempiin sovelluksiin, jotka on luotu käyttäen kääntäjää, joka on tehnyt oletuksia binaaritiedoston perusosoitteesta tai poistanut perussiirtymistiedot. Tämä voi johtaa odottamattomiin virheisiin, kun suoritustyönkulku yrittää siirtyä odotettuun sijaintiin muistissa olevan todellisen sijainnin sijaan.

Määritysasetukset:

Älä salli poistettuja kuvia - Tämä asetus estää sellaisten kuvien lataamisen, joiden uudelleensijoitustiedot on poistettu. Windows PE -tiedostomuoto sisältää absoluuttisia osoitteita, ja kääntäjä luo myös [perussiirtymistaulukon, jonka avulla latausohjelma voi etsiä kaikki suhteelliset muistiviittaukset ja niiden siirtymän, joten ne voidaan päivittää, jos binaari ei lataudu ensisijaiseen perusosoitteeseensa. Jotkin vanhemmat sovellukset poistavat nämä tiedot tuotannon koontiversioista, joten näitä binaaritiedostoja ei voi käyttää uudelleen. Tämä lievennys estää tällaisten binaaritiedostojen lataamisen (sen sijaan, että ne latautuisivat ensisijaiseen perusosoitteeseensa).

Huomautus

Kuvien pakotetussa satunnaistuksessa (pakollinen ASLR) ei ole valvontatilaa.

Laitteistoon pakotettu pinonsuojaus

Kuvaus

Laitteistoon pakotettu pinosuojaus tarjoaa vankan suojauksen ROP-hyödynnyksiltä, koska se ylläpitää tietoja ohjelman suunnitellusta suoritustyönkulusta. Ekosysteemien sujuvan käyttöönoton ja sovellusten yhteensopivuuden varmistamiseksi Windows tarjoaa tämän suojauksen suostumismallina, jotta kehittäjät voivat saada tämän suojan omaan tahtiuseesi.

Yhteensopivuusongelmat

Laitteistoon pakotettu pinonsuojaus toimii vain piirisarjoissa, jotka tukevat laitteiston varjopinoja, Intelin control-flow Enforcement Technologyä (CET) tai AMD-varjopinoja.

Määritysasetukset:

Vain valvonta – Voit ottaa tämän lievennyksen käyttöön valvontatilassa, jotta voit mitata sovelluksen mahdollisia yhteensopivuusvaikutuksia. Valvontatapahtumia voi tarkastella joko tapahtumienvalvonnassa tai Defender for Endpointinkehittyneen etsinnän avulla.

Pakota kaikkiin moduuleihin yhteensopivien moduulien sijaan : voit ottaa tämän lievennyksen käyttöön kaikille moduuleille yhteensopivien moduulien sijaan.

Osoitesuodatuksen tuonti (IAF)

Kuvaus

Tuontiosoitteen suodatuksen (IAF) lievennys auttaa vähentämään riskiä, että hyökkääjä muuttaa sovelluksen hallintatyönkulkua muokkaamalla tuontiosoitetaulukkoa (IAT) ohjaamaan hyökkääjän valitseman satunnaisen koodin, kun kyseistä funktiota kutsutaan. Hyökkääjä voi käyttää tätä menetelmää kaapatakseen hallinnan tai siepatakseen, tarkastaakseen ja mahdollisesti estääkseen puhelut arkaluontoisiin ohjelmointirajapintoihin.

Kaikkien suojattujen ohjelmointirajapintoja varten määritettyjen muistisivujen PAGE_GUARD suojaus on käytössä. Kun joku yrittää käyttää tätä muistia, se luo STATUS_GUARD_PAGE_VIOLATION. Lievennys käsittelee tämän poikkeuksen, ja jos käyttöohje ei läpäise vahvistusta, prosessi lopetetaan.

Tämä lievennys suojaa seuraavat Windows-ohjelmointirajapinnat:

  • 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

Yhteensopivuusongelmat

Tämä lievennys saattaa havaita luotettavia sovelluksia, jotka suorittavat ohjelmointirajapinnan sieppauksen ja aiheuttaa joidenkin sovellusten kaatumisen. Esimerkkejä ovat suojausohjelmistot ja sovellusten yhteensopivuusongelmat.

Määritysasetukset:

Vain valvonta – Voit ottaa tämän lievennyksen käyttöön valvontatilassa, jotta voit mitata sovelluksen mahdollisia yhteensopivuusvaikutuksia. Valvontatapahtumia voi tarkastella joko tapahtumienvalvonnassa tai Microsoft Defender for Endpointinkehittyneen etsinnän avulla.

Satunnaista muistiallokoinnit (Alhaalta ylös ASLR)

Kuvaus

Satunnaista muistivaraukset (alhaalta ylös ASLR) lisää entropiaa uudelleensijoituksiin, joten niiden sijainti on satunnainen ja siten vähemmän ennustettavissa. Tämä lievennys edellyttää, että pakollinen ASLR tulee voimaan.

32-bittisen osoitetilan koko asettaa käytännöllisiä rajoituksia entropialle, ja siksi 64-bittiset sovellukset tekevät hyökkääjän vaikeammaksi arvata sijaintia muistissa.

Yhteensopivuusongelmat

Useimmat sovellukset, jotka ovat yhteensopivia pakollisen ASLR:n kanssa (uudelleenmääritys), ovat myös yhteensopivia toisen alhaalta ylös -ASLR-entropian kanssa. Joissakin sovelluksissa voi olla osoittimen katkaisuongelmia, jos ne tallentavat paikallisia osoittimia 32-bittisiin muuttujiin (odotetaan, että perusosoite on alle 4 Gt), joten se ei ole yhteensopiva suuren entropy-asetuksen kanssa (tämä voidaan poistaa käytöstä).

Määritysasetukset:

Älä käytä suurta entropiaa – tämä asetus poistaa käytöstä suuren entropian ASLR:n, joka lisää 24 bittiä entropiaa (1 Tt varianssia) 64-bittisten sovellusten alhaalta ylöspäin -varausta varten.

Huomautus

Satunnaista muistivarauksia (alhaalta ylös ASLR) ei ole valvontatilaa.

Simuloi toteutus (SimExec)

Kuvaus

Simuloi suoritusta (SimExec) on lievennys vain 32-bittisille sovelluksille. Tämä auttaa vahvistamaan, että arkaluontoisiin ohjelmointirajapintoihin liittyvät kutsut palaavat laillisiin kutsujatoimintoihin. Se tekee tämän sieppaamalla kutsut arkaluontoisiin ohjelmointirajapintoihin ja simuloimalla sitten näiden ohjelmointirajapintojen suorittamista käymällä läpi koodatun kokoonpanon kieliohjeet etsimällä RET-ohjetta, jonka pitäisi palata kutsujalle. Sen jälkeen se tarkistaa funktion ja etsii edelliset KUTSU-ohjeet muistista taaksepäin ja selvittää, täsmääkö funktio ja KUTSU-ohje ja ettei RET-komentoa ole siepattu.

Tämän lievennyksen sieppaamat ohjelmointirajapinnat ovat seuraavat:

  • 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

Jos ROP-pienoisohjelma havaitaan, prosessi lopetetaan.

Yhteensopivuusongelmat

Sovellukset, jotka suorittavat ohjelmointirajapintaa, erityisesti tietoturvaohjelmistot, voivat aiheuttaa yhteensopivuusongelmia tämän lievennyksen kanssa.

Tämä lievennys ei ole yhteensopiva satunnaisen koodisuojan lievennyksen kanssa.

Määritysasetukset:

Vain valvonta – Voit ottaa tämän lievennyksen käyttöön valvontatilassa, jotta voit mitata sovelluksen mahdollisia yhteensopivuusvaikutuksia. Valvontatapahtumia voi tarkastella joko tapahtumienvalvonnassa tai Microsoft Defender for Endpointinkehittyneen etsinnän avulla.

Vahvistaa API-turvaukset (CallerCheck)

Kuvaus

Validate API -kutsu (CallerCheck) on lievennys palautussuuntautuneille ohjelmointitekniikoille (ROP), jotka vahvistavat, että kelvollisen kutsujan kutsuja kutsui arkaluontoisia ohjelmointirajapintoja. Tämä lievennys tarkistaa välitetyn palautusosoitteen ja purkaa sitten heuristisesti taaksepäin löytääkseen palautusosoitteen yläpuolella olevan kutsun sen määrittämiseksi, vastaako kutsukohde funktioon välitettyä parametria.

Tämän lievennyksen sieppaamat ohjelmointirajapinnat ovat seuraavat:

  • 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

Jos ROP-pienoisohjelma havaitaan, prosessi lopetetaan.

Yhteensopivuusongelmat

Sovellukset, jotka suorittavat ohjelmointirajapintaa, erityisesti tietoturvaohjelmistot, voivat aiheuttaa yhteensopivuusongelmia tämän lievennyksen kanssa.

Tämä lievennys ei ole yhteensopiva satunnaisen koodisuojan lievennyksen kanssa.

Määritysasetukset:

Vain valvonta – Voit ottaa tämän lievennyksen käyttöön valvontatilassa, jotta voit mitata sovelluksen mahdollisia yhteensopivuusvaikutuksia. Valvontatapahtumia voi tarkastella joko tapahtumienvalvonnassa tai Microsoft Defender for Endpointinkehittyneen etsinnän avulla.

Vahvistaa poikkeusketjut (SEHOP)

Kuvaus

SeHOP (Validate exception chains) on lievennys Structured Exception Handler (SEH) -korvausten hyödyntämistekniikkaa vastaan. Jäsennetty poikkeuskäsittely on prosessi, jonka avulla sovellus voi pyytää käsittelemään tietyn poikkeuksen. Poikkeuskäsittelijät on ketjutettu yhteen, joten jos yksi poikkeuskäsittelijä päättää olla käsittelemättä tiettyä poikkeusta, se voidaan siirtää ketjun seuraavalle poikkeuskäsittelijälle, kunnes se päätetään käsitellä. Koska käsittelijäluettelo on dynaaminen, se tallennetaan pinoon. Hyökkääjä voi pinon ylivuotohaavoittuvuuden avulla korvata poikkeuskäsittelijän osoittimella hyökkääjän valitseman koodin kohdalle.

Tämä lievennys perustuu SEH-rakenteeseen, jossa kukin SEH-merkintä sisältää sekä osoittimen poikkeuskäsittelijään että osoittimen poikkeusketjun seuraavaan käsittelijään. Poikkeuksen lähetystoiminto pyytää tätä lievennystä, joka vahvistaa SEH-ketjun, kun poikkeus käynnistetään. Se varmistaa, että:

  • Kaikki poikkeusketjutietueet ovat pinon rajojen sisällä
  • Kaikki poikkeustietueet on tasattu
  • Mikään poikkeuskäsittelijän osoitin ei osoita pinoon
  • Taaksepäin osoitinta ei ole
  • Poikkeusketju päättyy tunnettuun lopulliseen poikkeuskäsittelijään

Jos nämä vahvistukset epäonnistuvat, poikkeusten käsittely keskeytetään eikä poikkeusta käsitellä.

Yhteensopivuusongelmat

Yhteensopivuusongelmat SEHOP:n kanssa ovat melko harvinaisia. On epätavallista, että sovellus on riippuvainen poikkeusketjun vioittumisesta. Joihinkin sovelluksiin vaikuttavat kuitenkin ajoituksen hienovaraiset muutokset, jotka saattavat ilmetä kilpailuehtona, joka paljastaa sovelluksessa piilevän monisäikeisen virheen.

Määritysasetukset:

Huomautus

Tarkista poikkeusketjut (SEHOP) -toiminnolla ei ole valvontatilaa.

Vahvistaa käsittelykäytön

Kuvaus

Kahvan käytön vahvistaminen on lievennys, joka auttaa suojautumaan hyökkääjältä käyttämällä olemassa olevaa kahvaa suojatun objektin käyttämiseen. Kahva on viittaus suojattuun objektiin. Jos sovelluskoodi viittaa virheelliseen kahvaan, se voi tarkoittaa sitä, että vastustaja yrittää käyttää aiemmin tallentamaansa kahvaa (mutta mistä sovellusviittausten laskemisesta ei ole tietoa). Jos sovellus yrittää käyttää virheellistä objektia pelkän tyhjäarvon palauttamisen sijaan, sovellus aiheuttaa poikkeuksen (STATUS_INVALID_HANDLE).

Tämä lievennys otetaan automaattisesti käyttöön Windows-kaupan sovelluksissa.

Yhteensopivuusongelmat

Tämä lievennys voi vaikuttaa sovelluksiin, jotka eivät seuranneet tarkasti kahvojen viittauksia ja jotka eivät paketoineet näitä toimintoja poikkeuskäsittelijöissä.

Määritysasetukset:

Huomautus

Vahvistuskahvan käytöllä ei ole valvontatilaa.

Vahvistaa keon eheyden

Kuvaus

Vahvistuksen keon eheyden lievennys lisää keon lievennysten suojaustasoa Windowsissa, jolloin sovellus lopetetaan, jos keon vioittuminen havaitaan. Lievennyksiä ovat muun muassa seuraavat:

  • Heap-kahvan vapauttaminen
  • Toisen vahvistuksen suorittaminen keon varausten laajennetuille lohko-otsikoille
  • Varmistetaan, että heap-varausta ei ole jo merkitty käytössä-asennon merkinnällä
  • Suojaussivujen lisääminen suuriin varauksiin, kekosegmentteihin ja alisegmentteihin, jotka ylittävät vähimmäiskoon

Yhteensopivuusongelmat

Tämä lievennys on jo käytössä oletusarvoisesti 64-bittisissä sovelluksissa ja 32-bittisissä sovelluksissa, joiden kohteena on Windows Vista tai uudempi versio. Windows XP:n tai sitä aiempien versioiden vanhat sovellukset ovat vaarassa, mutta yhteensopivuusongelmat ovat harvinaisia.

Määritysasetukset:

Huomautus

Vahvista keon eheys -toiminnolla ei ole valvontatilaa.

Vahvistaa kuvariippuvuuden eheyden

Kuvaus

Vahvista näköistiedostojen riippuvuuden lievennys auttaa suojautumaan hyökkäyksiltä, jotka yrittävät korvata koodia dll-tiedostoille, jotka Windowsin binaarit linkittävät staattisesti. DLL-istutuksen tekniikka käyttää väärin lataajan hakumekanismia haitallisen koodin syöttämiseksi. Sen avulla voidaan saada haitallinen koodi toimimaan laajennetussa kontekstissa. Kun latausohjelma lataa Windows-allekirjoitettua binaaritiedostoa ja lataa sitten kaikki binaaritiedoston tarvitsemat dll-kirjastot, nämä binaaritiedostot tarkistetaan sen varmistamiseksi, että ne on allekirjoitettu digitaalisesti myös Windows-binaaritiedostoksi. Jos allekirjoituksen tarkistus epäonnistuu, dll-tiedostoa ei ladata, ja se palauttaa poikkeuksen palauttaen tilan, joka on STATUS_INVALID_IMAGE_HASH.

Yhteensopivuusongelmat

Yhteensopivuusongelmat ovat epätavallisia. Tämä vaikuttaa sovelluksiin, jotka riippuvat Windowsin binaaritiedostojen korvaamisesta paikallisilla yksityisillä versioilla, ja on myös pieni riski paljastaa hienovaraisia ajoitusvirheitä monisäikeisissä sovelluksissa.

Määritysasetukset:

Vain valvonta – Voit ottaa tämän lievennyksen käyttöön valvontatilassa, jotta voit mitata sovelluksen mahdollisia yhteensopivuusvaikutuksia. Valvontatapahtumia voi tarkastella joko tapahtumienvalvonnassa tai Microsoft Defender for Endpointinkehittyneen etsinnän avulla.

Vahvistaa pinon eheyden (StackPivot)

Kuvaus

StackPivot (Validate StackPivot) -lievennys auttaa suojautumaan Stack Pivot -hyökkäykseltä, ROP-hyökkäykseltä, jossa hyökkääjä luo valepinon kekomuistiin, ja huijaa sitten sovelluksen palaamaan valepinoon, joka ohjaa suorituksen kulkua.

Tämä lievennys sieppaa useita Windowsin ohjelmointirajapintoja ja tarkistaa pino-osoittimen arvon. Jos pino-osoittimen osoite ei putoa pinon alareunan ja yläreunan väliin, tapahtuma tallennetaan, ja ellei se ole valvontatilassa, prosessi keskeytetään.

Tämän lievennyksen sieppaamat ohjelmointirajapinnat ovat seuraavat:

  • 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

Yhteensopivuusongelmat

Tämä vaikuttaa sovelluksiin, jotka käyttävät väärennettyjä pinoja, ja on myös pieni riski paljastaa hienovaraisia ajoitusvirheitä monisäikeiseissä sovelluksissa. Sovellukset, jotka suorittavat ohjelmointirajapintaa, erityisesti tietoturvaohjelmistot, voivat aiheuttaa yhteensopivuusongelmia tämän lievennyksen kanssa.

Tämä lievennys ei ole yhteensopiva satunnaisen koodisuojan lievennyksen kanssa.

Määritysasetukset:

Vain valvonta – Voit ottaa tämän lievennyksen käyttöön valvontatilassa, jotta voit mitata sovelluksen mahdollisia yhteensopivuusvaikutuksia. Valvontatapahtumia voi tarkastella joko tapahtumienvalvonnassa tai Microsoft Defender for Endpointinkehittyneen etsinnän avulla.

Vihje

Haluatko tietää lisää? Engage Microsoft security -yhteisön kanssa teknologiayhteisössämme: Microsoft Defender for Endpoint Tech Community.