Un utente di GitHub – il servizio di hosting sul quale vengono pubblicati progetti software di vario tipo – ha condiviso il codice sorgente di quello che sembrerebbe l’iBoot System di Apple, in altre parole la parte del sistema operativo che si occupa di gestire in modo sicuro e affidabile la procedura di avvio.
A riferirlo è il sito Motherboard ma la sua legittimità non è confermata e non è chiaro da dove il codice sorgente arrivi. Il codice in questione è di iOS 9.3.x e benché non sia compilabile per l’assenza di alcuni file, ricercatori esperti in sicurezza evidenziano che è possibile analizzarlo e potenzialmente individuare possibili falle. Il codice, spiega 9to5Mac, fa riferimento a iOS 9.3.x ma è possibile che porzioni di questo siano ancora usate in iOS 11.
Jonathan Levin, autore di vari volumi sullo sviluppo con iOS e macOS, ritiene che si tratti della più grande fuga di codice della storia, non mette la mano sul fuoco sulla legittimità dello stesso ma dice che il codice è allineato con quello ottenuto da sue procedure di reverse engineering.
Levin ha spiegato che l’accesso al codice di iBoot rende più semplice individuare vulnerabilità che potrebbero portare a compromettere o eseguire il jailbreaking nei dispositivi. iBoot è parte integrante del sistema di sicurezza di iOS: ogni passo del processo di avvio contiene componenti che sono stati firmati digitalmente da Apple attraverso opportuna codifica per garantirne l’integrità e a cui viene consentito procedere solo dopo aver verificato la catena di affidabilità. Tale processo include i bootloader, il kernel, le estensioni del kernel e il firmware baseband.
Questa catena di avvio sicuro aiuta a garantire che i livelli più bassi del software non vengano alterati. Quando un dispositivo iOS è acceso, il processore per le applicazioni esegue immediatamente il codice dalla memoria di sola lettura conosciuta come ROM di avvio. Questo codice immutabile, conosciuto come la radice di attendibilità dell’hardware, viene configurato durante la fabbricazione del chip ed è considerato implicitamente affidabile.
Il codice della ROM di avvio contiene la chiave pubblica dell’autorità di certificazione root di Apple, utilizzata per verificare che il bootloader iBoot sia stato firmato da Apple prima di consentirne il caricamento. Questo è il primo passo della catena di affidabilità, in cui ogni passo garantisce che quello successivo sia firmato da Apple. Dopo aver concluso le proprie attività, iBoot controlla ed esegue il kernel iOS. Per i dispositivi con processore S1, A9 o processori della serie A precedenti, la ROM di avvio carica e verifica un passaggio LLB (Low-Level Bootloader) aggiuntivo e, a turno, carica e verifica iBoot.
Se un passo di questo processo non è in grado di caricare o verificare il processo successivo, l’avvio è interrotto e il dispositivo mostra la schermata “Collega a iTunes”. Questa modalità è chiamata modalità di recupero. Se la ROM di avvio non è in grado di caricare o verificare il bootloader LLB, entra nella modalità DFU (Device Firmware Upgrade). In entrambi i casi, è necessario collegare il dispositivo a iTunes tramite USB e ripristinare le impostazioni di fabbrica di default.
Resta da capire in che modo questo codice che sarebbe dovuto rimanere segreto (sempre ammesso che sia davvero quello che Apple usa internamente) sia venuto fuori. I dispositivi di Apple più recenti con processore Secure Enclave, utilizzano un processo di avvio ancora più sicuro che garantisce che il suo software separato sia verificato e firmato da Apple, proteggendo gli utenti da potenziali vulnerabilità che potrebbe essere svelate dal codice di iBoot.