|
A breve dalla data di rilascio dell'iPhone, un gruppo di ricercatori di sicurezza chiamati Independent Security Evaluators (ISE), ha individuato una vulnerabilità e sviluppato un exploit proof-of-concept capace di di prelevare file da un dispositivo iPhone in remoto. Una patch di Apple è già in fase di sviluppo. E' di seguito disponibile una analisi preliminare della vulnerabilità, maggiori informazioni saranno fornite al convegno BlackHat 2007 (Las Vegas, 2 Agosto, ore 4:45).
Architettura dell'iPhone L'iPhone di Apple esegue una versione di Mac OS X, sviluppata per processori ARM, molto comuni in dispositivi portatili, grazie al loro basso consumo energetico; iPhone è distribuito con una versione di Safari, detta MobileSafari, molto simile all'originale per gran parte del codice, ma gran parte delle funzioni di Safari sono state rimosse da MobileSafari. iPhone è attivato comunicando con l'iTunes installato su un computer, mediante connessione USB (è anche il sistema mediante il quale iPhone ottiene i dati di sincronizzazione di calendario, rubrica, impostazioni mail e altro).
Per migliorare la sicurezza su iPhone sono state rimosse molte applicazioni e funzioni, come ad esempio la possibilità di visualizzare Flash o di scaricare file .dmg e .zip mediante MobileSafari; inoltre iPhone non si mette in ascolto su nessuna porta TCP o UDP per i dati in ingresso. Di conseguenza Apple non consente ad iPhone di eseguire applicazioni di terze parti (impedendo l'accesso del filesystem alla USB e non realizzando nessun SDK appropriato). Tutti i processi che sfruttano la rete sono eseguiti con UID 0 (superuser) e ciò significa che la compromissione di una qualunque applicazione consentirebbe di eseguire codice arbitrario su iPhone; inoltre non si utilizza nessuna randomizzazione degli indirizzi di memoria, pertanto ogni volta che un processo è eseguito, lo stack, l'heap e il codice eseguibile sono localizzati sempre nello stesso punto della memoria. Inoltre l'heap è eseguibile.
Analisi delle vulnerabilità Per individuare vulnerabilità su iPhone sono disponibili una serie di opzioni; utilizzando "jailbreak" e "iPhoneInterface", i binari possono essere estratti dal dispositivo ed essere analizzati staticamente, utilizzando un disassembler. Inoltre possono essere eseguite analisi dinamiche o fuzzing, contro il dispositivo, inviando dati malformati al dispositivo tentando di causarne il crash. La vulnerabilità presa in considerazione riguarda MobileSafari.
Scenari d'attacco Esistono almeno due vettori d'attacco che consentono l'utilizzo di un exploit per MobileSafari, contro l'iPhone: [1] Un link ad un sito modificato, inviato via email, che al momento dell'apertura esegue un codice HTML malformato, portando l'exploit ad assumere il controllo del dispositivo
[2] Un'altra possibilità coinvolge un attacco del tipo man in the middle. Un attacker può realizzare un hotspot WiFi fittizio e l'iPhone scannerizzando automaticamente l'area, quando lo individuerà chiederà all'utente se utilizzarlo o meno per la connessione. Una volta connesso, tutto il traffico della vittima, passerà attraverso il router dell'attacker, consentendo allo stesso di intercettarlo e modificarlo.
Exploiting del dispositivo Per quanto riguarda lo sviluppo di un exploit funzionale, ci risulterà molto utile l'utilizzo del demone "CrashReporter", che monitorizza tutti i crash delle applicazioni sul dispositivo; esso fornisce valori del registro e una mappa di base della memoria, ma non accesso diretto alla memoria. Per ottenere le informazioni cruciali è possibile modificare l'iPhone aggiungendo il file "/etc/launchd.conf", contenente la linea "limit core unlimited" all'iPhone utilizzando iPhoneInterface. Questo consente all'iPhone di eseguire un dump di file core quando una applicazione crasha, che verranno salvati nella directory "/cores" e possono essere letti da "gdb".
Sviluppo della shellcode Per generare degli opcode validi per l'iPhone, è stato installato Linux x86 mediante un cross-compiler per architetture ARM. Purtroppo, non disponendo di un debugger, lo sviluppo di shellcode per iPhone presenta altri problemi, ad esempio non si ha modo di testare la shellcode mediante i file core ottenuti.
Per maggiori informazioni, vi consiglio di seguire gli sviluppi sul sito Exploiting iPhone
|