Superata la protezione ASLR impiegata in tutti i sistemi operativi moderni

Dimostrata la possibilità di aggirare la tecnologia ASLR, sistema usato dai moderni sistemi operativi (Android, iOS, macOS, Linux e Windows) per randomizzare l’assegnazione della memoria

Lucchetto
[banner]…[/banner]

Due team di ricercatori di due università USA hanno dimostrato la possibilità di aggirare la protezione nota come ASLR (Address Space Layout Randomization). Questo meccanismo consente di proteggere i sistemi operativi contro lo sfruttamento di bug che tentano di corrompere la memoria. Il meccanismo in questione è usato nelle moderne versioni di iOS, macOS, Android e Windows. In iOS, ad esempio, le app incorporate usano ASLR per assicurare che tutte le regioni della memoria siano assegnate in modo casuale all’avvio.

La distribuzione casuale degli indirizzi di memoria del codice eseguibile, delle librerie di sistema e degli schemi di programmazione relativi riduce la probabilità di ricercati metodi di sfruttamento. Ne sono un esempio i tentativi di attacco return-to-libc mirati a ingannare il dispositivo, affinché esegua codice maligno manipolando gli indirizzi di memoria delle librerie dello stack e del sistema. La posizione casuale degli indirizzi di memoria rende molto più difficile eseguire l’attacco, specialmente su diversi dispositivi. Xcode, l’ambiente di sviluppo iOS, applica automaticamente anche ai programmi di terze parti il supporto alla protezione ASLR, rendendo molto più difficile lo sfruttamento di un bug del software: dato che gli indirizzi e gli offset della memoria sono imprevedibili, questi valori non possono essere fissati nel codice di exploit.

I ricercatori hanno dimostrato che è possibile aggirare l’ASLR sfruttando il componente BTB (Branch Target Buffer) incluso in molte architetture di CPU moderne, incluse le CPU Haswell di Intel. Inondando il BTB di dati a casaccio è possibile eseguire attacchi che consentono di rivelare le locazioni di memoria usate dall’app per eseguire il codice (ciò che l’ASLR dovrebbe nascondere). Nelle dimostrazioni sono stati usati dei PC con Linux e una CPU Haswell di Intel ma secondo i ricercatori l’attacco può essere portato a termine su altre architetture e sistemi operativi nei quali l’ASLR è sfruttata. Per portare a termine l’attacco sono bastati 60 millisecondi, il che significa che è teoricamente possibile creare malware in grado di sfruttare tale debolezza senza bisogno di sfruttare prezioso (e rilevabile) attività della CPU.

Tenicamente, oltre all’ASLR, iOS sfrutta un ulteriore strumento di protezione: la funzionalità Execute Never (XN) di ARM, che contrassegna le pagine di memoria come non eseguibili. Le pagine di memoria contrassegnate come scrivibili ed eseguibili possono essere utilizzate solo da app sotto condizioni estremamente controllate. Il kernel verifica la presenza dell’autorizzazione per la firma del codice dinamico esclusiva di Apple. Dopo ciò, può comunque essere effettuata solo una singola chiamata mmap per richiedere una pagina scrivibile ed eseguibile, a cui viene assegnato un indirizzo casuale. Safari, ad esempio, utilizza questa funzionalità per il suo compilatore JavaScript JIT.

Lucchetto