NX-bit
# NX-bit

NX (No eXecute, "non eseguire"), anche conosciuta con il nome di Enhanced Virus Protection (o semplicemente EVP), è una tecnologia usata generalmente nei processori centrali per isolare aree di memoria al fine di immagazzinare codice o dati.

Le sezioni di memoria ad accesso casuale contrassegnate con l'NX bit sono dedicate al deposito di soli dati, e le istruzioni non dovrebbero risiedervi. In poche parole è possibile scrivere o leggere dati ma non eseguirli se sono archiviati in queste zone di memoria. Questa funzionalità rende la tecnologia una valida difesa dai programmi nocivi nascosti all'interno dei dati di un altro software, cioè dagli attacchi di buffer overflow ovvero gli errori di allocazione che generano un blocco di questo tipo.

Intel ha deciso di denominare la propria applicazione di questa tecnologia XD-bit da eXecute Disable, ma le due non differiscono affatto se non nel nome.

## Supporto hardware

Nonostante questo meccanismo fosse presente da anni in altre architetture come lo SPARC della Sun Microsystems, il DEC Alpha, il PowerPC della IBM e anche nell'architettura IA-64 della Intel, il termine è stato coniato da AMD per i propri processori AMD64, come l'Athlon 64 e l'Opteron, e sta prendendo piede per definire questa tecnologia anche in altri processori.

L'NX è l'ultimo bit, il numero 63 (i bit si contano negli interi a 64 bit a partire da 0) dell'indirizzo nella tabella di paginazione di un processore x86. Se il bit è uguale a 0, può essere eseguito codice proveniente da quella pagina di memoria; se è pari a 1, si presume che siano presenti solo dati, e l'eventuale codice ivi residente non sarà elaborato. Per il supporto di questa tecnologia il formato di paginazione della memoria deve essere il Physical Address Extension (PAE), e non il formato originale x86. L'NX bit fu introdotto nei processori AMD64, perché questa è una diretta espansione della x86, ma esso non richiede l'attivazione della modalità a 64 bit: perciò VIA Technologies, Transmeta e naturalmente Intel hanno incluso questa tecnologia nei propri processori x86.

## Emulazione software

Prima che fosse possibile il supporto hardware di questa caratteristica, con molti sistemi operativi si cercò di emularla attraverso il software, come col W^X o con l'Exec Shield, descritti in seguito.

Un sistema operativo che emuli l'NX-bit può proteggere le aree di memoria stack e heap dall'esecuzione di codice dannoso, e memoria con codice eseguibile dall'essere sovrascritta. Questo evita l'esecuzione di exploit di buffer overflow, in particolare quelli che scrivono codice e poi lo fanno eseguire, come i worm SASSER e Blaster. Questi attacchi sono diretti alla memoria che può essere sia scritta che eseguita, come la stack, e falliscono se questa non lo è.

