La explotación se dirige al modo EDL de Qualcomm, afecta a algunos dispositivos Xiaomi, OnePlus, Nokia y otros

Afortunadamente, requiere acceso físico al dispositivo

Los dispositivos con conjuntos de chips Qualcomm tienen un B oot l oder (PBL) primario que normalmente arranca el sistema Android, pero también alberga un modo de arranque alternativo conocido como modo EDL. El modo EDL es el modo de carga de emergencia D de Qualcomm y permite que un fabricante de equipo de equipo O (OEM) forzar el software flash en un dispositivo. Esto no se puede modificar (modo de solo lectura) y tiene control total sobre el almacenamiento del dispositivo. Muchos fabricantes de equipos originales, incluidos OnePlus y Xiaomi, han lanzado herramientas (conocidas como programadores) que utilizan el modo EDL y un protocolo conocido como Firehose para desbloquear un dispositivo, mientras que otras herramientas de compañías como Nokia se han filtrado. Firehose puede utilizar una serie de comandos para flashear dispositivos, junto con la capacidad de examinar los datos dentro de la memoria de un dispositivo. Los investigadores de seguridad Roee Hay (@roeehay) y Noam Hadad de Aleph Research han descubierto vulnerabilidades críticas del dispositivo usando este modo, que efectivamente le otorga al atacante acceso completo al dispositivo .

Es importante tener en cuenta que este exploit requiere acceso físico al dispositivo, pero sigue siendo increíblemente peligroso y probablemente no pueda ser parcheado . Los atacantes utilizaron el nivel de acceso otorgado al modo EDL para evitar el arranque seguro en un Nokia 6, derrotando la cadena de confianza y obteniendo la ejecución completa del código en cada parte de la secuencia de arranque, incluido el sistema operativo Android. Se teoriza que funciona de la misma manera en otros dispositivos, y los investigadores también lograron desbloquear y rootear múltiples dispositivos Xiaomi sin pérdida de datos.

¿Qué dispositivos se ven afectados por este exploit?

En primer lugar, los dispositivos afectados.

Lista de dispositivos afectados.

  • LG G4
  • Nokia 6 (d1c)
  • Nokia 5
  • Nexus 6 (shamu)
  • Nexus 6P (pescador)
  • Moto G4 Plus
  • OnePlus 5 (hamburguesa con queso)
  • OnePlus 3T
  • OnePlus 3
  • OnePlus 2
  • OnePlus X
  • Uno más uno
  • ZTE Axon 7
  • ZUK Z1
  • ZUK Z2
  • Xiaomi Note 5A (ugglite)
  • Xiaomi Note 5 Prime (ugg)
  • Xiaomi Note 4 (mido)
  • Xiaomi Note 3 (Jason)
  • Xiaomi Note 2 (escorpión)
  • Xiaomi Mix (litio)
  • Xiaomi Mix 2 (chiron)
  • Xiaomi Mi 6 (sagit)
  • Xiaomi Mi 5s (Capricornio)
  • Xiaomi Mi 5s Plus (natrio)
  • Xiaomi Mi 5x (tiffany)
  • Xiaomi Mi 5 (Géminis)
  • Xiaomi Mi 3 (cancro)
  • Xiaomi Mi A1 (tissot)
  • Xiaomi Mi Max2 (oxígeno)
  • Xiaomi Redmi Note 3 (kenzo)
  • Xiaomi Redmi 5A (riva)
  • Xiaomi Redmi 4A (rosado)

Explotando un teléfono Android

La secuencia de arranque de un teléfono típico Android Qualcomm

Es importante comprender primero la secuencia de arranque de un dispositivo Android típico antes de explicar cómo se puede explotar. El software B oot l oader (SBL) es un gestor de arranque firmado digitalmente que se verifica para verificar su autenticidad antes de cargarlo en imem. imem es una memoria rápida en chip utilizada para depuración y transacciones DMA (memoria directa), y es propiedad de los conjuntos de chips Qualcomm.

Algunos dispositivos tienen una E X extensible B oot l oader (XBL) en lugar de una SBL, pero el proceso de arranque es prácticamente el mismo. El SBL o XBL luego lanza ABOOT, que implementa fastboot. Después de esto, TrustZone (seguridad basada en hardware) también se carga. TrustZone comprueba la autenticidad de ABOOT mediante un certificado raíz basado en hardware. El SBL (o XBL, en algunos casos) está diseñado para rechazar un ABOOT incorrectamente firmado (o sin firmar).

Una vez autenticado, ABOOT comprueba / boot y / recovery para verificar su autenticidad antes de iniciar el kernel de Linux. Se realizan algunos preparativos del sistema y luego la ejecución del código se transfiere al kernel. ABOOT se conoce comúnmente como el "Cargador de arranque de Android", y cuando desbloqueamos el cargador de arranque de un dispositivo, estamos deshabilitando esta comprobación de autenticidad en ABOOT.

Secuencia de arranque de un dispositivo Android estándar visualizado. // Fuente: Aleph Research

Acceso al modo EDL

Mientras que algunos dispositivos tienen una combinación de hardware simple (o peor, un comando de arranque rápido patentado simple presente en muchos dispositivos Xiaomi), otros, como los dispositivos Nokia, necesitan pines cortos conocidos como "puntos de prueba" presentes en la placa principal del dispositivo. También solía ser posible, antes del parche de seguridad de diciembre de 2017, simplemente ejecutar "adb reboot edl" en muchos dispositivos (incluidos los Nexus 6 y 6P) e ingresar al modo EDL. Esto ya se ha solucionado.

Los puntos de prueba se muestran en un cuadro amarillo dibujado en la parte inferior de la placa base del dispositivo. // Fuente: Aleph Research

Otros dispositivos también pueden usar lo que se conoce como cable de "flash profundo", que es un cable especial con ciertos pines en cortocircuito para indicar al sistema que arranque en modo EDL. Los dispositivos antiguos de Xiaomi pueden utilizar este método, junto con el Nokia 5 y Nokia 6. Otros dispositivos también se iniciarán en modo EDL cuando no puedan verificar el SBL.

Un cable de flash profundo

Utilizando el modo EDL para obtener acceso completo en un OnePlus 3 / 3T

El modo EDL se puede utilizar de varias maneras en un dispositivo, principalmente para desbloquear dispositivos al forzarlos. Como se explicó anteriormente, en teoría debería ser seguro para cualquiera acceder a este modo, ya que el peor de los casos es que ABOOT rechazará el software que no esté oficialmente firmado por el fabricante. Si bien esto es cierto, en realidad es posible obtener un control completo sobre OnePlus 3 o 3T y sus archivos en una prueba de explotación de concepto mostrada por los investigadores.

Esto se realizará a través de dos comandos muy peligrosos que OnePlus dejó accesibles en una versión anterior de ABOOT (el cargador de arranque de Android), para desbloquear el cargador de arranque del dispositivo (sin que se muestre una advertencia al usuario en el arranque) y deshabilitar dm_verity. dm_verity también se conoce como arranque verificado y es parte de una secuencia de arranque segura en un dispositivo Android. Los dos comandos son los siguientes.

 fastboot oem disable_dm_verity 
 fastboot oem 4F500301/2 

Observe el sencillo proceso de 4 pasos a continuación que utiliza el protocolo Firehose.

  1. Primero, inicie el dispositivo en modo EDL. Esto se puede hacer a través de adb en OxygenOS 5.0 o inferior o mediante una simple combinación de teclas de hardware.
  2. Descargue una imagen del sistema anterior de OxygenOS 4.0.2 a continuación.
  3. Flash aboot.bin a través de firehose (recuerde que aboot.bin implementa fastboot, como mencionamos anteriormente)
  4. Ahora podrá desactivar el arranque seguro y desbloquear el cargador de arranque sin borrar el dispositivo simplemente usando los dos comandos de arranque rápido anteriores.

Si recuerdas, se descubrió que OnePlus dejó dos comandos peligrosos de arranque rápido hace casi un año, uno que desbloqueó el gestor de arranque y otro que deshabilitó el arranque seguro. Si bien es cierto que un atacante no puede instalar software malicioso en el dispositivo, puede degradar el dispositivo para que tenga un software más antiguo y vulnerable al ataque . Simplemente ejecutando los comandos fastboot anteriores, un atacante puede tener acceso completo al dispositivo.

Y eso es todo, el gestor de arranque está desbloqueado, el arranque seguro está apagado y no hay absolutamente ninguna pérdida de datos. Si un atacante quisiera llevar esto un paso más allá, podría flashear un kernel personalizado malicioso que permita el acceso raíz al dispositivo que el usuario nunca conocería.

Firehose funciona a través del protocolo Qualcomm Sahara, que acepta un programador firmado por OEM y así es como se llevaría a cabo el ataque anterior. Cuando se conecta a un dispositivo, actúa como un SBL a través de USB. La mayoría de los programadores usan Firehose para comunicarse con un teléfono en modo EDL, que es lo que los investigadores explotaron para obtener el control total del dispositivo. Los investigadores también usaron esto para desbloquear un dispositivo Xiaomi simplemente mostrando una imagen modificada que desbloqueó el gestor de arranque. Luego mostraron un kernel personalizado que daba acceso a la raíz y lanzaron SELinux de manera permisiva y también extrajeron la imagen de datos de usuario cifrada del dispositivo.

Conclusión

No se sabe por qué los OEM liberan a estos programadores de Qualcomm. Los programadores de Nokia, LG, Motorola y Google se filtraron en lugar de ser liberados, sin embargo, los investigadores lograron romper toda la cadena de confianza en el Nokia 6 y obtener acceso completo al dispositivo a través de métodos similares de explotación. Confían en que el ataque se puede transferir a cualquier dispositivo que admita estos programadores. Si es posible, los fabricantes de equipos originales deben utilizar los fusibles q del hardware que evitan las reversiones del software, al explotar cuando el hardware del dispositivo se revierte y pueden advertir al usuario que se ha producido. Los interesados ​​pueden echar un vistazo al documento de investigación completo a continuación y también pueden leer la explotación completa de Nokia.


Fuente: Aleph Research