Nell’ambito della conferenza dedicata alla sicurezza “Def Con 2019”, ricercatori hanno dimostrato un metodo per sfruttare il database SQLite per consentire a un attaccante di eseguire codice arbitrario usando l’app Contatti di iOS come prova.
I ricercatori di Check Point – spiega Appleinsider – hanno effettuato la dimostrazione usando una vulnerabilità nel formato di database di SQLite, un DBMS SQL di pubblico dominio. Alla Def Con 2019 i ricercatori specializzati in sicurezza hanno mostrato quanto da loro affermato sfruttando una vulnerabilità di gravità elevata in SQLite attivabile per manipolare l’app Contatti di Apple. Eseguire ricerche all’interno di quest’applicazione – in determiniate circostanze – può essere sufficiente a eseguire codice malevolo.
“SQLite è il motore di database più diffuso al mondo”, riferisce l’azienda in una dichiarazione. “È disponibile per qualsiasi sistema operativo, per sistemi desktop e mobile, e Windows 10, macOS, iOS, Chrome, Safari, Firefox e Android sono noti utilizzatori di SQLite”. “In poche parole, possiamo ottenere controllo su chiunque interroghi il nostro database controllato da SQLite”.
Quando si esegue la ricerca di un contatto o cercano informazioni in qualunque app, in realtà state eseguendo ricerche in un database e molto comunemente queste si effettuano usando SQLite.
L’hack dimostrato da Check Point comporta la sostituzione di una parte dell’app Contatti e fa inoltre affidamento a un bug in SQLite non risolto da quattro anni. Il bug in questione è stato finora considerato poco importante perché si riteneva che potesse essere attivato solo da applicazioni sconosciute che accedono al database, e in un sistema chiuso come iOS non è possibile eseguire app sconosciute.
I ricercatori sono in qualche modo riusciti a manipolare un’app ritenuta “affidabile” dal sistema, inviando codice in grado di innescare e sfruttare il bug. Hanno sostituito uno specifico componente dell’app Contatti e rilevato che mentre app e qualsiasi codice eseguibile deve passare verifiche di Apple prima dell’avvio, un database SQLite non è considerato codice eseguibile.
“La persistenza (mantenere la possibilità di esecuzione di un malware sul dispositivo dopo un riavvio) è difficile da ottenere su iOS” – spiegano i ricercatori – “poiché tutti gli eseguibili devono essere firmati nell’ambito del Secure Boot di Apple. Per nostra fortuna il database SQLite non è firmato”.
È ad ogni modo necessario accedere fisicamente a un dispositivo sbloccato per installare il componente sostitutivo dell’app Contatti. Dopo questo passaggio, è possibile decidere cosa fare accadere quando si esegue una ricerca nell’app Contatti.
A fini dimostrativi, è stato scelto di mandare in crash l’app ma secondo i ricercatori sarebbe possibile manipolare l’app facendo in modo che rubi password. “Abbiamo stabilito che la semplice esecuzione di una query può non essere sicura come ci si aspetta”, riferiscono ancora i ricercatori. “Abbiamo dimostrato che i problemi di corruzione di memoria in SQLite ora possono sfruttati in modo affidabile”. Metodologie usati e altri dettagli sulle ricerche sono stati comunicati ad Apple.