ARM, un nome che al giorno d’oggi è sulla bocca di tutti.
Se fino a poco più di dieci anni fa si trattava di processori mobile relegati solo ed unicamente a dispositivi come i primi smartphone Android, console portatili come Nintendo 3DS e PlayStation Vita, o sistemi di streaming come Nvidia Shield, oggi è sinonimo di ben altro: un nuovo concorrente agguerrito per Intel e AMD.
L’architettura dei suoi processori si è rapidamente diffusa, garantendo prestazioni eccezionali e consumi estremamente contenuti ad un prezzo più che concorrenziale. Questo specialmente con la sua linea Snapdragon, recentemente implementata anche in sistemi portatili come l’Ayaneo Pocket S, o fissi come l’HoneyComb LX2K.

Tuttavia, con l’espandersi e il successo ottenuto da qualcosa, c’è sempre il rovescio della medaglia. In questo caso ciò risponde al nome di TikTag, un attacco diretto ai settori di memoria che sfrutta proprio un difetto di progettazione intrinseco all’architettura: il controller MTE.
Ma come sempre andiamo con ordine e affrontiamo per gradi l’argomento.
Cos’è MTE?
MTE, acronimo di Memory Tag Extension, è una feature di sicurezza intrinseca ai processori ARM. Introdotta a partire dalla versione 8.5-A dell’architettura, è realizzata per individuare e prevenire la corruzione della memoria.
Il sistema sfrutta un tagging di basso overhead, assegnando tag di 4 bit per ogni blocco di memoria da 16 byte. Tale misura è necessaria per proteggere il dispositivo e i dati in elaborazione da attacchi con corruzione di memoria, assicurando che il tag presente nel puntatore corrisponda sempre al blocco di memoria a cui si accede.
MTE possiede tre modalità operative:
- Sincrona
- Asincrona
- Asimmetrica
La modalità sincrona permette di rilevare bug più rapidamente e funge da mitigatore della sicurezza.
Nel caso in cui il tag non corrisponde al blocco di memoria in accesso, MTE invia un IRQ alla CPU, per interrompere immediatamente l’esecuzione e terminare il processo, al fine di ottenere informazioni complete sull’indirizzo che ha causato l’eccezione di sistema.
La modalità asincrona è ottimizzata per le prestazioni, per cui non può essere considerata come uno strumento efficace per il rilevamento dei bug di sistema.
Nel momento in cui un tag non corrisponde al blocco di memoria in accesso, la CPU prosegue fino alla voce di kernel più vicina, senza registrare né l’indirizzo che ha provocato l’errore, né l’accesso alla memoria.
La modalità asimmetrica si basa sul controllo sincrono sulle letture della memoria e il controllo asincrono delle scritture della memoria, garantendo delle prestazioni molto simili alla modalità asincrona. Come tale, è una modalità che ARM stessa consiglia di usare al posto dell’asincrona laddove è possibile, in virtù della sicurezza robusta e le prestazioni ottimizzate.
Cos’è TikTag?
Scoperta da un collettivo di ricercatori appartenenti alla Seoul National University, Samsung Research e al Georgia Institute of Technology, si tratta di una vulnerabilità hardware legata alla sicurezza strutturale dello stesso MTE. Nello specifico, questa è presente a partire dalla versione 8.5-A dell’architettura, da cui sono in seguito derivate le successive.
Il collettivo ha dimostrato che, sfruttando determinati tag software, un attore malevolo è in grado di sfruttare un’esecuzione speculativa per favorire la fuga di tag MTE direttamente dagli indirizzi arbitrari di memoria. Ciò comporta una parziale corruzione dei blocchi di memoria in uso, con la possibilità di sfruttare le sue vulnerabilità e scatenare:
- un’esecuzione arbitraria di codice
- escalation di privilegi amministrativi
- esfiltrazione di dati
- impedire l’accesso all’utente a determinati servizi.
L’attacco è stato portato a compimento contro il browser Chrome e il kernel di Linux, con i ricercatori che hanno dimostrato come il bypass delle misure di sicurezza presenti nell’MTE dei processori ARM possa avvenire con una chance di successo pari al 95% e in tempi inferiori a 4 secondi.
Come funziona l’attacco?
Esistono due varianti dell’attacco TikTag, attualmente denominate: TIKTAG-v1 e TIKTAG-v2. Entrambe hanno lo scopo di rendere del tutto inutile MTE, poiché, nel momento in cui del codice malevolo viene eseguito contro di questo, la sua protezione scompare in toto, con conseguenze gravissime per il dispositivo e per i dati sensibili dell’utente.

TIKTAG-v1
Questo è strutturato in modo da sfruttare la speculazione nelle previsioni di branch e il prefetching dei dati, al fine di sottrarre i tag generati dall’MTE e bypassare le sue misure di sicurezza. I ricercatori hanno fornito dati esaustivi su come questa variante sia particolarmente efficace contro il kernel Linux, nello specifico con le funzioni implicanti accessi speculativi alla memoria e un minimo di manipolazione dei puntatori del kernel.
Con la v1 l’attore malevolo si ritrova a sfruttare a proprio vantaggio le chiamate di sistema che il kernel esegue ad ogni ciclo di fetch. In tal modo, questi può avviare l’esecuzione speculativa e misurare gli stati della memoria cache, con la conseguenza di scoprire immediatamente i tag di memoria generati dall’MTE.
TIKTAG-v2
Si tratta della variante che sfrutta la sequenza di forwarding store-to-load durante l’esecuzione speculativa. Così facendo, l’attore malevolo può immediatamente dedurre i risultati derivanti dal controllo dell’MTE sui tag. Il tutto sfruttando il probing dello stato della cache post-esecuzione speculativa, poiché un valore memorizzato a un indirizzo è immediatamente caricato sull’indirizzo stesso.
Tale variante è molto efficace su Chrome in esecuzione su ARM, a causa principalmente del motore JavaScript V8 intrinseco al browser. Ciò permette lo sfruttamento delle vulnerabilità legate alla corruzione della memoria nel momento in cui questo esegue il rendering della pagina web.
La risposta ufficiale di ARM e Google
In seguito alla scoperta della criticità, il report compilato e redatto dal collettivo di ricercatori responsabili è stato immediatamente inviato ai diretti interessati: ARM Holdings e Google. Queste hanno riconosciuto la gravità della situazione e hanno fornito un feedback positivo verso gli autori della scoperta. Tuttavia, sono mancate delle implementazioni concrete per correggere la criticità.
Nel caso di ARM, la società ha riconosciuto il problema e la gravità che lo contraddistingue, ma ha in seguito dichiarato che la fuga di tag di allocazione non compromette i principi dell’architettura, in quanto questi ultimi sono considerati segreti.
Una risposta simile è stata rilasciata anche dal team di sicurezza di Google, responsabile degli algoritmi di criptazione implementati in Chrome e nel loro JavaScript Engine. Anche questo ha dichiarato di non voler risolvere la vulnerabilità, in quanto il motore è realizzato per girare in una sanbox apposita, che per sua natura non è destinata a garantire la riservatezza dei dati presenti in memoria e nei tag MTE.
Tuttavia, il collettivo di ricercatori non si è dato per vinto e ha avanzato alcune proposte solutive al fine di mitigare i danni. Tra queste si citano:
- Modifiche hardware
Modificando l’hardware stesso alla base dell’architettura ARM, si otterrebbe di conseguenza l’impossibilità da parte di un’esecuzione speculativa di modificare gli stati della cache in base ai risultati ottenuti dal controllo dei tag. - Barriere speculative
Con l’inserimento delle giuste istruzioni nel microcodice dell’architettura stessa, si impedirebbe l’esecuzione speculativa sulle operazioni critiche di lettura e scrittura sulla memoria. - Istruzioni di riempimento
Se si estendesse la finestra di esecuzione tra le istruzioni di ramo e gli accessi alla memoria, quest’ultima si riempirebbe temporaneamente e in tal modo sarebbe molto più difficile popolarla con istruzioni esterne atte ad un’esecuzione speculativa. - Miglioramento del sanboxing
Poiché il motore JavaScript V8 gira in una sandbox apposita, quest’ultima dovrebbe implementare una limitazione rigorosa dei percorsi di accesso speculativo alla memoria. In tal modo non si otterrebbe un accesso garantito e diretto ai settori di memoria considerati sicuri.
C’è inoltre da aggiungere un dettaglio, ovvero la vulnerabilità MTE presente nei dispositivi Pixel 8 di Google. Poiché questi montano processori ARM aggiornati all’architettura 8.7-A e quindi una revisione che eredita gli stessi problemi della 8.5-A, nell’aprile 2024 il team di sicurezza di Android è stato costretto a riconoscere la vulnerabilità emersa dalle ricerche come un vero e proprio difetto di progettazione, a seguito di molteplici segnalazioni da parte del progetto di bug bounty.
In conclusione
Con l’emergere di una vulnerabilità intrinseca ad un’architettura hardware, la situazione non può certo essere definita rosea. Infatti, l’attacco TikTak mette a rischio qualsiasi dispositivo distribuito sul mercato a partire dal 2019, con un gravissimo danno di immagine per i suoi creatori.
Per far fronte a questa situazione, i ricercatori, gli sviluppatori hardware e software, ma soprattutto gli ingegneri e gli architect sono chiamati a collaborare fra loro, al fine di giungere il prima possibile ad una soluzione che possa almeno mitigare i danni causati da questa nuova minaccia.
