Torna agli aggiornamenti
New releaseAug 27, 2026

AppEnumGuard v1.2

CVE-2025-31207 mitigazione e tester in sandbox per jailbreak rootless e rootHide su iOS 15–18.4.1.

Condividi

AppEnumGuard

AppEnumGuard è un tweak difensivo per il canale laterale di enumerazione delle applicazioni installate tracciato come CVE-2025-31207. Supporta i convenzionali ambienti di jailbreak rootless e rootHide su iOS 15.0–18.4.1. Il repository contiene anche una normale applicazione di test iOS in sandbox che dimostra il risultato vulnerabile e verifica la mitigazione.

CVE-2025-31207

CVE-2025-31207 è una vulnerabilità di divulgazione di informazioni nella logica di avvio delle applicazioni FrontBoard di Apple. Un'applicazione in sandbox può inviare identificatori di bundle arbitrari tramite una funzione privata di avvio SpringBoardServices e distinguere le applicazioni installate da quelle mancanti utilizzando codici di ritorno diversi. Questo può rivelare informazioni private sulle applicazioni installate da un utente, incluse app bancarie, di messaggistica, di sicurezza, di sideloading e relative al jailbreak.

Apple descrive il problema come un problema di logica che potrebbe consentire a un'applicazione di enumerare le app installate. Apple lo ha corretto con controlli migliorati in iOS e iPadOS 18.5. Di conseguenza, i sistemi precedenti a iOS 18.5 rimangono interessati a livello di OS.

Compatibilità

ComponenteTarget supportato
iOS15.0–18.4.1
JailbreakQualsiasi ambiente di jailbreak convenzionale rootless o rootHide
Architettura bootstrap/pacchettorootless / iphoneos-arm64; rootHide / iphoneos-arm64e
Architettura dispositivoarm64 e arm64e (rootless); arm64e (rootHide)
PacchettoInstallare il pacchetto corrispondente al bootstrap del dispositivo

La build predefinita utilizza il Theos rootless convenzionale e include le slice arm64 e arm64e. La variante rootHide è compilata con rootHide Theos e contiene i percorsi del loader .jbroot richiesti da rootHide. Entrambi i pacchetti dichiarano firmware (>= 15.0) e firmware (<< 18.5): la mitigazione non è necessaria su iOS 18.5 e versioni successive, dove Apple ha corretto CVE-2025-31207.

Il tweak v1.1 lato SpringBoard e il tester in sandbox sono stati verificati insieme su iOS 17.3.1 build 21D61 con l'iniezione disabilitata per il tester. Il tester ha rilevato la fuga di informazioni con il tweak rimosso e ha restituito un esito positivo (verde) dopo l'installazione del tweak.

Come funziona

La primitiva pubblicata chiama la funzione privata SpringBoardServices SBSLaunchApplicationWithIdentifierAndURLAndLaunchOptions. Su un sistema vulnerabile restituisce errori diversi per un'applicazione installata e per un'applicazione mancante:

  • 9: il target esiste, ma l'avvio è negato dalla policy
  • 7: il target non esiste

AppEnumGuard 1.1 si inietta solo in SpringBoard e intercetta il metodo comune di validazione della fiducia FBSystemService. Quando una richiesta di avvio non autorizzata restituirebbe l'errore di policy di sicurezza 3 di FBSOpenApplicationErrorDomain, il tweak lo modifica nell'errore 4 di applicazione non trovata. L'API esterna SpringBoardServices restituisce quindi 7 sia per i target installati che per quelli mancanti.

Il numero di argomenti del metodo privato e la codifica dei tipi Objective-C vengono validati prima dell'installazione dell'hook. Se Apple modifica l'ABI, AppEnumGuard fallisce in modalità aperta (fail open) invece di intercettare un metodo SpringBoard sconosciuto.

Modifica rispetto alla 1.0

La versione 1.0 intercettava SpringBoardServices all'interno di ogni applicazione UIKit. Funzionava, ma richiedeva l'iniezione in ogni app da proteggere; un'app che disabilitava o rilevava l'iniezione poteva aggirare la mitigazione. La versione 1.1 sposta l'applicazione a SpringBoard, così un singolo hook centrale protegge i chiamanti senza iniettare AppEnumGuard nei loro processi.

Download delle release

La release 1.2 può essere compilata per entrambi i bootstrap:

  • AppEnumGuard_1.2_rootless_iphoneos-arm64.deb — tweak rootless convenzionale
  • AppEnumGuard_1.2_roothide_iphoneos-arm64e.deb — tweak rootHide
  • AppEnumGuardTester_1.2_sandboxed.ipa — app di verifica in sandbox con icona

Installazione e verifica

  1. Installa il file .deb corrispondente al bootstrap rootless o rootHide e riavvia la SpringBoard.
  2. Installa l'IPA del tester utilizzando una normale firma developer/sideloading.
  3. Lascia l'iniezione di AppEnumGuard disabilitata per AppEnum Test; la v1.1 la protegge da SpringBoard.
  4. Tocca l'icona di un'app che sai essere installata. Sono disponibili preset per WhatsApp, YouTube, Spotify, Dopamine, TrollStore e Reddit.

Risultati attesi con il target selezionato installato:

StatoTargetMancantiRisultato del tester
Tweak assente97Rosso / FAIL
Tweak attivo77Verde / PASS

Il tester segnala rosso solo per il noto risultato vulnerabile 9 / 7 e verde per ogni altro risultato numerico; un risultato rosso indica che AppEnumGuard non è installato. I risultati verdi sono etichettati App not detected. Il risultato vulnerabile 9 / 7 è etichettato App detected e AppEnumGuard missing. Seleziona solo un'app che sai essere installata: il solo 7 / 7 non può distinguere una mitigazione funzionante da un target che non esiste.

Il tester include anche una breve descrizione del progetto e un link cliccabile a questo repository GitHub.

Il test sul dispositivo ha riprodotto entrambi gli stati con l'iniezione del tester disabilitata: disinstallando il tweak si è ottenuto il risultato rosso 9 / 7, mentre installando la v1.1 si è ottenuto il risultato verde 7 / 7.

Compilare il tweak

Con Theos standard, la build predefinita è il rootless convenzionale:

cd Tweak
make clean package FINALPACKAGE=1

Per rootHide, installa rootHide Theos ed esegui:

cd Tweak
THEOS=/path/to/theos-roothide \
  make clean package FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=roothide

Compilare l'IPA di test

Il tester viene compilato con l'SDK iPhoneOS di Xcode e non dispone di jailbreak né di entitlement elevati:

./scripts/build-tester-ipa.sh

L'IPA risultante viene inserita in dist/. È firmato ad-hoc, quindi un installer può rifirmarlo con una normale identità di sviluppo. Non concedergli platform-application o com.apple.private.security.no-sandbox, poiché il test è specificamente pensato per essere eseguito da una normale sandbox applicativa.

Ambito e limitazioni

  • Questa è una mitigazione in user-space per la primitiva SpringBoardServices pubblicata, non la patch completa di FrontBoard di Apple.
  • La versione 1.1 non richiede l'iniezione nelle applicazioni protette. Disabilitare l'iniezione globalmente o per SpringBoard stesso disabiliterà la mitigazione.
  • L'implementazione lato server è confermata su iOS 17.3.1 build 21D61. Sulle altre versioni supportate, il tweak installa il proprio hook solo quando il selettore privato ha l'ABI atteso, validato a runtime.
  • Un test 7 / 7 è significativo solo quando è noto che l'applicazione di destinazione è installata.
  • Il tester chiama intenzionalmente un'API privata non documentata e non è adatto per la sottomissione all'App Store.

Riferimenti

Licenza

MIT

Categorie