Tra phishing e attacchi "zero-day", ovvero che sfruttano vulnerabilità non conosciute, le minacce ai nostri dispositivi elettronici si stanno facendo sempre più sofisticate, e se il famoso Pegasus aveva spaventato mezzo mondo, questa nuovo sistema per spiare gli iPhone è forse ancora più inquietante (sapete qual è la differenza tra antivirus e antimalware?).
"Operation Triangulation", questo il nome dell'attacco, sfrutta una serie di vulnerabilità e consente di caricare uno spyware nel telefono attraverso un semplice file PDF inviato su iMessage (sempre lui), che non deve neanche essere aperto per eseguire il suo compito.
E che dimostra come sistemi chiusi come quello della mela non possono mai essere veramente sicuri, tanto che i ricercatori che hanno pubblicato l'articolo non hanno ancora capito come gli hacker siano venuti a conoscenza di una delle vulnerabilità sfruttate.
L'attacco, che è stato potenzialmente sfruttato tra il 2019 e il dicembre 2022, è stato scoperto dai ricercatori di sicurezza di Kasperksy Boris Larin, Leonid Bezvershenko e Georgy Kucherin, che l'hanno condiviso al Chaos Communication Congress.
A quanto pare la vulnerabilità è stata tamponata proprio a dicembre 2022, con il rilascio di iOS 16.2.
Ma vediamo come funziona Operation Triangulation, un attacco definito "a catena", perché sfrutta una serie di vulnerabilità a catena, 0-day, perché sfrutta vulnerabilità non conosciute, e 0-click proprio perché non necessita di interazioni da parte dell'utente, in quanto è veramente complesso.
La catena di vulnerabilità spiegata
Ecco l'intera catena di attacco, con indicate le quattro vulnerabilità 0-day sfruttate. Alla fine dell'attacco, i malintenzionati sono in grado di ottenere privilegi di root del dispositivo della vittima (ovvero i privilegi di sistema, a cui neanche il proprietario può accedere) e iniettare uno spyware per controllarne le azioni.
Gli aggressori inviano un allegato dannoso via iMessage, e l'applicazione lo elabora senza che l'utente se ne accorga. Questo allegato sfrutta la vulnerabilità di esecuzione del codice remoto CVE-2023-41990 nell'istruzione di font ADJUST TrueType non documentata e specifica di Apple.
Questa istruzione esisteva dai primi anni novanta prima che venisse risolta con una patch.
A questo punto le cose si fanno un po' tecniche, in quanto l'attacco utilizza la programmazione orientata al ritorno/salto e più fasi scritte nel linguaggio di query NSExpression/NSPredicate, patchando l'ambiente della libreria JavaScriptCore per eseguire un exploit di escalation dei privilegi scritto in JavaScript.
Questo exploit JavaScript viene occultato per renderlo completamente illeggibile e per minimizzarne le dimensioni, ma è composto da circa 11.000 righe di codice, principalmente dedicate all'analisi e alla manipolazione della memoria JavaScriptCore e del kernel.
Il codice sfrutta la funzione di debug JavaScriptCore DollarVM ($vm) per ottenere la possibilità di manipolare la memoria di JavaScriptCore dallo script ed eseguire funzioni API native. La cosa preoccupante è che per garantire la massima compatibilità è stato progettato per supportare sia i vecchi che i nuovi iPhone e includeva un bypass del codice di autenticazione puntatore (PAC) per poter attaccare anche i modelli più recenti.
A questo punto il codice sfrutta la vulnerabilità di overflow intero CVE-2023-32434 nelle syscall di mappatura della memoria di XNU (mach_make_memory_entry e vm_map) per ottenere l'accesso in lettura/scrittura all'intera memoria fisica del dispositivo a livello di utente.
Adesso vengono sfruttati i registri I/O (MMIO) mappati con memoria hardware per bypassare il Page Protection Layer (PPL), una vulnerabilità descritta come CVE-2023-38606.
Come vi abbiamo anticipato, l'attacco è veramente complesso, ma potete vedere la catena di operazioni effettuate dal codice nell'immagine qui sotto: siamo al teschio, perché a questo punto il codice ha ottenuto il controllo del telefono e può fare quello che vuole.
Ora l'exploit JavaScript potrebbe già iniettare uno spyware, ma gli aggressori hanno scelto di: (a) avviare il processo IMAgent e iniettare un payload che cancella gli artefatti di sfruttamento dal dispositivo; (b) eseguire un processo Safari in modalità invisibile e inoltrarlo a una pagina web con la fase successiva.
La pagina web ha uno script che verifica la vittima e, se i controlli passano, riceve la fase successiva: l'exploit di Safari. L'exploit di Safari utilizza la vulnerabilità CVE-2023-32435 per eseguire un codice di shell, che esegue un altro exploit del kernel sotto forma di un file oggetto Mach.
Per farlo, utilizza le stesse vulnerabilità che ha sfruttato pochi passaggi prima per ottenere il controllo del kernel, CVE-2023-32434 e CVE-2023-38606.
Il codice è anche enorme in termini di dimensioni e funzionalità, e completamente diverso dall'exploit del kernel scritto in JavaScript, ma oltre al fatto che la maggior parte del codice sia dedicato all'analisi e alla manipolazione della memoria del kernel e che contenga varie utilità post-sfruttamento per lo più inutilizzate, non viene condiviso altro dai ricercatori.
L'exploit ottiene i privilegi di root e procede all'esecuzione di altre fasi, che caricano spyware nel telefono.
Il mistero
I ricercatori sottolineano di aver quasi decodificato "ogni aspetto di questa catena di attacco" e pubblicheranno più articoli nel 2024 per approfondirlo, ma c'è un mistero.
Larin, Bezvershenko e Kucherin non riescono infatti a comprendere come gli aggressori siano venuti a conoscenza della funzione hardware nascosta relativa alla vulnerabilità CVE-2023-38606.
Per questo nel loro articolo hanno pubblicato i dettagli tecnici chiedendo aiuto ad altri ricercatori di sicurezza iOS per confermare le scoperte e trovare possibili spiegazioni.
Concludendo il loro rapporto, i ricercatori però sono convinti che i sistemi che si basano sulla "sicurezza attraverso l'oscurità", ovvero i sistemi chiusi come quello della mela, "non possono mai essere veramente sicuri".