I nuovi SoC ARM v9 hanno introdotto una nuova funzionalità chiamata MTE (Memory Tagging Extensions). Si tratta di una caratteristica di sicurezza che provvede ad assegnare un “tag” a ogni operazione di allocazione/deallocazione della memoria. Google Pixel 8 è il primo smartphone in assoluto ad abbracciare l’utilizzo di MTE: agendo sulle Opzioni sviluppatore Android, gli utenti possono finalmente beneficiare di una caratteristica che rende lo smartphone significativamente più resistente agli attacchi informatici.
Come spiega il team di Google Project Zero, la capacità di MTE di rilevare tentativi di aggressione sul contenuto della memoria, rappresenta un miglioramento significativo nella diagnostica e nella protezione dai principali attacchi. La disponibilità di MTE su un telefono in produzione è un grande passo avanti: la sua attivazione renderà molto più difficile lo sfruttamento di falle zero-day.
Cos’è MTE: Pixel 8 e Pixel 8 Pro, primi smartphone a implementare la protezione anti-exploit
MTE associa il “tag” ai puntatori che fanno riferimento a ogni specifica posizione di memoria. Durante l’esecuzione del codice, la CPU verifica che il puntatore e i tag corrispondano, in modo tale da evitare problemi di use-after-free o buffer overflow. Questi ultimi due sono comuni cause di vulnerabilità a livello software.
La rilevazione tempestiva dei bug nella gestione della memoria riduce il rischio di exploit dannosi, migliorando la sicurezza complessiva del sistema. Come spiega Microsoft, il 70% delle problematiche di sicurezza individuate ogni anno nei software dei vari produttori, hanno proprio a che fare con la sicurezza della memoria. Nello stesso articolo spieghiamo nel dettaglio cosa sono le vulnerabilità di tipo use-after-free e buffer overflow.
MTE ha tre modalità operative: Synchronous mode (SYNC), Asynchronous mode (ASYNC) e Asymmetric mode (ASYMM). L’approccio SYNC è ottimizzato per la rilevazione dei bug piuttosto che per le prestazioni. In caso di incoerenza nei tag, la CPU interrompe immediatamente l’esecuzione e termina il processo con un errore di segmentazione (SIGSEGV) fornendo informazioni dettagliate sull’accesso alla memoria e sull’indirizzo di errore.
Viceversa, la modalità ASYNC punta sulle prestazioni piuttosto che sulla precisione dei report relativi ai bug individuati. In questo caso, la CPU continua l’esecuzione fino all’esecuzione della successiva chiamata di sistema o all’interrupt seguente. Il processo in esecuzione termina con un errore SIGSEGV, senza però la registrazione dell’indirizzo di memoria che ha causato il problema.
ASYMM, infine, è presente anche nei SoC basati su architettura ARM v8.7-A: offre la verifica sincrona delle letture e il controllo asincrono delle scritture in memoria, con prestazioni simili a quelle della modalità ASYNC.
Come attivare MTE sugli smartphone Pixel 8
Pur mettendo in evidenza l’importante pietra miliare posta da Google, Mark Brand (Google Project Zero) spiega che la funzionalità MTE – una volta attivata – potrebbe determinare qualche incompatibilità con le applicazioni in esecuzione sul dispositivo mobile. Al momento, tuttavia, Brand afferma di non aver riscontrato particolari problematiche ma che non esclude comportamenti anomali.
L’abilitazione di MTE su un dispositivo Android richiede che il bootloader riservi una parte della memoria del dispositivo per la memorizzazione dei tag. Ciò significa che ci sono due posti separati in cui MTE deve essere attivato: in primis è necessario configurare il bootloader, va impostato il sistema per usare MTE a livello applicativo.
L’utilizzo di MTE è per il momento riservato agli utenti più esperti: è infatti necessario il debug USB nelle Opzioni sviluppatore di Android, collegare lo smartphone a un PC tramite cavo quindi impartire i comandi seguenti:
adb shell
setprop arm64.memtag.bootctl memtag
setprop persist.arm64.memtag.default sync
setprop persist.arm64.memtag.app_default sync
reboot
Le varie istruzioni configurano il bootloader per abilitare MTE all’avvio, impostano la modalità MTE per gli eseguibili nativi e per le app Android.
MTE non è una soluzione completa per la sicurezza della memoria, ma il suo utilizzo su larga scala rappresenta un significativo passo avanti.