miércoles, 13 de diciembre de 2017

Algunos detalles sobre el jailbreak en dispositivos iOS 11

El investigador de seguridad Ian Beer ha publicado una prueba de concepto de un exploit que permite hacer 'jailbreak' de dispositivos iOS y macOS.



Ian Beer pertenece al grupo 'Project Zero' de Google. Un equipo de investigadores de seguridad encargados de buscar vulnerabilidades día cero en dispositivos y aplicaciones de uso común.

El exploit se basa en tres vulnerabilidades etiquetadas respectivamente como CVE-2017-13861CVE-2016-7612CVE-2016-7633 y que consisten en diversos fallos a la hora de gestionar la memoria que permitirían a un atacante corromperla y ejecutar código arbitrario con privilegios de sistema. Estas vulnerabilidades ya fueron corregidas. La más reciente en la versión iOS 11.2 el pasado 2 de diciembre.

Beer ha hecho pública una prueba de concepto para macOS (iosurface_uaf_ios.zip) e iOS (async_wake_ios.zip) que permitiría hacer jailbreak de estos dispositivos hasta la versión 11.1.2


El exploit consigue hacer un tfp0 (task_for_pid 0), o lo que es lo mismo, realizar una llamada al sistema que permite recuperar el proceso con PID=0 y leer o escribir directamente en la memoria del kernel. Pudiendo escalar privilegios en el dispositivo y acceder a funcionalidades restringidas por Apple, como instalar aplicaciones, extensiones y temas que no están disponibles en el repositorio oficial.



Francisco Salido
fsalido@hispasec.com

Más información:

iOS/MacOS kernel double free due to IOSurfaceRootUserClient not respecting MIG ownership rules

v0rtex: Turning the IOSurface inside out
https://siguza.github.io/v0rtex/


martes, 12 de diciembre de 2017

Vulnerabilidad Janus de Android permite la modificación de aplicaciones sin afectar su firma

Un fallo en los formatos APK y DEX podría permitir que la inyección de código malicioso fuera indetectable como actualización de una aplicación legítima.



Un equipo de investigadores de la empresa Guard Square, ha hecho pública una vulnerabilidad en los formatos de ficheros APK y DEX que, combinada con el comportamiento de las máquinas virtuales Android, podría permitir la manipulación del código de las aplicaciones sin alterar su firma. 

Identificada como CVE-2017-13156 y llamada "Janus", por el dios romano de la dualidad, la vulnerabilidad radica en que un fichero puede ser manipulado de forma que resulte un APK y un DEX válido al mismo tiempo.

El formato DEX es un formato de fichero binario propio de la máquina virtual Dalvik, utilizada hasta la versión 4.4 "KitKat" para ejecutar aplicaciones Android. A partir de esta versión fue sustituida por la máquina virtual Android Runtime (ART) pero el formato DEX se ha mantenido. Los APKs, por otro lado, son ficheros zip basados en el formato JAR que contienen, entre otros, ficheros DEX.

¿Cómo es posible que un fichero sea DEX y APK a la vez?

De una forma bastante curiosa. Por un lado, los ficheros APK permiten introducir bytes arbitrarios al inicio del fichero, antes de las entradas zip. El esquema de firma JAR usado por Android ignora estos bytes y solo utiliza las entradas zip para calcular la firma.

Pero por otro lado, los ficheros DEX permiten la inclusión de bytes arbitrarios al final del fichero. Por tanto, incluyendo uno de estos ficheros al inicio de un APK, un fichero sería valido en ambos formatos sin alterar la firma generada para el paquete. 


Esquema de como realizar la inyección de DEX en un APK. Obtenida de GuardSquare

Un fichero manipulado de esta manera sería además ejecutado sin problemas por las máquinas virtuales, tanto Dalvik como ART. El APK sería aceptado por la VM, dado que su firma es correcta, pero el que sería finalmente ejecutado es el fichero DEX inyectado.

El escenario de mayor riesgo es el de las actualizaciones: la firma es el método de verificación para la instalación de nuevas versiones de una aplicación. Usando esta vulnerabilidad, un atacante podría inyectar un DEX malicioso dentro de un APK legítimo sin alterar su firma y hacerlo pasar por una actualización del mismo. Una vez instalado, el malware puede aprovechar los permisos aplicados a la versión legítima previa para acceder a todo tipo de información sensible o redirigir los datos de la victima a sitios maliciosos.

La vulnerabilidad está presente en versiones recientes de Android (de la 5 en adelante) aunque no afecta a aquellas aplicaciones que corren en Android 7.0 y que han sido firmadas usando el esquema de firma APK v2, que sí toma todo el contenido del fichero para generar la firma. La solución al fallo de seguridad ha sido publicada en el boletín de seguridad de Android del pasado día 4 de diciembre.





Más información:

New Android vulnerability allows attackers to modify apps without affecting their signatures: