
Mitigación de CVE-2025-31207 y probador en sandbox para iOS 17 Relaxin/rootHide
AppEnumGuard es un tweak defensivo de rootHide para el canal lateral de enumeración de aplicaciones instaladas, rastreado como CVE-2025-31207. Está diseñado para el jailbreak Relaxin en iOS 17.0–17.3.1, utilizando la arquitectura rootHide de Relaxin. El repositorio también contiene una aplicación de prueba iOS normal en sandbox que demuestra el resultado vulnerable y verifica la mitigación.
CVE-2025-31207 es una vulnerabilidad de divulgación de información en la lógica de lanzamiento de aplicaciones FrontBoard de Apple. Una aplicación en sandbox puede enviar identificadores de paquete arbitrarios a través de una función privada de lanzamiento de SpringBoardServices y distinguir aplicaciones instaladas de aplicaciones inexistentes usando códigos de retorno diferentes. Esto puede revelar información privada sobre las aplicaciones que un usuario tiene instaladas, incluidas aplicaciones de banca, mensajería, seguridad, sideloading y relacionadas con jailbreak.
Apple describe el problema como un problema de lógica que podría permitir a una aplicación enumerar aplicaciones instaladas. Apple lo corrigió con comprobaciones mejoradas en iOS y iPadOS 18.5. En consecuencia, iOS 17.0–17.3.1 sigue afectado a nivel de sistema operativo.
| Componente | Objetivo compatible |
|---|---|
| iOS | 17.0–17.3.1 |
| Jailbreak | Relaxin |
| Arquitectura de bootstrap/paquetes | rootHide / iphoneos-arm64e |
| Arquitectura del dispositivo | arm64e; el binario del tweak contiene solo un slice arm64e |
| Paquete | Instala el .deb de rootHide, no una compilación rootless convencional |
Relaxin usa la arquitectura de bootstrap/paquetes rootHide, por lo que AppEnumGuard está compilado con rootHide Theos y contiene rutas de loader .jbroot de rootHide. El paquete declara firmware (>= 17.0) y firmware (<< 17.4), lo que coincide con el rango compatible de Relaxin de 17.0–17.3.1.
El tweak y el tester se verificaron juntos en un dispositivo real con Relaxin/rootHide: el tester detectó la filtración con el tweak desinstalado y devolvió un resultado verde/PASS después de instalar el tweak.
La primitiva publicada llama a la función privada de SpringBoardServices SBSLaunchApplicationWithIdentifierAndURLAndLaunchOptions. En un sistema vulnerable, devuelve errores distintos para una aplicación instalada y una aplicación inexistente:
9: el objetivo existe, pero el lanzamiento está denegado por política7: el objetivo no existeEl tweak se inyecta en los procesos de aplicaciones UIKit. Para una aplicación ordinaria instalada en el contenedor, devuelve 7 sin enviar la solicitud de lanzamiento privada. Los procesos del sistema de Apple y otros procesos fuera del contenedor de la aplicación conservan el comportamiento original.
Cada versión de GitHub contiene ambos artefactos instalables:
AppEnumGuard_1.0.0_roothide_iphoneos-arm64e.deb — tweak rootHideAppEnumGuardTester_1.0.0_sandboxed.ipa — aplicación de verificación en sandbox.deb de rootHide y haz respring.Resultados esperados con WhatsApp instalado:
| Estado | Objetivo | Inexistente | Resultado del tester |
|---|---|---|---|
| Tweak ausente | 9 | 7 | Rojo / FAIL |
| Tweak activo | 7 | 7 | Verde / PASS |
La prueba en el dispositivo original reprodujo ambos estados: desinstalar el tweak produjo el resultado rojo 9 / 7, mientras que instalarlo produjo el resultado verde 7 / 7.
Instala rootHide Theos y luego ejecuta:
cd Tweak
THEOS=/path/to/theos-roothide \
make clean package FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=roothide
El tester se compila con el iPhoneOS SDK de Xcode y no tiene jailbreak ni entitlements elevados:
./scripts/build-tester-ipa.sh
El IPA resultante se coloca en dist/. Está firmado ad-hoc, por lo que un instalador puede volver a firmarlo con una identidad de desarrollo normal. No le concedas platform-application ni com.apple.private.security.no-sandbox, ya que la prueba está específicamente pensada para ejecutarse desde un sandbox de aplicación normal.
7 / 7 solo tiene sentido cuando se sabe que la aplicación objetivo está instalada.MIT