NXbit

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 6. marts 2019; verifikation kræver 1 redigering .

Attribut (bit) NX-Bit ( ikke x ecute bit it i  AMD terminologi ) eller XD-Bit ( e x ecuted isable b it in Intel terminology ) er en eksekveringshæmningsbit tilføjet til sider (se .page - tabeller (engelsk) ) for at implementere evnen til at forhindre eksekvering af data som kode. Bruges til at forhindre en bufferoverløbssårbarhed , der gør det muligt at udføre vilkårlig kode lokalt eller eksternt på det angrebne system. Teknologien kræver softwaresupport (se DEP ) fra operativsystemkernen .  

Grundlæggende information

NX-bit-teknologi kan kun fungere under følgende forhold:

Noget software er ikke kompatibelt med NX-bit-teknologi, så BIOS giver mulighed for at deaktivere teknologien.

Beskrivelse

NX ( XD ) er en attribut (bit) af en hukommelsesside i x86- og x86-64-arkitekturerne, tilføjet for at beskytte systemet mod programfejl, såvel som virus , trojanske heste og andre ondsindede programmer, der bruger dem.

AMD kaldte biten "NX" fra engelsk.  n o e x ecute . Intel kaldte den samme bit "XD" fra engelsk.  e x ecution d erable .

Da moderne computersystemer opdeler hukommelse i sider, der har bestemte attributter, har processordesignere tilføjet en anden: at forbyde kode i at udføre på en side. Det vil sige, at sådan en side kan bruges til at gemme data, men ikke programmere kode. Hvis du forsøger at overføre kontrol til en sådan side , vil der opstå en afbrydelse , OS vil tage kontrol og afslutte programmet. Udførelsesbeskyttelsesattributten har længe været til stede i andre[ hvad? ] mikroprocessorarkitekturer; Men i x86-systemer blev en sådan beskyttelse kun implementeret på niveauet af programsegmenter, hvis mekanisme ikke har været brugt af moderne operativsystemer i lang tid. Nu er det også tilføjet på niveau med individuelle sider.

Moderne programmer er klart opdelt i kodesegmenter ("tekst"), data ("data"), ikke-initialiserede data ("bss") samt et dynamisk allokeret hukommelsesområde, som er opdelt i en heap ("heap"). og en programstak ("stak"). Hvis programmet er skrevet uden fejl, vil instruktionsmarkøren aldrig gå ud over kodesegmenter; Men som følge af softwarefejl kan kontrollen overføres til andre områder af hukommelsen. I dette tilfælde vil processoren stoppe med at udføre programmerede handlinger, men vil udføre en tilfældig sekvens af kommandoer, for hvilke den vil tage de data, der er lagret i disse områder, indtil den støder på en ugyldig sekvens, eller forsøger at udføre en handling, der overtræder systemets integritet, som udløser beskyttelsessystemet. I begge tilfælde vil programmet gå ned. Processoren kan også støde på en sekvens fortolket som springinstruktioner til en allerede gennemkørt adresse. I dette tilfælde vil processoren gå ind i en uendelig løkke, og programmet vil "hænge", hvilket tager 100% af processortiden. For at forhindre sådanne tilfælde blev denne yderligere egenskab introduceret: hvis et bestemt hukommelsesområde ikke er beregnet til lagring af programkode, skal alle dets sider markeres med en NX-bit, og i tilfælde af et forsøg på at overføre kontrol dertil, vil processoren generere en undtagelse, og operativsystemet vil øjeblikkeligt nedbryde programmet og signalere segment out of bounds (SIGSEGV).

Hovedmotivet for at introducere denne egenskab var ikke så meget at give et hurtigt svar på sådanne fejl, som det faktum, at sådanne fejl meget ofte blev brugt af angribere til at få uautoriseret adgang til computere såvel som til at skrive virus. Et stort antal af sådanne vira og orme er dukket op, som udnytter sårbarheder i almindelige programmer.

Et af angrebsscenarierne er, at ved hjælp af et bufferoverløb i et program (ofte en dæmon , der leverer en eller anden netværkstjeneste ), kan et specielt skrevet ondsindet program ( exploit ) skrive noget kode til dataområdet i det sårbare program i f.eks. en måde, hvorpå denne kode, som et resultat af en fejl, vil tage kontrol og udføre handlinger programmeret af angriberen (ofte en anmodning om at udføre et OS-indpakningsprogram , hvormed angriberen vil tage kontrol over det sårbare system med rettighederne til ejer af det sårbare program; meget ofte er dette root ).

Tekniske detaljer

Et bufferoverløb opstår ofte, når en programudvikler allokerer et bestemt dataområde (buffer) af en fast længde i den tro, at dette vil være nok, men så, mens han manipulerer dataene, kontrollerer han ikke, om det går ud over dets grænser. Som følge heraf vil indgående data optage områder af hukommelsen, der ikke var beregnet til dem, og ødelægge den tilgængelige information der. Meget ofte tildeles midlertidige buffere inden for procedurer (subrutiner), hvis hukommelse er allokeret på programstakken, som også gemmer returadresserne til den kaldende subrutine. Efter omhyggeligt at have undersøgt programkoden, kan en angriber opdage en sådan fejl , og nu er det nok for ham at overføre en sådan datasekvens til programmet, efter behandling vil programmet fejlagtigt erstatte returadressen på stakken med den nødvendige adresse af angriberen, som også overførte noget programkode under dække af data. Efter afslutningen af ​​subrutinen vil returkommandoen (RET) fra proceduren overføre kontrollen ikke til opkaldsproceduren, men til angriberens procedure - kontrol over computeren opnås.

Takket være NX-attributten bliver dette umuligt. Stakområdet er markeret med NX-bit, og enhver kodeudførelse i det er forbudt. Nu, hvis du overfører kontrol til stakken, vil beskyttelsen virke. Selvom programmet kan tvinges til at gå ned, bliver det meget vanskeligt at bruge det til at udføre vilkårlig kode (dette vil kræve, at programmet fejlagtigt fjerner NX-beskyttelse).

Nogle programmer bruger dog udførelse af kode på stakken eller heapen. En sådan beslutning kan skyldes optimering , dynamisk kompilering eller blot en original teknisk løsning. Normalt leverer operativsystemer systemkald for at anmode om hukommelse med en aktiveret eksekverbar funktion til netop dette formål, men mange ældre programmer anser altid al hukommelse for at være eksekverbar. For at køre sådanne programmer under Windows skal du deaktivere NX-funktionen for hele sessionen, og for at aktivere den igen kræves en genstart. Selvom Windows har en mekanisme til at hvidliste programmer, hvor DEP er deaktiveret, fungerer denne metode dog ikke altid korrekt. . Iris er et eksempel på et sådant program .

NX-bitten er den mest betydningsfulde bit af en indgang i 64-bit sidetabellerne, der bruges af processoren til at allokere hukommelse i et adresserum. 64-bit sidetabeller bruges af operativsystemer, der kører i 64-bit tilstand eller med Physical Address Extension (PAE) aktiveret. Hvis operativsystemet bruger 32-bit tabeller, er der ingen måde at bruge sideeksekveringsbeskyttelse på.

Forpligtelse og udbredelse

Alle moderne pc-processorer fra Intel og AMD understøtter denne teknologi. For at installere Windows 10 - dets tilstedeværelse er obligatorisk, ellers vil installationsprogrammet ikke tillade dig at installere systemet.

Se også

Links