NX-bit
Da Wikipedia, l'enciclopedia libera.
NX sta per No eXecute, "non eseguire". Si tratta di una tecnologia usata generalmente nelle CPU per isolare aree di memoria al fine di immagazzinare istruzioni del microprocessore (ovvero codice) o dati. Le sezioni di memoria contrassegnate con l'NX bit sono dedicate al deposito di soli dati, e le istruzioni non dovrebbero risiedervi. 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.
[modifica] Supporto hardware
Nonostante questo meccanismo fosse presente da anni in altre architetture come lo SPARC della Sun Microsystems, l'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 stanno includendo questa tecnologia nei propri processori x86.
[modifica] 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 è.