NXbit

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2019. március 6-án felülvizsgált verziótól ; az ellenőrzéshez 1 szerkesztés szükséges .

Attribútum (bit) Az NX-Bit ( az  AMD terminológiájában nem ecute bit it ) vagy az XD-Bit ( az Intel terminológiájában az ecute d isable b it ) egy végrehajtást tiltó bit , amelyet az oldalakhoz adnak (lásd a .page táblázatokat ( angolul) ), hogy megvalósítsa az adatok kódként történő végrehajtásának megakadályozását. A puffertúlcsordulást okozó biztonsági rés megelőzésére szolgál, amely tetszőleges kód futtatását teszi lehetővé helyben vagy távolról a megtámadott rendszeren. A technológia szoftver támogatást igényel (lásd: DEP ) az operációs rendszer kernelétől .   

Alapvető információk

Az NX bites technológia csak az alábbi feltételek mellett működik:

Egyes szoftverek nem kompatibilisek az NX-bites technológiával, ezért a BIOS lehetőséget biztosít a technológia letiltására.

Leírás

Az NX ( XD ) egy memórialap attribútuma (bitje) az x86 és x86-64 architektúrákban, amelyet azért adnak hozzá, hogy megvédje a rendszert a programhibáktól, valamint a vírusoktól , trójai falóktól és más, ezeket használó rosszindulatú programoktól.

Az AMD a bitet "NX"-nek nevezte angolul.  n o e x ecute . Az Intel ugyanezt a bitet angolul "XD"-nek nevezte.  e x ecution d isable .

Mivel a modern számítógépes rendszerek lapokra osztják a memóriát, amelyek bizonyos attribútumokkal rendelkeznek, a processzortervezők hozzáadtak egy másikat is: megtiltották a kód futtatását az oldalon. Vagyis egy ilyen oldal adat tárolására használható, programkód azonban nem. Ha megpróbálja átvinni a vezérlést egy ilyen oldalra , megszakítás történik , az OS átveszi az irányítást és leállítja a programot. A végrehajtási védelmi attribútum régóta jelen van a többiben[ mi? ] mikroprocesszor architektúrák; az x86-os rendszerekben azonban csak a programszegmensek szintjén valósítottak meg ilyen védelmet, amelyek mechanizmusát a modern operációs rendszerek már régóta nem használják. Most már az egyes oldalak szintjén is hozzáadásra kerül.

A modern programok egyértelműen kódszegmensekre („text”), adatokra („data”), inicializálatlan adatokra („bss”), valamint dinamikusan lefoglalt memóriaterületre oszlanak, amely halomra („heap”) van felosztva. és egy programverem („verem”). Ha a program hibátlanul íródott, az utasításmutató soha nem lép túl a kódszegmenseken; azonban szoftverhibák következtében a vezérlés átkerülhet a memória más területeire. Ebben az esetben a processzor leállítja a programozott műveletek végrehajtását, hanem véletlenszerű parancssorozatot hajt végre, amelyhez az ezeken a területeken tárolt adatokat veszi fel, amíg érvénytelen sorozatot nem talál, vagy olyan műveletet nem próbál végrehajtani, amely sérti a a rendszer integritását, amelyek kiváltják a védelmi rendszert. Mindkét esetben a program összeomlik. Ezenkívül a processzor olyan sorozattal találkozhat, amelyet ugrási utasításként értelmeznek egy már bejárt címre. Ebben az esetben a processzor egy végtelen hurokba lép, és a program „lefagy”, a processzoridő 100%-át lefoglalva. Az ilyen esetek megelőzése érdekében bevezették ezt a kiegészítő attribútumot: ha egy bizonyos memóriaterület nem programkód tárolására szolgál, akkor annak minden oldalát meg kell jelölni egy NX bittel, és ha megpróbálja átvinni oda a vezérlést, akkor a processzor kivételt generál, és az operációs rendszer azonnal összeomlik a program, a határokon kívül eső szegmenst (SIGSEGV) jelezve.

Ennek az attribútumnak a bevezetésének fő motívuma nem annyira az ilyen hibákra való gyors válaszadás volt, hanem az a tény, hogy az ilyen hibákat a támadók gyakran arra használták, hogy illetéktelenül hozzáférjenek a számítógépekhez, valamint vírusokat írjanak. Nagyon sok ilyen vírus és féreg jelent meg, amelyek kihasználják a gyakori programok sebezhetőségeit.

Az egyik támadási forgatókönyv az, hogy egy program puffer túlcsordulása (gyakran valamilyen hálózati szolgáltatást nyújtó démon ) használatával egy speciálisan megírt rosszindulatú program ( exploit ) kódot írhat a sérülékeny program adatterületére. olyan módon, hogy egy hiba eredményeként ez a kód átveszi az irányítást és végrehajtja a támadó által programozott műveleteket (gyakran egy operációs rendszer burkolóprogram végrehajtására irányuló kérést , amellyel a támadó átveszi az irányítást a sebezhető rendszer felett a támadó jogaival a sebezhető program tulajdonosa; gyakran ez a root ).

Technikai részletek

Puffertúlcsordulás gyakran előfordul, amikor a programfejlesztő kijelöl egy meghatározott hosszúságú adatterületet (puffert), abban a hitben, hogy ez elég lesz, de az adatok manipulálása közben nem ellenőrzi, hogy nem lép-e túl a határain. Ennek eredményeként a beérkező adatok olyan memóriaterületeket foglalnak el, amelyeket nem nekik szántak, megsemmisítve az ott elérhető információkat. Nagyon gyakran az eljárásokon (alprogramokon) belül foglalnak le ideiglenes puffereket, amelyek memóriáját a programverem foglalja le, amely a hívó alprogram visszatérési címeit is tárolja. A programkód gondos vizsgálata után a támadó észlelhet egy ilyen hibát , és most már elég neki egy ilyen adatsort átvinni a programba, amely feldolgozás után a program tévesen lecseréli a veremben lévő visszatérési címet a szükséges címre. a támadó által, aki bizonyos programkódokat is átvitt adatok leple alatt. Az alprogram befejezése után az eljárás visszatérési parancsa (RET) nem a hívó eljárásra, hanem a támadó eljárására adja át az irányítást - a számítógép feletti irányítás megszerzése.

Az NX attribútumnak köszönhetően ez lehetetlenné válik. A veremterület NX bittel van megjelölve, és ebben tilos bármilyen kódfuttatás. Most, ha átadja az irányítást a veremnek, akkor a védelem működni fog. Bár a program összeomlásra kényszeríthető, nagyon nehézkessé válik tetszőleges kód futtatására (ehhez a programnak tévedésből el kell távolítania az NX védelmet).

Egyes programok azonban a veremben vagy kupacban lévő kód végrehajtását használják. Az ilyen döntés oka lehet az optimalizálás , a dinamikus fordítás, vagy egyszerűen egy eredeti műszaki megoldás. Normális esetben az operációs rendszerek rendszerhívásokat biztosítanak a memória lekérésére egy engedélyezett végrehajtható funkcióval pontosan erre a célra, de sok régebbi program mindig az összes memóriát futtathatónak tekinti. Az ilyen programok Windows alatti futtatásához le kell tiltani az NX funkciót a teljes munkamenetre, az újbóli engedélyezéséhez pedig újraindítás szükséges. Bár a Windows rendelkezik egy olyan mechanizmussal, amely engedélyezi azokat a programokat, amelyeknél a DEP le van tiltva, ez a módszer azonban nem mindig működik megfelelően. . Az Iris egy példa egy ilyen programra .

Az NX bit a 64 bites laptáblázat bejegyzésének legjelentősebb bitje, amelyet a processzor használ a memória lefoglalására a címtérben. A 64 bites oldaltáblázatokat 64 bites módban vagy engedélyezett fizikai címkiterjesztéssel (PAE) működő operációs rendszerek használják. Ha az operációs rendszer 32 bites táblákat használ, akkor nincs mód az oldalvégrehajtási védelem használatára.

Kötelezettség és elterjedtség

Az Intel és az AMD összes modern PC-processzora támogatja ezt a technológiát. A Windows 10 telepítéséhez - jelenléte kötelező, ellenkező esetben a telepítő nem engedi telepíteni a rendszert.

Lásd még

Linkek