Alcune ore fa il sito Motherboard ha diffuso la notizia di un utente anonimo che ha pubblicato su internet il codice sorgente di iBoot, che l'esperto Jonathan Levin ha definito il più grande leak della storia. A parte il claim riportato nel titolo, esempio da manuale di clickbaiting, vi erano dubbi sulla veridicità del codice che ha sfatato la stessa Apple, chiedendone l'immediata rimozione da GitHub per violazione di copyright. Nel frattempo, però, più di una persona ha potuto scaricare il sorgente e ciò ha dato adito ad innumerevoli speculazioni sui possibili rischi per gli utenti.

macos-boot

iBoot è il secondo stage del bootloader presente nei dispositivi Apple ed è quello che precede l'avvio del sistema operativo. Metterci le mani sopra potrebbe sembrare un colpaccio, tant'è che in rete già si parlava di installare Android su iPhone (ma perché???) e altre robe simili, ma ho trovato simpaticissimo questo tweet sull'argomento segnalato da 9to5mac.

Leggere il codice non significa poterlo modificare ma di certo rende molto più semplice sfruttare i bug. Di norma si deve lavorare al contrario per identificare le falle, avere il sorgente davanti agli occhi elimina gran parte della fatica. Tuttavia quello che è stato diffuso è iBoot risalente ad iOS 9.3 di marzo 2016, che oggi ha una diffusione davvero minima. Gli ultimi numeri resi pubblici da Apple riferiscono che già il 65% del parco iDevice è aggiornato ad iOS 11, il 28% iOS 10 e solo il 7% contiene i sistemi precedenti, di cui iOS 9.3 sarà una ulteriore frazione. Ciò non significa che si debba prendere i potenziali rischi sottogamba, ma trovo fortemente condivisibile la dichiarazione di Apple rilasciata poche ore fa a CNET:

Old source code from three years ago appears to have been leaked, but by design the security of our products doesn't depend on the secrecy of our source code. There are many layers of hardware and software protections built in to our products, and we always encourage customers to update to the newest software releases to benefit from the latest protections.

Fatti salvi i rischi relativi all'eventuale presenza di bug sfruttabili per attacchi, è giustissimo quel che dice Apple, ovvero che la sicurezza non ha nulla a che fare con la segretezza dei codici sorgenti. Se fosse così, se all'interno del codice vi fossero i chiari metodi per aggirarlo, allora questo sarebbe sicuramente sbagliato by design. Per fare un esempio super semplice, non è che la verifica di un accesso si esegua con una condizione del tipo "if ( password == '1234' ) then..." che evidentemente metterebbe a nudo la password scrivendola in chiaro. iBoot si occupa anche di controllare l'integrità e la firma dei componenti che lo precedono e lo succedono, in quella che viene definita bootchain, ma pur sapendolo si dovrebbe poter "falsificare" la firma di Apple per aggirare il sistema.

La vera sicurezza si ottiene se si parte dall'idea che il codice possa essere visibile ad un attaccante e non presupponendo (erroneamente) che rimanga per sempre segreto. Dopotutto questa è una delle principali bandiere che hanno reso famoso il software open-source e che ritroviamo anche nelle logiche dei sistemi di crittografia. Le eccezioni sono proprio i bug, quelli che si deve dare per scontato esistano e che ogni tanto saltano fuori, ma considerando che il parco installato di iOS 9.3 è solo una parte del 7% totale, sicuramente non si tratta di un rischio così drammatico. Vi direi di aggiornare i vostri dispositivi, ma se state leggendo SaggiaMente lo avrete sicuramente già fatto giorno per giorno. Difficilmente ci saranno rischi e ripercussioni ma direi che in Apple faranno le pulci a quel codice per accertarsi che nelle parti comuni ad iBoot di iOS 11 non vi possano essere dei bug.