M1RACLES: un nuovo Covert Channel nel chip "M1" di Apple Silicon.


il 26/05/2021 (oggi al momento della scrittura di questo articolo) è stata pubblicata una nuova vulnerabilità monitorata con il codice CVE-2021-30747 scoperta dal ricercatore Hector Martin, che affligge il design dei chip "M1" di Apple Silicon e consente a due applicazioni in esecuzione su un sistema operativo di scambiarsi segretamente dei dati, senza utilizzare memoria, socket, file o qualsiasi altra normale funzionalità di sistema operativo.

Questa vulnerabilità funziona tra processi in esecuzione con utenti diversi e con diversi livelli di privilegio, creando un canale nascosto per lo scambio di dati.


Si tratta di una provilege escalation, con severity 8.8 che si basa sul registro di sistema ARM codificato come s3_5_c15_c10_1 che contiene due bit che possono essere utilizzati per leggerli e scriverli da qualsiasi processo.


Si tratta di un registro a cui possono accedere contemporaneamente tutti i core di un determinato cluster. Questo lo rende un canale nascosto che qualsiasi processo arbitrario può utilizzare per scambiare dati con un altro processo cooperante.


Un'app demo per accedere a questo registro è disponibile qui .


Una coppia dannosa di processi cooperanti può costruire un robusto canale laterale, utilizzando un protocollo di clock e dati (ad esempio, uno scrive 1x per inviare dati, l'altro scrive 00 per richiedere il bit successivo). Ciò consente ai processi di scambiare una quantità arbitraria di dati, vincolati solo dal sovraccarico della CPU.


Le API di affinità core della CPU possono essere utilizzate per garantire che entrambi i processi siano pianificati sullo stesso cluster core della CPU. Una PoC che dimostra questo approccio per ottenere un trasferimento dati robusto e ad alta velocità è disponibile qui .



Questo approccio, senza molta ottimizzazione, può raggiungere velocità di trasferimento superiori a 1 MB/s. Lo scopo originale di questo registro è sconosciuto, ma non si crede che sia stato reso accessibile intenzionalmente.


Di seguito un video che dimostra come è possibile sfruttare la vulnerabilità.

Il bug è stato trovato dal ricercatore mentre stava lavorando per capire come funziona la CPU M1 per effettuare un porting di Linux. La mancata comprensione delle funzionalità proprietarie di Apple potrebbe portare a questo tipo di vulnerabilità. Ho trovato qualcosa e si è scoperto che si trattava di un bug della soluzione Apple, invece di una funzionalità proprietaria.



L'architettura della vulnerabilità non consente lo sfruttamento da parte di un malware, ma a detta del ricercatore:

mi aspetterei che le società pubblicitarie tentassero di abusare di questo genere di cose per il monitoraggio cross-app, più dei criminali. Abbastanza sicuro che Apple potrebbe catturarli se ci provassero.

Inoltre aggiunge che qualche sviluppatore di giochi da qualche parte proverà a usarlo come primitiva di sincronizzazione.