iOS 18.4 Actualización presenta un error crítico en la resolución de símbolos dinámicos

La última actualización de iOS 18.4 de Apple presenta un error crítico que afecta la resolución dinámica del símbolo de los dispositivos que admiten códigos de autenticación de puntero (PAC).

Este problema fue observado por primera vez por Fabien Perigaud, un destacado experto en ingeniería inversa, y afecta las aplicaciones que dependen de la carga dinámica de la biblioteca y la resolución de símbolos.

El error se muestra cuando una aplicación intenta resolver dinámicamente un símbolo usando la función dlsym (), especialmente en dispositivos equipados con un SoC A15, como la 3ta generación de iPhone SE.

El problema surge al monitorear la implementación de dlSym () dentro del enlazador dinámico (DYLD) en iOS 18.4. Ciertos símbolos, especialmente STRCMP, están firmados o firmados accidentalmente, lo que lleva a bloqueos de aplicación (1).

Detalles del error

Si su aplicación usa dlsym () para resolver símbolos como STRCMP que se reexportan de banderas especiales (export_symbol_flags_stub_and_resolver) de libsystem_platform.dylib, se supone que el puntero de la función devuelto elimina la firma PAC antes de que se convierta a un despliegue.

Sin embargo, en iOS 18.4, esta eliminación no ocurre y el puntero se firma dos veces. Esta doble firma conduce a una firma inválida o un puntero sin firmar, lo que hace que la aplicación se bloquee con una falla de protección del núcleo.

Procesamiento de funciones

La investigación de Perigaud of SynackTiv reveló que el problema se debió a una instrucción XPACI faltante en el código Dyld que elimina la firma PAC del puntero devuelto por la función del solucionador.

Esta instrucción existió en versiones anteriores de iOS 18.3.2, pero conduce a una ausencia observada en iOS 18.4.

Además, los experimentos han confirmado que los punteros se tratan como punteros del núcleo durante la segunda operación de firma, al contrario de las especificaciones de la arquitectura ARMV8.6-A.

Este error hace que el puntero se firme con todos los bits superiores establecidos en 1. Esto hará que Xared cancele la primera firma en el puntero original o genere la incorrecta.

Este error es especialmente importante para los desarrolladores que trabajan en aplicaciones que cargan dinámicamente bibliotecas o aplicaciones que usan la funcionalidad del sistema a través de dlsym ().

No todas las aplicaciones se bloquearán debido a este problema, pero aquellos que enfrentan serios problemas de estabilidad se bloquearán. Los desarrolladores han encontrado una solución temporal al despegar manualmente el puntero y volver a firmarlo, pero esta no es una solución sostenible.

Respuesta de manzana

Actualmente, Apple no admite oficialmente este error, pero teniendo en cuenta su gravedad, esperamos que lo arregle en futuras actualizaciones. La comunidad espera que Apple aborde rápidamente este problema para evitar mayores interrupciones en la funcionalidad y la seguridad de las aplicaciones.

El descubrimiento de este error destaca la complejidad involucrada en la implementación de características de seguridad como los PAC en los sistemas operativos modernos. También enfatiza la importancia de las pruebas exhaustivas y la validación de actualizaciones del sistema, particularmente aquellas que involucran interacciones del sistema de bajo nivel.

Recomendamos que los desarrolladores y usuarios resuelvan este importante problema a medida que Apple responde y las actualizaciones posteriores.

La seguridad de la aplicación ya no es un juego defensivo, es tiempo seguro -> Seminario web gratuito