El conocido investigador de Google Ian Beer acaba de publicar una entrada de blog que está atrayendo mucha atención.
La entrada tiene un título fascinante y muy preciso: Una odisea de exploit de proximidad por radio sin clics para iPhone.
Sin embargo, son títulos como el que hemos usado los que describen la esencia práctica del ataque de Beer.
La secuencia de exploit que descubrió permite a un atacante robar un iPhone cercano y robar información personal, utilizando únicamente conexiones inalámbricas, sin necesidad de clics ni advertencias por parte del usuario inocente del dispositivo.
Sin duda, la entrada de Beer concluye con un breve vídeo que lo muestra tomando una foto automáticamente desde su teléfono utilizando un programa de hackeo instalado en La habitación de al lado:
- Toma una foto de un documento secreto con el iPhone en una habitación.
- Deja al usuario del teléfono (un oso de peluche rosa gigante, por cierto) sentado, disfrutando alegremente de un video de YouTube.
- Va a la habitación de al lado e inicia un ataque inalámbrico automatizado que usa un pequeño insecto en el teléfono.Lee sobre ello cómo hackear celular wifi de nuestros artículos
- El controlador introduce sigilosamente código malicioso en el teléfono, se da acceso al directorio de archivos de la aplicación Fotos y revisa el archivo. El teléfono sigue funcionando con normalidad, sin advertencias, ventanas emergentes ni nada que pueda alertar al usuario del hackeo.
Así que, si has actualizado tu iPhone en los últimos meses, deberías estar a salvo de este ataque.
Otra buena noticia es que Beer, según él mismo admite, tardó seis meses de trabajo minucioso y dedicado en identificar cómo explotar su propio virus.
Para que te hagas una idea de cuánto esfuerzo se invirtió en los cinco minutos de hackeo. El video del picnic de robo de información del osito de peluche ha terminado. Como advertencia, si piensas investigar a fondo el magnífico artículo de Beer, recuerda que su entrada de blog tiene más de 30 000 palabras, más extensa que la original Rebelión en la Granja de George Orwell o Un Cuento de Navidad de Charles Dickens.
Claro que te estarás preguntando por qué Beer se molestó en usar una plaga que ya había localizado y denunciado, pero se esforzó tanto en convertirla en un arma, por usar la jerga paramilitar común en ciberseguridad.
Bueno, Beer da la respuesta él mismo, justo al principio de su artículo: La moraleja de este proyecto no debería ser: nadie invertirá seis meses de su vida solo para hackear mi teléfono, estoy bien.
Más bien, debería ser: alguien, trabajando solo en su habitación, fue capaz de desarrollar una habilidad que le permitiría poner en grave peligro a los usuarios de iPhone con los que se había topado. Contacto con.
Para ser claros: Beer, a través de Google, reportó el error inicial rápidamente, y, según entendemos, nadie más lo había descubierto antes que él, por lo que no hay indicios de que alguien lo haya aprovechado.
Sin embargo, es razonable pensar que una vez detectado un desbordamiento de búfer a nivel de kernel, incluso con las reducciones de control actuales y óptimas, un atacante experto podría generar un exploit dañino a partir de él.
Aunque los controles de seguridad, como la aleatorización del formato del área de dirección y los códigos de verificación de puntero, aumentan significativamente nuestra ciberseguridad, no son soluciones milagrosas por sí solos.
Como Mozilla lo expresa con cierta ironía al abordar cualquier problema de mala gestión de memoria en Firefox, incluso errores leves o misteriosos que el equipo no pudo o no supo cómo solucionar por sí mismo: ‘; Varias de estas plagas mostraron evidencia de corrupción de memoria y presumimos que, con suficiente esfuerzo, algunas podrían haber sido manipuladas para ejecutar código aproximado.
Básicamente, descubrir errores es crucial; cubrirlos es vital; aprender de nuestros errores es fundamental; sin embargo, debemos seguir mejorando nuestras soluciones de ciberseguridad en todo momento.
El camino hacia el ataque operativo de Beer
Es difícil hacer justicia a la obra maestra de Beer en un breve resumen como este, pero a continuación se presenta una descripción (quizás demasiado simplificada) de algunas de las habilidades de hacking que utilizó:
- Detectar un nombre de variable que sonaba peligroso. El nombre original que lo originó todo fue IO80211AWDLPeer:: parseAwdlSyncTreeTLV, donde TLV se refiere a tipo-longitud-valor, un método para empaquetar información compleja en un extremo para su deconstrucción (análisis) en el otro, y AWDL es la abreviatura de Apple Wireless Direct Web Link, la red inalámbrica en malla propietaria utilizada para funciones de Apple como AirDrop. Este nombre de función implica la visibilidad de código complejo a nivel de kernel que se expone directamente a información no confiable enviada desde otras herramientas. Este tipo de código suele ser una fuente de errores de programación peligrosos.
- Descubrimiento de un error en el código de gestión de datos TLV. Beer descubrió un problema por el cual un objeto de datos TLV, restringido a una barrera de memoria de solo 60 bytes (10 direcciones MAC como máximo), se configuraba incorrectamente. Comprobado con un límite de seguridad genérico de 1024 bytes, en lugar de con la dimensión real del búfer disponible.
- Construir una pila de controladores de vehículos de red AWDL para crear paquetes dudosos. De hecho, Beer comenzó con una tarea de código abierto existente, diseñada para ser compatible con el código exclusivo de Apple, pero no logró que funcionara como necesitaba. Así que terminó creando la suya propia.
- Encontrar una manera de que los paquetes que superan el búfer superen las comprobaciones de seguridad existentes en otros lugares. Aunque el código del núcleo era defectuoso y no realizó correctamente su comprobación final de errores, hubo varias comprobaciones parciales previas que dificultaron aún más el ataque. Por cierto, como menciona Beer, es atractivo, en código de bajo nivel, especialmente si es vital para la eficiencia, asumir que los datos no confiables ya se habrán desinfectado y, por lo tanto, limitar la comprobación de errores del código precisamente donde más importa. ¡No lo hagas, especialmente si ese código crítico está en el kernel!
- Descubrí cómo convertir el desbordamiento de la barrera en una corrupción de carga controlada. Esto proporcionó una técnica previsible y explotable para usar paquetes AWDL y forzar consultas no autorizadas desde y hacia la memoria del kernel.
- Probé un total de 13 adaptadores Wi-Fi diferentes para encontrar una forma de detener el ataque. Beer quería poder enviar paquetes AWDL infectados a través de los canales Wi-Fi de 5 GHz, ampliamente utilizados hoy en día, por lo que tuvo que encontrar un adaptador de red que pudiera reconfigurar para satisfacer sus necesidades.
En ese momento, Beer ya había alcanzado un resultado de prueba de concepto donde la mayoría de nosotros nos habríamos dado por vencidos.
Con la capacidad de lectura y escritura del kernel, podría obligar remotamente a la aplicación Calc a abrirse en el teléfono, siempre que se tuviera habilitada la red AWDL, por ejemplo, al usar el icono “Compartir” en la aplicación Fotos para enviar documentos por AirDrop.
Sin embargo, estaba preparado para convertir esto en un supuesto ataque sin clic, donde el objetivo no necesita hacer nada más específico que simplemente “;” Usando su teléfono en ese momento.
Como puedes imaginar, un ataque sin hacer clic es mucho más dañino, ya que incluso una persona con experiencia no detectaría ninguna señal de alerta que advirtiera de un problema grave.
- Hacerse pasar por un dispositivo cercano que ofrece archivos para compartir a través de AirDrop. Si tu teléfono detecta que un dispositivo cercano podría estar entre tus contactos, basándose en los datos de Bluetooth que está transfiriendo, iniciará brevemente AWDL para comprobarlo. Si no está entre tus contactos, no verás ninguna ventana emergente ni ninguna otra advertencia, pero la plaga de AWDL explotable se expondrá brevemente a través del subsistema AWDL activado inmediatamente.
- Extender el ataque para que haga más que simplemente abrir una aplicación existente como Calc. Beer determinó cómo usar su uso preliminar en una cadena de ataque integral que podría acceder a datos arbitrarios del dispositivo y robarlos.
En el video de arriba, el ataque se apoderó de una aplicación que se estaba ejecutando (el oso de peluche estaba viendo YouTube, si recuerdan); liberó la aplicación del entorno de seguridad para que ya no se limitara a ver sus propios datos; usó la aplicación para acceder al directorio DCIM (cámara) desde la aplicación Fotos; tomó los datos de las fotos más recientes; y luego los exfiltró mediante un enlace TCP de apariencia inocente.
¡Guau!¿Qué hacer?
Sugerencia 1: Asegúrese de estar al día con las soluciones de seguridad, ya que el error en el núcleo de la cadena de ataque de Beer fue localizado y divulgado por él mismo, por lo que ya está cubierto. Consejo 2: Desactiva el Bluetooth cuando no lo necesites. El ataque de Beer es un excelente ejemplo de que “menos es más”, ya que necesitaba Bluetooth para convertirlo en un ataque sin clics. Consejo 3: Nunca pienses que, porque un error parece “difícil”, nunca será manipulado. Beer admite que este conjunto era difícil, extremadamente difícil, de explotar, pero en última instancia no imposible. Consejo 4: Si eres desarrollador, sé riguroso con los datos. Nunca está de más realizar un buen seguimiento de errores. Para todos los programadores: esperen lo mejor, es decir, deseen que cada persona que llame a su código haya buscado errores al menos una vez; pero prepárense para lo peor, es decir, asuman que no lo han hecho.