
Proof-of-concept Python-Skript, das die Exfiltration von iOS-Dateien über einen bösartigen Symlink bei der Wiederherstellung von Geräte-Backups demonstriert und auf den com.apple.mobile.MCInstall-Dienst abzielt, um beliebige Dateien zu lesen.
SEHR WICHTIGER HINWEIS: DIESE SOFTWARE IST EIN KONZEPTNACHWEIS (PoC), DER AUSSCHLIESSLICH ZU BILDUNGS- UND SICHERHEITSFORSCHUNGSZWECKEN DIENT.
Dieses Python-Skript demonstriert eine Sicherheitslücke (hypothetisch oder basierend auf vergangenen Schwachstellen, hier illustrativ als "vor iOS 18.3" gemäß dem ursprünglichen PoC referenziert), die die Exfiltration beliebiger Dateien von einem iOS-Gerät ermöglicht. Die Methode basiert auf der Manipulation eines Backups des Geräts, der Erstellung eines bösartigen symbolischen Links (Symlink) innerhalb dieses Backups und anschließend der Wiederherstellung dieses modifizierten Backups auf dem Gerät. Schließlich wird mit einem Systemdienst (com.apple.mobile.MCInstall) interagiert, der unwissentlich die vom Symlink referenzierte Datei liest.
Dieses Skript wurde aus der Perspektive eines Sicherheitsforschers "verbessert", um Folgendes zu enthalten:
Die ausgenutzte Schwachstelle nutzt die folgende Kette von Schwachstellen (in älteren iOS-Versionen vorhanden):
CloudConfigurationDetails.plist) durch einen symbolischen Link ersetzt wird, der auf eine sensible Datei im Dateisystem des Geräts verweist (z.B. /private/etc/passwd).com.apple.mobile.MCInstall in diesem PoC), der berechtigt ist, die ursprüngliche Konfigurationsdatei (CloudConfigurationDetails.plist) zu lesen, kann aufgerufen werden. Beim Versuch, die Datei zu lesen, folgt das Betriebssystem dem symbolischen Link und liest stattdessen den Inhalt der sensiblen Datei, auf die der Symlink zeigt.Hinweis zur iOS-Version: Der ursprüngliche PoC erwähnt "iOS < 18.3". Diese Nummerierung ist untypisch. Apple hat Sicherheitslücken im Zusammenhang mit der Handhabung von Symlinks in Backups und Konfigurationsprofilen in deutlich älteren iOS-Versionen (normalerweise vor iOS 15/16 für die direktesten Vektoren dieser Art) gepatcht. Dieser Versionsverweis wird aus Konsistenzgründen mit dem Ursprung des Skripts beibehalten, sollte aber als illustrativ für "eine anfällige, nicht gepatchte Version" verstanden werden.
idevicebackup2.idevicebackup2 benötigt, das sich im System-PATH befinden muss.
brew install libimobiledevicesudo apt-get install libimobiledevice-utils (der Paketname kann variieren)pip install usbmux-python python-lockdown packaging
git clone <url-del-repositorio>
cd <nombre-del-directorio>
libimobiledevice installiert und idevicebackup2 zugänglich ist.pip install -r requirements.txt # (Wenn du eine requirements.txt mit usbmux-python, python-lockdown, packaging erstellst)
# oder manuell:
# pip install usbmux-python python-lockdown packaging
./exploit_ios_file_read.py [OPCIONES]