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)
Ei muokkausyhteenvetoa
Rivi 1: Rivi 1:
{{lähteetön}}
{{lähteetön}}
'''NX-bitti''' (''no execute'') tarkoittaa [[virtuaalimuisti]]n tilabittiä, joka mahdollistaa virtuaalimuistisivuille määriteltävän, saako sivulta suorittaa ohjelmakoodia vai ei.
'''NX-bitti''' (''no execute'') tarkoittaa [[tietokone]]en [[muisti (tietokone)|muisti]]n tilabittiä, joka määrittää saako [[sivutus|sivulta]] suorittaa ohjelmakoodia vai ei.<ref name="lwnnx">{{Verkkoviite | osoite = https://lwn.net/Articles/87814/ | nimeke = x86 NX support | ajankohta = 2.6.2004 | viitattu = 20.9.2020 | kieli = {{en}} }}</ref>
Eri [[suoritin]]arkkitehtuurit ovat tukeneet toimintoa pitkään.<ref name="lwnnx" /> [[x86]]-arkkitehtuuriin se tuli [[AMD]]:n lisättyä tuen 64-[[bitti]]siin suorittimiinsa ([[AMD64]]).<ref name="lwnnx" />


Useissa ohjelmissa on [[puskurin ylivuotovirhe]] -[[tietoturva-aukko]]ja, jotka mahdollistavat sen, että ohjelma voidaan saada suorittamaan ohjelmakoodina sille annettua syötettä, jonka ei pitäisi olla ajettava ohjelma, mutta joka voidaan laittaa sisältämään hyökkääjän haittakoodi, eli esimerkiksi vakoiluohjelma tai mato.
Useissa ohjelmissa on [[puskurin ylivuotovirhe]] -[[tietoturva-aukko]]ja, jotka mahdollistavat sen, että ohjelma voidaan saada suorittamaan ohjelmakoodina sille annettua syötettä, jonka ei pitäisi olla ajettava ohjelma, mutta joka voidaan laittaa sisältämään hyökkääjän haittakoodi, eli esimerkiksi vakoiluohjelma tai mato.

Versio 20. syyskuuta 2020 kello 00.10

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]

Useissa ohjelmissa on puskurin ylivuotovirhe -tietoturva-aukkoja, jotka mahdollistavat sen, että ohjelma voidaan saada suorittamaan ohjelmakoodina sille annettua syötettä, jonka ei pitäisi olla ajettava ohjelma, mutta joka voidaan laittaa sisältämään hyökkääjän haittakoodi, eli esimerkiksi vakoiluohjelma tai mato.

NX-bitillä voidaan ohjelman data-alueet suojata siten että kun ohjelman ohjelmointivirheen seurauksena suoritin aikoo alkaa suorittaa ohjelmakoodina hyökkääjän antamaa syötettä, suoritin kieltäytyykin suorittamasta koodia koska ohjelman data-alueelta ei ole lupa suorittaa ohjelmakoodia. Tämä tekee puskurin ylivuoto -tyyppisistä tietoturva-aukoista murtautumisen selvästi vaikeammaksi, mutta ei silti täysin suojaa niiltä.

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.

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.

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

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

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