Bit NX - NX bit

Bit NX (no-execute) este o tehnologie utilizată în procesoare pentru zonele segrega de memorie pentru a fi utilizate de către oricare dintre stocarea instrucțiunilor procesorului (cod) sau pentru stocarea datelor, o caracteristică în mod normal , găsite doar în arhitectura Harvard procesoare. Cu toate acestea, bitul NX este din ce în ce mai utilizat în procesatoarele convenționale de arhitectură von Neumann din motive de securitate.

Un sistem de operare cu suport pentru bitul NX poate marca anumite zone ale memoriei ca neexecutabile. Procesorul va refuza apoi să execute orice cod care se află în aceste zone de memorie. Tehnica generală, cunoscută sub numele de protecție a spațiului executabil , numită și Write XOR Execute , este utilizată pentru a preveni anumite tipuri de software rău intenționat să preia computerele prin inserarea codului lor în zona de stocare a datelor a altui program și rularea propriului cod din această secțiune; o clasă de astfel de atacuri este cunoscută sub numele de atac de depășire a bufferului .

Intel comercializează această caracteristică ca bit XD (executare dezactivare). Advanced Micro Devices (AMD) utilizează termenul de marketing NX bit . Arhitectura ARM se referă la caracteristica, care a fost introdus în Armv6 , ca XN (executa niciodată). Termenul NX bit în sine este uneori folosit pentru a descrie tehnologii similare în alte procesoare.

Suport arhitectural

x86

Procesoarele x86 , începând cu 80286 , includeau o capacitate similară implementată la nivel de segment . Cu toate acestea, aproape toate sistemele de operare pentru procesoarele 80386 și mai târziu x86 implementează modelul de memorie plană , deci nu pot utiliza această capacitate. Nu a existat niciun semnal „Executabil” în intrarea tabelului de pagini (descriptorul paginii) în aceste procesoare, până când, pentru a face această capacitate disponibilă sistemelor de operare care utilizează modelul de memorie plană, AMD a adăugat un bit „fără executare” sau NX pe pagină intrare de tabel în arhitectura sa AMD64 , oferind un mecanism care poate controla execuția pe pagină, mai degrabă decât pe segment întreg.

Intel a implementat o caracteristică similară în procesorul său Itanium ( Merced ) - având arhitectură IA-64 - în 2001, dar nu a adus-o în familiile mai populare de procesoare x86 ( Pentium , Celeron , Xeon etc.). În arhitectura x86 a fost implementată pentru prima dată de AMD, ca bit NX , pentru a fi utilizată de linia sa de procesoare AMD64 , cum ar fi Athlon 64 și Opteron .

După decizia AMD de a include această funcționalitate în setul său de instrucțiuni AMD64, Intel a implementat caracteristica similară de biți XD în procesoarele x86 începând cu procesoarele Pentium 4 pe baza iterațiilor ulterioare ale nucleului Prescott. Bitul NX se referă în mod specific la numărul de bit 63 (adică cel mai semnificativ bit) al unei intrări pe 64 de biți din tabelul de pagini . Dacă acest bit este setat la 0, atunci codul poate fi executat din acea pagină; dacă este setat la 1, codul nu poate fi executat din acea pagină și se presupune că tot ceea ce se află acolo este date. Este disponibil numai cu modul lung (modul pe 64 de biți) sau formatele vechi de tabel de pagină pentru extensia de adresă fizică (PAE), dar nu și formatul original de tabel de pagini pe 32 de biți al x86, deoarece intrările tabelului de pagini în acel format nu au 63 de biți folosiți pentru dezactivați și activați executarea.

Windows XP SP2 și ulterior acceptă prevenirea execuției datelor (DEP).

BRAŢ

În ARMv6 , a fost introdus un nou format de introducere a tabelului de pagini; include un bit "executați niciodată". Pentru ARMv8-A , VMSAv8-64 descriptori de blocuri și pagini, și VMSAv8-32 descriptori lungi de blocuri și descriptori de pagini, pentru etapa 1 traducerile au biți „nu execută niciodată” atât pentru modurile privilegiate, cât și pentru cele fără privilegii, și descriptori de blocuri și pagini pentru etapa 2 traducerile au un singur bit "executați niciodată" (doi biți datorită caracteristicii ARMv8.2-TTS2UXN); VMSAv8-32 Descriptorii de tabel de traducere cu descriptori scurți de la nivelul 1 au biți „executați niciodată” atât pentru modul privilegiat, cât și pentru modul neprivilegiat și la nivelul 2 au un singur bit „executați niciodată”.

Alfa

Începând cu cea de-a patra ediție a manualului Alpha Architecture, DEC (acum HP) Alpha are un bit Fault on Execute în intrările din tabelul de pagini cu OpenVMS , Tru64 UNIX și Alpha Linux PALcode .

SPARC

SPARC Reference MMU pentru Sun SPARC versiunea 8 are valori de permisiune Read Only, Read / Write, Read / Execute și Read / Write / Execute în intrările din tabelul de pagini, deși nu toți procesoarele SPARC au un MMU Reference SPARC.

O versiune SPARC 9 MMU poate furniza, dar nu este necesar să furnizeze, orice combinație de permisiuni de citire / scriere / executare. O intrare în tabelul de traducere într-un buffer de stocare a traducerilor în Oracle SPARC Architecture 2011, Draft D1.0.0 are biți Executabili și Scriibili separați.

PowerPC / Power ISA

Intrările din tabelul de pagini pentru tabelele de pagini hash ale IBM PowerPC au un bit de pagină fără executare. Intrările din tabelele de pagini pentru tabelele de pagini radix-tree din Power ISA au biți de permisiune separate care acordă citire / scriere și execută acces.

PA-RISC

Intrările de tampon de traducere lookaside (TLB) și intrările din tabelul de pagini din PA-RISC 1.1 și PA-RISC 2.0 acceptă numai paginile de citire, citire / scriere, citire / executare și citire / scriere / executare.

Itanium

Intrările TLB în Itanium acceptă numai citirea, citirea / scrierea, citirea / executarea și citirea / scrierea / executarea paginilor.

z / Arhitectură

Ca a douăsprezecea ediție a z / Arhitectura Principii de funcționare, z procesoare / Arhitectura poate sprijini facilitatea de protecție de instrucțiuni-execuție, care adaugă un pic în intrări de tabel de pagină care controlează dacă instrucțiuni de la o anumită regiune, segment sau pagină poate fi executat.

Vezi si

Referințe

linkuri externe