
Script Python de preuve de concept démontrant l'exfiltration de fichiers iOS via un lien symbolique malveillant lors de la restauration de sauvegarde de l'appareil, ciblant le service com.apple.mobile.MCInstall pour une lecture arbitraire de fichiers.
AVERTISSEMENT TRÈS IMPORTANT : CE LOGICIEL EST UNE PREUVE DE CONCEPT (PoC) À DES FINS ÉDUCATIVES ET DE RECHERCHE EN SÉCURITÉ UNIQUEMENT.
Ce script Python démontre une vulnérabilité (hypothétique ou basée sur des vulnérabilités passées, référencée ici à titre illustratif comme "antérieure à iOS 18.3" selon le PoC original) qui permet l'exfiltration de fichiers arbitraires d'un appareil iOS. La méthode repose sur la manipulation d'une sauvegarde de l'appareil, la création d'un lien symbolique (symlink) malveillant dans cette sauvegarde, puis la restauration de cette copie modifiée sur l'appareil. Enfin, on interagit avec un service système (com.apple.mobile.MCInstall) pour qu'il lise, sans le savoir, le fichier pointé par le symlink.
Ce script a été "amélioré" du point de vue d'un chercheur en sécurité pour inclure :
La vulnérabilité exploitée tire parti de la chaîne de faiblesses suivante (présentes dans les anciennes versions d'iOS) :
CloudConfigurationDetails.plist) est remplacé par un lien symbolique pointant vers un fichier sensible du système de fichiers de l'appareil (ex. /private/etc/passwd).com.apple.mobile.MCInstall dans ce PoC) qui a les permissions de lire le fichier de configuration original (CloudConfigurationDetails.plist) peut être invoqué. En tentant de lire le fichier, le système d'exploitation suit le lien symbolique et lit à la place le contenu du fichier sensible pointé par le symlink.Note sur la Version d'iOS : Le PoC original mentionne "iOS < 18.3". Cette numérotation est atypique. Apple a corrigé les vulnérabilités liées à la gestion des symlinks dans les sauvegardes et les profils de configuration dans des versions d'iOS nettement antérieures (généralement avant iOS 15/16 pour les vecteurs les plus directs de ce type). Cette référence de version est maintenue par cohérence avec l'origine du script, mais doit être comprise comme illustrative d'"une version vulnérable non corrigée".
idevicebackup2.idevicebackup2 doit se trouver dans le PATH système.
brew install libimobiledevicesudo apt-get install libimobiledevice-utils (le nom du paquet peut varier)pip install usbmux-python python-lockdown packaging
git clone <url-du-dépôt>
cd <nom-du-répertoire>
libimobiledevice installé et idevicebackup2 accessible.pip install -r requirements.txt # (Si vous créez un requirements.txt avec usbmux-python, python-lockdown, packaging)
# ou manuellement :
# pip install usbmux-python python-lockdown packaging
./exploit_ios_file_read.py [OPTIONS]