
AVVERTENZA MOLTO IMPORTANTE: QUESTO SOFTWARE È UNA PROOF OF CONCEPT (PoC) SOLO PER SCOPI EDUCATIVI E DI RICERCA SULLA SICUREZZA.
Questo script Python dimostra una vulnerabilità (ipotetica o basata su vulnerabilità passate, qui citata in modo illustrativo come "precedente a iOS 18.3" secondo la PoC originale) che consente l'esfiltrazione di file arbitrari da un dispositivo iOS. Il metodo si basa sulla manipolazione di un backup del dispositivo, sulla creazione di un link simbolico (symlink) dannoso all'interno di quel backup e sul successivo ripristino di questa copia modificata sul dispositivo. Infine, si interagisce con un servizio di sistema (com.apple.mobile.MCInstall) affinché, senza saperlo, legga il file puntato dal symlink.
Questo script è stato "migliorato" dalla prospettiva di un ricercatore di sicurezza per includere:
La vulnerabilità sfruttata si basa sulla seguente catena di debolezze (presenti in versioni precedenti di iOS):
CloudConfigurationDetails.plist) viene sostituito da un link simbolico che punta a un file sensibile nel filesystem del dispositivo (es. /private/etc/passwd).com.apple.mobile.MCInstall in questa PoC) che ha i permessi per leggere il file di configurazione originale (CloudConfigurationDetails.plist) può essere invocato. Tentando di leggere il file, il sistema operativo segue il link simbolico e, invece, legge il contenuto del file sensibile a cui punta il symlink.Nota sulla Versione di iOS: La PoC originale menziona "iOS < 18.3". Questa numerazione è atipica. Apple ha corretto vulnerabilità relative alla gestione dei symlink nei backup e nei profili di configurazione in versioni di iOS significativamente precedenti (generalmente prima di iOS 15/16 per i vettori più diretti di questo tipo). Questo riferimento alla versione viene mantenuto per coerenza con l'origine dello script, ma deve essere inteso come illustrativo di "una versione vulnerabile non corretta".
idevicebackup2.idevicebackup2 nel PATH di sistema.
brew install libimobiledevicesudo apt-get install libimobiledevice-utils (il nome del pacchetto può variare)pip install usbmux-python python-lockdown packaging
git clone <url-del-repositorio>
cd <nombre-del-directorio>
libimobiledevice installato e idevicebackup2 accessibile.pip install -r requirements.txt # (Si creas un requirements.txt con usbmux-python, python-lockdown, packaging)
# o manualmente:
# pip install usbmux-python python-lockdown packaging
./exploit_ios_file_read.py [OPCIONES]