Ero sivun ”NX-bitti” versioiden välillä

Wikipediasta
Siirry navigaatioon Siirry hakuun
[katsottu versio][katsottu versio]
Poistettu sisältö Lisätty sisältö
Ipr1 (keskustelu | muokkaukset)
Ei muokkausyhteenvetoa
Ipr1 (keskustelu | muokkaukset)
kh, siirto aslr:ään
Rivi 9: Rivi 9:
Ratkaisu rajoittaa ohjelmissa esiintyvien [[puskurin ylivuotovirhe]] -[[tietoturva-aukko]]jen hyödyntämistä hyökkäyksiin estämällä [[tietokoneohjelma]]n suorittamisen tietyiltä alueilta.<ref name="atbit">{{Verkkoviite | osoite = https://www.anandtech.com/show/1507/2 | nimeke = A bit about the NX bit; Virus Protection Woes | tekijä = Kristopher Kubicki | ajankohta = 11.10.2004 | viitattu = 20.9.2020 | kieli = {{en}} }}</ref> Haittaohjelmat pyrkivät hyödyntämään haavoittuvuuksia ylikirjoittamalla [[pino]]n sen omalla koodilla ja sitten suorittamaan sen.<ref name="atbit" /> NX-bitillä yritys suorittaa ohjelmakoodia suojatusta paikasta havaitaan ja voidaan pysäyttää.<ref name="atbit" /> NX ei kuitenkaan pysäytä haittaohjelmia, jotka eivät riipu sen mukana tulevasta koodista: haittaohjelma voi edelleen ohjata ohjelman suorituksen toiseen paikkaan joka avaa sen hyökkäykselle.<ref name="atbit" /> ROP-hyökkäystä (''Return Oriented Programming'') vastaan on kehitetty [[ASLR]]-tekniikka.<ref name="hmsbo">{{Verkkoviite | osoite = http://hmarco.org/data/OnTheEffectivness-NX-SSP-RenewSSP-and-ASLR.pdf | nimeke = On the effectiveness of NX, SSP, RenewSSP and ASLR against stack buffer overflows | tiedostomuoto = PDF | viitattu = 20.9.2020 | kieli = {{en}} }}</ref>
Ratkaisu rajoittaa ohjelmissa esiintyvien [[puskurin ylivuotovirhe]] -[[tietoturva-aukko]]jen hyödyntämistä hyökkäyksiin estämällä [[tietokoneohjelma]]n suorittamisen tietyiltä alueilta.<ref name="atbit">{{Verkkoviite | osoite = https://www.anandtech.com/show/1507/2 | nimeke = A bit about the NX bit; Virus Protection Woes | tekijä = Kristopher Kubicki | ajankohta = 11.10.2004 | viitattu = 20.9.2020 | kieli = {{en}} }}</ref> Haittaohjelmat pyrkivät hyödyntämään haavoittuvuuksia ylikirjoittamalla [[pino]]n sen omalla koodilla ja sitten suorittamaan sen.<ref name="atbit" /> NX-bitillä yritys suorittaa ohjelmakoodia suojatusta paikasta havaitaan ja voidaan pysäyttää.<ref name="atbit" /> NX ei kuitenkaan pysäytä haittaohjelmia, jotka eivät riipu sen mukana tulevasta koodista: haittaohjelma voi edelleen ohjata ohjelman suorituksen toiseen paikkaan joka avaa sen hyökkäykselle.<ref name="atbit" /> ROP-hyökkäystä (''Return Oriented Programming'') vastaan on kehitetty [[ASLR]]-tekniikka.<ref name="hmsbo">{{Verkkoviite | osoite = http://hmarco.org/data/OnTheEffectivness-NX-SSP-RenewSSP-and-ASLR.pdf | nimeke = On the effectiveness of NX, SSP, RenewSSP and ASLR against stack buffer overflows | tiedostomuoto = PDF | viitattu = 20.9.2020 | kieli = {{en}} }}</ref>


Useilla arkkitehtuureilla (mukaan lukien x86) pino kasvaa muistissa "alaspäin". Kun ohjelma kutsuu funktiota, se työntää pinolle paluuosoitteen josta suoritus jatkuu funktiosta palattaessa. Jos pinolla sijaitsevaan (toisin sanottuna lokaaliin) muuttujaan voi sijoittaa mielivaltaisen määrän dataa, paluuosoitteen voi ylikirjoittaa. Perinteisesti puskurin ylivuotohaavoittuvuutta vastaan hyökätessä paluuosoitteeksi valittaisiin sellainen joka ohjaisi ohjelman virran hyökkääjän syöttämään dataan. Oikein käytettynä NX-bitti kuitenkin estää tämän.
Useilla arkkitehtuureilla (mukaan lukien x86) pino kasvaa muistissa "alaspäin". Kun ohjelma kutsuu funktiota, se työntää pinolle paluuosoitteen josta suoritus jatkuu funktiosta palattaessa. Jos pinolla sijaitsevaan (toisin sanottuna lokaaliin) muuttujaan voi sijoittaa mielivaltaisen määrän dataa, paluuosoitteen voi ylikirjoittaa. Perinteisesti puskurin ylivuotohaavoittuvuutta vastaan hyökätessä paluuosoitteeksi valittaisiin sellainen joka ohjaisi ohjelman suorituksen hyökkääjän syöttämään dataan. Oikein käytettynä NX-bitti kuitenkin estää tämän.

Yleinen tapa hyödyntää puskuriylivuotoa NX-bitin yhteydessä on return-to-libc -hyökkäys. Return-to-libc -hyökkäyksellä pino muotoillaan niin että ohjelma saadaan kutsumaan jo sisältämiään funktioita mielivaltaisilla parametreilla.


== Lähteet ==
== Lähteet ==

Versio 24. syyskuuta 2020 kello 19.35

NX-bitti (no execute) tarkoittaa tietokoneen muistin tilabittiä, joka määrittää saako sivulta suorittaa ohjelmakoodia vai ei.[1] Eri suoritinarkkitehtuurit ovat tukeneet toimintoa pitkään.[1] x86-arkkitehtuuriin se tuli AMD:n lisättyä tuen 64-bittisiin suorittimiinsa (AMD64).[1]

Toimintoa on kutsuttu myös termeillä "Enhanced virus protection", "Execute disable" (XD-bit) ja "Data execution prevention" (DEP).[2][3][4][5]

ARM-suorittimissa käytetään vastaavalle ominaisuudelle termiä XN (execute never).[6]

Ratkaisu rajoittaa ohjelmissa esiintyvien puskurin ylivuotovirhe -tietoturva-aukkojen hyödyntämistä hyökkäyksiin estämällä tietokoneohjelman suorittamisen tietyiltä alueilta.[7] Haittaohjelmat pyrkivät hyödyntämään haavoittuvuuksia ylikirjoittamalla pinon sen omalla koodilla ja sitten suorittamaan sen.[7] NX-bitillä yritys suorittaa ohjelmakoodia suojatusta paikasta havaitaan ja voidaan pysäyttää.[7] NX ei kuitenkaan pysäytä haittaohjelmia, jotka eivät riipu sen mukana tulevasta koodista: haittaohjelma voi edelleen ohjata ohjelman suorituksen toiseen paikkaan joka avaa sen hyökkäykselle.[7] ROP-hyökkäystä (Return Oriented Programming) vastaan on kehitetty ASLR-tekniikka.[8]

Useilla arkkitehtuureilla (mukaan lukien x86) pino kasvaa muistissa "alaspäin". Kun ohjelma kutsuu funktiota, se työntää pinolle paluuosoitteen josta suoritus jatkuu funktiosta palattaessa. Jos pinolla sijaitsevaan (toisin sanottuna lokaaliin) muuttujaan voi sijoittaa mielivaltaisen määrän dataa, paluuosoitteen voi ylikirjoittaa. Perinteisesti puskurin ylivuotohaavoittuvuutta vastaan hyökätessä paluuosoitteeksi valittaisiin sellainen joka ohjaisi ohjelman suorituksen hyökkääjän syöttämään dataan. Oikein käytettynä NX-bitti kuitenkin estää tämän.

Lähteet

  1. a b c x86 NX support lwn.net. 2.6.2004. Viitattu 20.9.2020. (englanniksi)
  2. http://web1.toshiba.ca/support/isg/tsb/en/view.asp?docid=TSB001112
  3. AMD, Intel put antivirus tech into chips zdnet.com. 8.1.2004. Viitattu 19.9.2020. (englanniksi)
  4. Data Execution Prevention (PDF) h10032.www1.hp.com. Viitattu 19.9.2020. (englanniksi)
  5. Execute Disable Bit – The BIOS Optimization Guide techarp.com. Viitattu 19.9.2020. (englanniksi)
  6. https://developer.arm.com/documentation/ddi0360/f/memory-management-unit/memory-access-control/execute-never-bits
  7. a b c d Kristopher Kubicki: A bit about the NX bit; Virus Protection Woes anandtech.com. 11.10.2004. Viitattu 20.9.2020. (englanniksi)
  8. On the effectiveness of NX, SSP, RenewSSP and ASLR against stack buffer overflows (PDF) hmarco.org. Viitattu 20.9.2020. (englanniksi)