
CVE-2025-31207-Entschärfung und Sandbox-Tester für iOS 17 Relaxin/rootHide
AppEnumGuard ist ein defensives rootHide-Tweak für den Seitenkanal zur Aufzählung installierter Anwendungen, der als CVE-2025-31207 verfolgt wird. Es wurde für den Relaxin-Jailbreak auf iOS 17.0–17.3.1 entwickelt und nutzt Relaxins rootHide-Architektur. Das Repository enthält außerdem eine normale Sandbox-iOS-Testanwendung, die das verwundbare Ergebnis demonstriert und die Abschwächung verifiziert.
CVE-2025-31207 ist eine Schwachstelle durch Informationsoffenlegung in Apples FrontBoard-Anwendungsstartlogik. Eine Sandbox-Anwendung kann über eine private SpringBoardServices-Startfunktion beliebige Bundle-Identifikatoren übermitteln und installierte Anwendungen anhand unterschiedlicher Rückgabecodes von fehlenden Anwendungen unterscheiden. Dies kann private Informationen über die installierten Anwendungen eines Benutzers offenlegen, einschließlich Banking-, Messaging-, Sicherheits-, Sideloading- und Jailbreak-bezogenen Apps.
Apple beschreibt das Problem als ein Logikproblem, das es einer Anwendung ermöglichen könnte, installierte Apps aufzuzählen. Apple hat es mit verbesserten Prüfungen in iOS und iPadOS 18.5 korrigiert. Folglich bleibt iOS 17.0–17.3.1 auf Betriebssystemebene betroffen.
| Komponente | Unterstütztes Ziel |
|---|---|
| iOS | 17.0–17.3.1 |
| Jailbreak | Relaxin |
| Bootstrap-/Paketarchitektur | rootHide / iphoneos-arm64e |
| Gerätearchitektur | arm64e; Tweak-Binärdatei enthält nur einen arm64e-Slice |
| Paket | Installieren Sie das rootHide-.deb, nicht einen herkömmlichen Rootless-Build |
Relaxin verwendet die rootHide-Bootstrap-/Paketarchitektur, daher wird AppEnumGuard mit rootHide Theos erstellt und enthält rootHide-.jbroot-Loader-Pfade. Das Paket deklariert firmware (>= 17.0) und firmware (<< 17.4), entsprechend dem unterstützten Relaxin-Bereich von 17.0–17.3.1.
Das Tweak und der Tester wurden gemeinsam auf einem echten Relaxin/rootHide-Gerät verifiziert: Der Tester erkannte das Leck bei entferntem Tweak und lieferte nach der Installation des Tweaks ein grünes Ergebnis.
Der veröffentlichte Primitive ruft die private SpringBoardServices-Funktion SBSLaunchApplicationWithIdentifierAndURLAndLaunchOptions auf. Auf einem verwundbaren System gibt sie unterschiedliche Fehler für eine installierte und eine fehlende Anwendung zurück:
9: Ziel existiert, aber Start wird durch Richtlinie verweigert7: Ziel existiert nichtDas Tweak wird in UIKit-Anwendungsprozesse injiziert. Bei einer gewöhnlichen, im Container installierten Anwendung gibt es 7 zurück, ohne die private Startanfrage zu übermitteln. Apple- und andere Systemprozesse außerhalb des Anwendungscontainers behalten das ursprüngliche Verhalten bei.
Jedes GitHub-Release enthält beide installierbaren Artefakte:
AppEnumGuard_1.0.0_roothide_iphoneos-arm64e.deb — rootHide-TweakAppEnumGuardTester_1.0.0_sandboxed.ipa — Sandbox-Verifizierungs-App.deb und führen Sie einen Respring durch.Erwartete Ergebnisse bei installiertem WhatsApp:
| Zustand | Ziel | Fehlt | Testergebnis |
|---|---|---|---|
| Tweak nicht vorhanden | 9 | 7 | Rot / FEHLGESCHLAGEN |
| Tweak aktiv | 7 | 7 | Grün / BESTANDEN |
Der ursprüngliche Gerätetest reproduzierte beide Zustände: Das Deinstallieren des Tweaks erzeugte das rote 9 / 7-Ergebnis, während die Installation das grüne 7 / 7-Ergebnis erzeugte.
Installieren Sie rootHide Theos und führen Sie dann Folgendes aus:
cd Tweak
THEOS=/path/to/theos-roothide \
make clean package FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=roothide
Der Tester wird mit dem iPhoneOS SDK von Xcode kompiliert und besitzt keine Jailbreak- oder erhöhten Berechtigungen:
./scripts/build-tester-ipa.sh
Die resultierende IPA wird in dist/ abgelegt. Sie ist ad-hoc signiert, sodass ein Installationsprogramm sie mit einer normalen Entwicklungsidentität neu signieren kann. Gewähren Sie ihr nicht platform-application oder com.apple.private.security.no-sandbox, da der Test ausdrücklich dazu gedacht ist, aus einer normalen Anwendungssandbox zu laufen.
7 / 7-Test ist nur aussagekräftig, wenn bekannt ist, dass die Zielanwendung installiert ist.MIT