Una sola página en Safari desencadena una cadena de ataques que compromete iOS 17

Una sola página en Safari desencadena una cadena de ataques que compromete iOS 17

La versión web de Relaxin convierte el jailbreak en algo alarmantemente sencillo.

image

La versión experimental Relaxin Lite permite iniciar el jailbreak del iPhone directamente desde Safari, sin una aplicación separada en la primera etapa. En la demostración publicada, el dispositivo con iOS 17.1.1 recorre toda la cadena desde la apertura de la página web local hasta el reinicio de SpringBoard y vuelve a la pantalla de inicio ya después de la activación de Relaxin.

Safari abre Relaxin Lite por una dirección IP local. En la página se indica que la cadena de navegador Coruna está diseñada para dispositivos arm64e con iOS 17.0–17.2.x. Arm64e incluye los procesadores modernos de 64 bits de Apple con protección adicional de punteros. Durante la ejecución no se puede minimizar la pestaña: el navegador realiza sucesivamente varias etapas de explotación de vulnerabilidades y las registra de inmediato.

Primero, Relaxin Lite ejecuta la elusión de PAC, el mecanismo de autenticación de punteros. Los procesadores modernos de Apple añaden a algunos punteros una firma criptográfica y la verifican antes de usar la dirección. Esta protección impide que un atacante sustituya arbitrariamente un puntero en memoria y haga que el procesador salte a la sección de código deseada. Por eso, para avanzar en la cadena no basta con encontrar un error habitual de manejo de memoria; también es necesario sortear PAC.

En la ejecución mostrada, la primera etapa funciona a la primera. A continuación, Relaxin Lite detecta la presencia de la verificación PAC y empieza a cargar los siguientes módulos. En el registro aparecen sucesivamente los archivos Stage2_16.6_17.2.1_seedbell_pre.js, Stage_17_0_17.2.1_seedbell.js y otras partes de Coruna. Los desarrolladores advierten que la etapa con WebKit a veces hay que lanzarla varias veces. La finalización exitosa de la parte del navegador se confirma con una ventana del sistema SpringBoard titulada Coruna.

WebKit sirve solo para la intrusión inicial más allá de las limitaciones de Safari. El control del proceso del navegador por sí solo todavía no otorga al jailbreak los permisos necesarios en toda iOS. El sistema operativo separa aplicaciones, servicios del sistema y el núcleo mediante varios niveles de protección, por lo que tras WebKit comienza la siguiente parte de la cadena, en la que Relaxin va obteniendo privilegios más altos.

Tras completar Coruna, el dispositivo cambia a la interfaz principal de Relaxin. El menú verde sobre fondo negro indica compatibilidad con iOS 16.5.1–17.3.1. En la demostración el programa detecta iOS 17.1.1, Darwin 23.1.0 y el tiempo de actividad del dispositivo desde el último arranque.

El comando relaxin do inicia la parte del sistema del jailbreak. Primero la herramienta confirma los parámetros del dispositivo y obtiene el kernelcache; después accede al núcleo, eleva privilegios, prepara el bootstrap, configura la confianza para BaseBin, entrega los componentes necesarios a launchd y conecta SystemHook.

Kernelcache contiene el núcleo de iOS y los componentes asociados preparados para cargarse en un dispositivo concreto. El análisis del kernelcache ayuda a la herramienta a determinar estructuras y direcciones necesarias para trabajar con la versión del sistema elegida. Tras obtener acceso al núcleo, Relaxin puede modificar restricciones que no están disponibles para las aplicaciones habituales.

Después, el programa eleva los privilegios y prepara el bootstrap, el conjunto de archivos y componentes de servicio para el entorno de jailbreak. Relaxin utiliza la arquitectura RootHide y no requiere la reescritura clásica de la partición del sistema iOS. Programas adicionales y archivos de servicio se alojan por separado de la parte protegida del sistema.

El siguiente punto del registro se refiere a BaseBin. En BaseBin se encuentran los componentes ejecutables básicos de Relaxin que necesitan permiso para ejecutarse. Tras configurar la confianza, parte de la gestión de procesos pasa a launchd. El proceso del sistema launchd se inicia al arrancar iOS y se encarga de activar muchos servicios del sistema operativo.

A continuación se conecta SystemHook. El registro de la demostración indica la variante con el dyld estándar, el cargador dinámico de Apple. dyld enlaza bibliotecas a los procesos en ejecución, y SystemHook utiliza el mecanismo de carga para inyectar componentes del jailbreak en los procesos necesarios.

Tras configurar SystemHook, Relaxin reinicia iconservicesagent y finaliza las operaciones relacionadas. El servicio iconservicesagent participa en el procesamiento de los datos sobre aplicaciones instaladas y sus iconos. El reinicio ayuda a la interfaz gráfica de iOS a adoptar los cambios sin necesidad de un reinicio completo del teléfono.

Al final aparece en la pantalla una R blanca en píxeles; a continuación el iPhone muestra el logotipo de Apple. Después SpringBoard se reinicia y el usuario vuelve a ver la pantalla de inicio habitual de iOS. En la demostración el sistema está en chino y junto al icono de Ajustes queda un indicador rojo de notificación.

El Relaxin principal pertenece a los jailbreak semivinculados y se basa en RootHide. Tras un reinicio completo del iPhone, los cambios dejan de aplicarse; sin embargo, no es necesario reinstalar el entorno. Al usuario le basta reactivar el jailbreak. Apple, en la documentación en ruso, también utiliza el término «jailbreak» para la modificación no autorizada de iOS que elude los mecanismos de seguridad integrados.

Relaxin está diseñado para iOS 17.0–17.3.1 y cubre dispositivos con procesadores desde A12 hasta A17, así como parte del equipo con M1 y M2. Relaxin Lite tiene por ahora un ámbito más limitado. La cadena de navegador Coruna mostrada funciona con arm64e y versiones de iOS 17.0–17.2.x.

La diferencia principal de Lite está en el método de arranque. La versión habitual de Relaxin requiere un archivo IPA firmado instalado por separado. Coruna traslada la etapa inicial a Safari: el usuario abre una página local, WebKit ejecuta la cadena del navegador y, tras superarla con éxito, la protección cede el control al entorno principal de Relaxin.

Los desarrolladores califican por ahora la variante para Safari como experimental. WebKit puede no funcionar a la primera, y el rango de firmware compatible ya es más estrecho que el del Relaxin principal. En notas anteriores sobre el desarrollo, el equipo informó que trabaja en ampliar la compatibilidad de Coruna, y tras la nueva demostración la comunidad espera la activación completa vía Safari en las próximas compilaciones públicas.

Para los propietarios de dispositivos compatibles, el lanzamiento desde el navegador elimina ante todo la necesidad de instalar un IPA firmado por separado en la etapa inicial. En qué medida Coruna conseguirá completar de forma fiable la parte de WebKit en distintos modelos de iPhone lo mostrarán las siguientes compilaciones de Relaxin y las pruebas futuras de la cadena.