Vulnerabilità di sicurezza su processori Intel x86-64

296
0
CONDIVIDI

Visto che i processori a 64 bit sono sul mercato da ormai molto tempo, è sorprendente vedere una vulnerabilità che sfrutta un set di istruzioni AMD x86-64 per attaccare i processori Intel a 64bit. La vulnerabilità è stata originariamente creduta specifica per Linux, ma è stato scoperto solo di recente che può essere sfruttata anche su Windows, BSD, e potenzialmente su OS X.

La vulnerabilità sfrutta meccanismi intricati su come la memoria venga copiata da un livello di sicurezza ad un altro. In poche parole, quando AMD ha creato il suo set di istruzioni x86-64, ha optato per limitare lo spazio di memoria indirizzabile a 48 bit, lasciando i bit 48 e 64 inutilizzati. Al fine di impedire agli hacker di mettere dati dannosi in questa area out-of-limit, i processori AMD richiedono qualcosa chiamato canonical addresses , dove i bit 48 e 64 dispongono di dati identici e senza senso. Se un utente non privilegiato tenta di elevare i propri privilegi senza i canonical addresses al seguito, i processori AMD generano un errore di protezione generale e quindi tentano di ricaricare il software da un luogo sicuro a livello di kernel.

I processori Intel operano in modo molto simile, ma hanno una sottile differenza nel modo di gestire questi indirizzi. I processori verificano la presenza dei canonical addresses in una fase diversa del processo di elevazione, che consente a un hacker intelligente di introdurre una pila di codice appositamente predisposto che inganna i processori Intel a ripristinare un indirizzo diverso dal canonical dopo che si verifica l’errore di protezione generale. Una volta che questo è successo, un processo kernel-level si insidia in una zona out-of-bounds in cui codice dannoso potrebbe essere in attesa di esecuzione al più alto livello di sicurezza.

Sembra un disastro, ma Microsoft e molti altri hanno già rilasciato una patch per la vulnerabilità. Intel non ha fatto una dichiarazione ufficiale sul difetto. La vulnerabilità richiede un blocco di codice appositamente predisposto per essere eseguito da un utente locale, rendendo le probabilità di essere utilizzato nel mondo reale molto bassa.

fonte | theverge

RIPRODUZIONE RISERVATA © Copyright OVERPRESS