en Post

Janus, la nueva vulnerabilidad de Android que pone en riesgo millones de dispositivos

Millones de dispositivos Android corren un grave riesgo ante una nueva vulnerabilidad crítica de este sistema operativo móvil que permite a los atacantes sobrescribir secretamente las aplicaciones legítimas instaladas en los smartphones con una versión maliciosa de la aplicación.

Esta vulnerabilidad ha sido llamada Janus, y permite a los atacantes modificar el código de las aplicaciones ya instaladas en tu smartphone Android sin afectar los certificados de verificación de firmas, lo que finalmente les permite distribuir actualizaciones maliciosas para aplicaciones legítimas, que se ven y funcionan igual que las aplicaciones originales.

La vulnerabilidad (CVE-2017-13156) fue descubierta e informada a Google por investigadores de seguridad de la empresa de seguridad móvil GuardSquare este verano y Google afortunadamente la ha parcheado, lo sabemos ahora porque figura entre cuatro docenas de vulnerabilidades parchadas como parte del último boletín de seguridad para Android del 5 diciembre.

Sin embargo, la parte preocupante es que la mayoría de los usuarios de Android no recibirán estos parches durante los próximos meses, hasta que los fabricantes de sus dispositivos (OEM) publiquen las actualizaciones personalizadas para ellos, aparentemente dejando a un gran número de usuarios de smartphones Android vulnerables a los cibercriminales.

La vulnerabilidad afecta a las aplicaciones que utilizan el esquema de firma de APK v1 que está instalado en los dispositivos que ejecutan las versiones de Android 5 (Lollipop) y 6 (Marshmallow). Si tu disposivo usa Android 7 (Nougat) o superior esta vulnerabilidad no afecta a tu equipo.

¿Cómo funciona Janus?

De acuerdo a lo explicado en el blog de GuardSquare, la vulnerabilidad reside en la forma en que Android maneja la instalación de un APK para algunas aplicaciones, dejando la posibilidad de agregar bytes adicionales de código al archivo APK sin afectar la firma de dicha aplicación.

Antes de seguir adelante, necesita conocer algunos conceptos básicos sobre un archivo APK.

Un archivo APK válido es un tipo de archivo, como Zip, que incluye el código de la aplicación, los recursos, los assets, firmas, certificados y el manifiesto de archivos.

Las versiones anteriores del sistema operativo Android 5.0 (Lollipop) y 6.0 (Marshmallow) también admiten una máquina virtual de proceso que ayuda a ejecutar archivos APK que contienen una versión compilada del código y los archivos de la aplicación, comprimidos con formato de archivo DEX (Dalvik EXecutable).

Al instalar una aplicación de Android o su actualización, usualmente un dispositivo Android verifica la información del encabezado de la APK para determinar si el archivo contiene código en los archivos DEX comprimidos.

Si el encabezado dice que el archivo APK contiene archivos DEX, la máquina virtual de proceso descompila el código en función de la plataforma y lo ejecuta; de lo contrario, ejecuta el código como un archivo APK normal.

Dado que un archivo APK puede contener archivos DEX y código de aplicación regular simultáneamente, sin afectar su validez y firmas. Es debido a esto que la vulnerabilidad ha recibido el nombre de Janus, el dios romano de la dualidad y los inicios, Janus por lo general es representado tendiendo dos caras. Esta vulnerabilidad muestra esa misma dualidad, ofrece una cara familiar e inocente al usuario, pero por otro lado hay una cara oculta que es la forma como un ciberdelincuente puede tomar control de nuestro equipo.

Los investigadores encontraron que esta capacidad de agregar bytes adicionales de código y a la falta de comprobación de integridad de archivos, se podría permitir a los atacantes agregar código malicioso compilado en formato DEX en un archivo APK que contenga código legítimo con firmas válidas, eventualmente engañando al proceso de instalación de la aplicación para ejecutar ambos códigos en el dispositivo objetivo sin ser detectado.

En otras palabras, el ataque no requiere que los atacantes modifiquen el código de las aplicaciones legítimas (lo que hace que las firmas sean inválidas); en su lugar cambio, la vulnerabilidad permite a los autores de malware simplemente agregar algunas líneas maliciosas adicionales de código a la aplicación original.

Un gráfico tomado del blog de GuardSquare muestra claramente el problema:

Después de crear versiones maliciosas pero válidas de aplicaciones legítimas, los hackers pueden distribuirlas mediante diversos vectores de ataque, incluidos correos electrónicos no deseados, tiendas de aplicaciones de terceros que ofrecen aplicaciones y actualizaciones falsas, ingeniería social e incluso ataques de intermediarios. De alli la constante recomendación de sólo instalar aplicaciones directamente desde el Play Store o tiendas oficinales como las de Amazon.

Según los investigadores puede ser “relativamente fácil engañar a algunos usuarios porque la aplicación todavía puede verse exactamente como la aplicación original y tiene la firma adecuada“.

Un escenario incluso más preocupante sería un ataque de hombre en el medio (man in the middle), ya que podría permitir a los cinberdelincuentes redireccionar nuestro DNS por ejemplo para apuntar a un falso Play Store y llevar a cabo una instalación maliciosa para las aplicaciones diseñadas para recibir sus actualizaciones a través de una conexión HTTP no encriptada.

El blog de GuardSquare nos hace la siguiente advertencia:

Cuando el usuario descarga una actualización de una aplicación, en tiempo de ejecución, Android compara su firma con la firma de la versión original. Si las firmas coinciden, en tiempo de ejecución, Android procede a instalar la actualización.

La aplicación actualizada hereda los permisos de la aplicación original. Los atacantes pueden, por lo tanto, usar la vulnerabilidad Janus para engañar al proceso de actualización y obtener un código no verificado con poderosos permisos instalados en los dispositivos de usuarios desprevenidos.

Para los expertos, las herramientas comunes de ingeniería inversa no muestran el código inyectado. Los usuarios siempre deben estar atentos al descargar aplicaciones y actualizaciones

Aunque es desafortunado, pero si el fabricante de su dispositivo móvil no ofrece parches de seguridad ni la última versión de Android, entonces no debe instalar aplicaciones o actualizaciones desde fuera de Google Play Store para minimizar el riesgo de ser infectado.

Los investigadores también aconsejaron a los desarrolladores de Android que siempre apliquen el esquema de firma v2 para asegurar que sus aplicaciones no puedan ser manipuladas.