Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
AppEnumGuard — CVE-2025-31207 mitigación y probador en sandbox para jailbreaks rootless y rootHide en iOS 15–18.4.1. | Kitploit
Herramientas/GitHubGitHub/kolbicz/appenumguard
Herramientas DefensivasSeguridad iOSAnálisis de VulnerabilidadesSeguridad MóvilPrivacidad
GitHubkolbicz/appenumguard

AppEnumGuard

CVE-2025-31207 mitigación y probador en sandbox para jailbreaks rootless y rootHide en iOS 15–18.4.1.

Ver Repositorio
5221hace 17 díasAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

AppEnumGuard

AppEnumGuard es un ajuste defensivo para el canal lateral de enumeración de aplicaciones instaladas, rastreado como CVE-2025-31207. Es compatible con entornos de jailbreak convencionales sin root (rootless) y rootHide en iOS 15.0–18.4.1. 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

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 utilizando diferentes códigos de retorno. Esto puede revelar información privada sobre las aplicaciones que un usuario tiene instaladas, incluyendo aplicaciones bancarias, de mensajería, de seguridad, de 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, los sistemas anteriores a iOS 18.5 siguen afectados a nivel del sistema operativo.

Compatibilidad

ComponenteObjetivo compatible
iOS15.0–18.4.1
JailbreakCualquier entorno de jailbreak convencional rootless o rootHide
Arquitectura de bootstrap/paqueterootless / iphoneos-arm64; rootHide / iphoneos-arm64e
Arquitectura del dispositivoarm64 y arm64e (rootless); arm64e (rootHide)
PaqueteInstalar el paquete que coincida con el bootstrap del dispositivo

La compilación predeterminada utiliza Theos rootless convencional e incluye slices arm64 y arm64e. La variante rootHide se compila con Theos rootHide y contiene las rutas de loader .jbroot requeridas por rootHide. Ambos paquetes declaran firmware (>= 15.0) y firmware (<< 18.5): la mitigación es innecesaria en iOS 18.5 y versiones posteriores, donde Apple corrigió CVE-2025-31207.

El ajuste v1.1 del lado de SpringBoard y el probador en sandbox se verificaron juntos en iOS 17.3.1 build 21D61 con inyección deshabilitada para el probador. El probador detectó la fuga con el ajuste eliminado y devolvió un pase verde después de instalar el ajuste.

Cómo funciona

La primitiva publicada llama a la función privada de SpringBoardServices SBSLaunchApplicationWithIdentifierAndURLAndLaunchOptions. En un sistema vulnerable devuelve diferentes errores para una aplicación instalada y una aplicación inexistente:

  • 9: el objetivo existe, pero el lanzamiento está denegado por política
  • 7: el objetivo no existe

AppEnumGuard 1.1 se inyecta solo en SpringBoard y engancha el método común de validación de confianza FBSystemService. Cuando una solicitud de lanzamiento no autorizada devolvería el error 3 de política de seguridad FBSOpenApplicationErrorDomain, el ajuste lo cambia al error 4 de aplicación no encontrada. La API externa de SpringBoardServices devuelve entonces 7 tanto para objetivos instalados como inexistentes.

El número de argumentos del método privado y la codificación de tipo Objective-C se validan antes de instalar el hook. Si Apple cambia la ABI, AppEnumGuard falla abierto en lugar de enganchar un método desconocido de SpringBoard.

Cambio desde 1.0

La versión 1.0 enganchaba SpringBoardServices dentro de cada aplicación UIKit. Funcionaba, pero requería inyección en cada aplicación protegida; una aplicación que deshabilitara o detectara la inyección podía omitir la mitigación. La versión 1.1 mueve la aplicación de la medida a SpringBoard, por lo que un único hook central protege a los llamadores sin inyectar AppEnumGuard en sus procesos.

Descargas de lanzamiento

El lanzamiento 1.2 se puede compilar para cualquiera de los dos bootstraps:

  • AppEnumGuard_1.2_rootless_iphoneos-arm64.deb — ajuste rootless convencional
  • AppEnumGuard_1.2_roothide_iphoneos-arm64e.deb — ajuste rootHide
  • AppEnumGuardTester_1.2_sandboxed.ipa — aplicación de verificación en sandbox con icono

Instalar y verificar

  1. Instale el .deb que coincida con el bootstrap rootless o rootHide y haga respring.
  2. Instale el IPA del probador usando una firma normal de desarrollador/sideloading.
  3. Deje la inyección de AppEnumGuard deshabilitada para AppEnum Test; v1.1 lo protege desde SpringBoard.
  4. Toque el icono de WhatsApp, YouTube o Spotify para una aplicación que sepa que está instalada.

Resultados esperados con el objetivo seleccionado instalado:

EstadoObjetivoInexistenteResultado del probador
Ajuste ausente97Rojo / FALLO
Ajuste activo77Verde / PASE

El probador informa verde cuando la aplicación seleccionada no es detectable y rojo cuando es detectable. Seleccione solo una aplicación que sepa que está instalada: 7 / 7 por sí solo no puede distinguir una mitigación funcional de un objetivo que no existe.

La prueba en dispositivo reprodujo ambos estados con la inyección del probador deshabilitada: desinstalar el ajuste produjo el resultado rojo 9 / 7, mientras que instalar v1.1 produjo el resultado verde 7 / 7.

Compilar el ajuste

Con Theos estándar, la compilación predeterminada es rootless convencional:

root@kitploit:~
cd Tweak
make clean package FINALPACKAGE=1

Para rootHide, instale rootHide Theos y ejecute:

root@kitploit:~
cd Tweak
THEOS=/path/to/theos-roothide \
  make clean package FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=roothide

Compilar el IPA del probador

El probador se compila con el SDK de iPhoneOS de Xcode y no tiene jailbreak ni entitlements elevados:

root@kitploit:~
./scripts/build-tester-ipa.sh

El IPA resultante se coloca en dist/. Está firmado ad-hoc para que un instalador pueda volver a firmarlo con una identidad de desarrollo normal. No le conceda platform-application ni com.apple.private.security.no-sandbox, ya que la prueba está específicamente diseñada para ejecutarse desde un sandbox de aplicación normal.

Alcance y limitaciones

  • Esta es una mitigación a nivel de espacio de usuario para la primitiva publicada de SpringBoardServices, no el parche completo de FrontBoard de Apple.
  • La versión 1.1 no requiere inyección en aplicaciones protegidas. Deshabilitar la inyección globalmente o para SpringBoard mismo deshabilitará la mitigación.
  • La implementación del lado del servidor está confirmada en iOS 17.3.1 build 21D61. En otras versiones compatibles, el ajuste instala su hook solo cuando el selector privado tiene la ABI esperada validada en tiempo de ejecución.
  • Una prueba 7 / 7 solo es significativa cuando se sabe que la aplicación objetivo está instalada.
  • El probador llama intencionalmente a una API privada no documentada y no es adecuado para el envío a la App Store.

Referencias

  • Contenido de seguridad de Apple iOS 18.5
  • NVD: CVE-2025-31207
  • Prueba de concepto pública original de SpringBoardServices
  • Documentación para desarrolladores de rootHide

Licencia

MIT

Descargar herramienta