Mariana Trench, el analizador de código estático open source de Facebook
Facebook dio a conocer hace pocos dias que ha liberado el analizador estático de código abierto, Mariana Trench, el cual está destinado a identificar vulnerabilidades en aplicaciones de Android y programas Java.
En él se proporciona la capacidad de analizar proyectos sin códigos fuente, para los cuales solo está disponible el código de bytes para la máquina virtual Dalvik. Otra ventaja es la muy alta velocidad de ejecución (el análisis de varios millones de líneas de código tarda unos 10 segundos), lo que permite utilizar Mariana Trench para comprobar todos los cambios propuestos a medida que se introducen.
El analizador se desarrolló como parte de un proyecto para automatizar el proceso de revisión del código fuente de las aplicaciones móviles de Facebook, Instagram y Whatsapp.
Compartimos detalles sobre Mariana Trench (MT), una herramienta que utilizamos para detectar y prevenir errores de seguridad y privacidad en las aplicaciones de Android y Java. Como parte de nuestro esfuerzo para ayudar a escalar la seguridad a través de la automatización de edificios, recientemente abrimos MT para apoyar a los ingenieros de seguridad en Facebook y en toda la industria.
Esta publicación es la tercera de nuestra serie de inmersiones profundas en las herramientas de análisis estático y dinámico en las que confiamos. MT es el último sistema, siguiendo a Zoncolan y Pysa , construido para código Hack y Python respectivamente.
En la primera mitad de 2021, la mitad de todas las vulnerabilidades en las aplicaciones móviles de Facebook se identificaron mediante herramientas de análisis automatizadas. El código de Mariana Trench está estrechamente entrelazado con otros proyectos de Facebook, por ejemplo, el funcionamiento del optimizador de código de bytes Redex se utiliza para analizar el código de bytes y la biblioteca SPARTA se utiliza para la interpretación visual y el estudio de los resultados del análisis estático.
Las posibles vulnerabilidades y problemas de seguridad se identifican analizando los flujos de datos durante la ejecución de la aplicación, lo que permite identificar situaciones en las que los datos externos sin procesar se procesan en construcciones peligrosas, como consultas SQL, operaciones de archivos y llamadas que conducen al lanzamiento de programas externos.
MT está diseñado para poder escanear grandes bases de código móviles y señalar problemas potenciales en las solicitudes de extracción antes de que entren en producción. Se creó como resultado de una estrecha colaboración entre los ingenieros de seguridad y software de Facebook, quienes capacitan a MT para mirar el código y analizar cómo fluyen los datos a través de él. El análisis de los flujos de datos es útil porque muchos problemas de seguridad y privacidad se pueden modelar como datos que fluyen hacia un lugar donde no deberían.
El trabajo del analizador se reduce a determinar las fuentes de datos y las llamadas peligrosas, en las que no se deben utilizar los datos originales: el analizador supervisa el paso de los datos a lo largo de la cadena de llamadas a funciones y conecta los datos iniciales con lugares potencialmente peligrosos en el código.
Ya que en MT, un flujo de datos se puede describir mediante:
- Source: un punto de origen. Esta puede ser una cadena controlada por el usuario que ingresa a la aplicación a través de `Intent.getData`.
- Sink: un destino. En Android, esto puede ser una llamada a `Log.w` o` Runtime.exec`. Por ejemplo, los datos de una llamada a Intent.getData se consideran una fuente a monitorear, y las llamadas a Log.w y Runtime.exec se consideran usos peligrosos.
Una base de código grande puede contener muchos tipos diferentes de fuentes y receptores correspondientes. Podemos decirle a MT que nos muestre flujos específicos definiendo reglas.
Una regla podría especificar, por ejemplo, que queremos encontrar redirecciones de intenciones (problemas que permiten a los atacantes interceptar datos confidenciales) mediante la definición de una regla que nos muestre todos los rastros desde fuentes «controladas por el usuario» hasta un sumidero de «redirecciones de intenciones».
Finalmente si estás interesado en conocer más al respecto, puedes consultar los detalles en el siguiente enlace.