Salta al contenuto principale


Un ricercatore di Google Project Zero svela come aggirare l’ASLR su macOS e iOS


Un ricercatore del team Google Project Zero ha rivelato un nuovo metodo per sottrarre a distanza gli indirizzi di memoria sui sistemi operativi macOS e iOS di Apple. La ricerca ha avuto origine da una discussione del 2024 all’interno del team di Project Zero sulla ricerca di nuovi modi per ottenere perdite ASLR remote sui dispositivi Apple.

Un metodo scoperto dal ricercatore risulta applicabile a quei servizi che accettano dati forniti dall’aggressore e li deserializzano, per poi ri-serializzare gli oggetti che ne derivano e rinviare indietro i dati. Questo metodo può aggirare una funzionalità di sicurezza fondamentale, l’Address Space Layout Randomization (ASLR) , senza ricorrere alle tradizionali vulnerabilità di corruzione della memoria o agli attacchi side-channel basati sulla temporizzazione.

A differenza dei classici attacchi side-channel che misurano le differenze temporali, questo metodo si basa sull’output deterministico del processo di serializzazione. Sebbene non sia stata identificata alcuna superficie di attacco vulnerabile specifica e reale, è stata creata una proof-of-concept utilizzando un caso di test artificiale che coinvolge NSKeyedArchiveril framework di serializzazione di Apple su macOS.

La tecnica si basa sul comportamento prevedibile della serializzazione dei dati e sul funzionamento interno degli NSDictionaryoggetti Apple, che sono essenzialmente tabelle hash. L’obiettivo dell’attacco è quello di far trapelare l’indirizzo di memoria del NSNullsingleton, un oggetto univoco a livello di sistema il cui indirizzo di memoria viene utilizzato come valore hash.

La perdita di questo valore hash equivale alla perdita dell’indirizzo dell’oggetto, il che comprometterebbe l’ASLR per la cache condivisa in cui risiede. L’attacco si svolge in diverse fasi:

  • Un aggressore crea innanzitutto un oggetto serializzato NSDictionary. Questo dizionario contiene un mix di NSNumber, chiave i cui valori hash possono essere controllati, e una singola NSNull.
  • Le chiavi NSNumber vengono scelte con cura per occupare specifici “bucket” all’interno della tabella hash, creando uno schema noto di slot pieni e vuoti.
  • L’applicazione vittima deserializza questo oggetto, creando il dizionario in memoria. Quando l’applicazione ri-serializza l’oggetto per inviarlo nuovamente, scorre i bucket della tabella hash in un ordine prevedibile.
  • La posizione della chiave NSNull nei dati restituiti rivela in quale bucket è stata inserita. Ciò fa trapelare informazioni parziali sul suo indirizzo, in particolare il risultato dell’indirizzo modulo la dimensione della tabella.

Questa ricerca dimostra che l’utilizzo di puntatori a oggetti grezzi come chiavi hash nelle strutture dati può portare a perdite dirette di informazioni se l’output serializzato viene esposto.

Evitare di utilizzare gli indirizzi degli oggetti come chiavi di ricerca o di applicare loro una funzione hash con chiave per prevenire l’esposizione dell’indirizzo è, secondo il ricercatore, la misura di mitigazione più efficace.

L'articolo Un ricercatore di Google Project Zero svela come aggirare l’ASLR su macOS e iOS proviene da il blog della sicurezza informatica.