Llegamos a ustedes gracias a:



Alertas de Seguridad

Las fallas del firewall Juniper parcheados recientemente

Permiten la ejecución remota de código

[30/08/2023] Los piratas informáticos han empezado a explotar vulnerabilidades parcheadas recientemente en firewalls de Juniper Networks que pueden encadenarse para lograr la ejecución remota de código. Los detalles del exploit y una prueba de concepto fueron publicados a finales de la semana pasada por un equipo de investigadores de seguridad.

Se trata de una interesante cadena de fallas, que utiliza dos fallas que serían casi inútiles por separado y los combina para lograr una RCE no autenticada que "acaba con el mundo"", señalan los investigadores de la empresa de seguridad watchTowr en su análisis detallado. "Se insta a quienes utilicen un dispositivo afectado a actualizar a una versión parcheada lo antes posible, y/o a deshabilitar el acceso a la interfaz J-Web si es posible".

Cuatro fallas de Juniper, pero sólo dos necesarios

El 18 de agosto, Juniper parcheó cuatro vulnerabilidades en sus firewalls de las series SRX y EX. Las fallas se encuentran en el componente J-Web de Junos OS, el sistema operativo de los dispositivos firewalls de Juniper, y todos tienen una calificación de 5,3 sobre 10 en la escala CVSS. Esto se traduce en una criticidad media, que suele tratarse con menor prioridad en los ciclos de aplicación de parches. Sin embargo, en este caso concreto, algunas de las vulnerabilidades pueden encadenarse para lograr la ejecución remota de código sin autenticación, lo que Juniper advierte claramente en su aviso.

Dos fallas, CVE-2023-36846 y CVE-2023-36847, son similares y permiten a un atacante no autenticado enviar peticiones especialmente diseñadas a un dispositivo que le permitirían subir archivos arbitrarios a través de J-Web al sistema de archivos. Las otras dos fallas, CVE-2023-36844 y CVE-2023-36845, también son similares entre sí, y ambas permiten a un atacante no autenticado modificar determinadas variables de entorno de PHP.

Tras el aviso de Juniper, los investigadores de watchTowr estaban intrigados por la posibilidad de encadenar estas fallas, así que se pusieron a investigarlos. Resulta que sólo se necesitan dos para lograr el ataque, una subida de archivos y una modificación de variables de entorno.

En primer lugar, encontraron la vulnerabilidad CVE-2023-36846 buscando en las funciones internas de la interfaz J-Web, que es una aplicación PHP. Localizaron una llamada do_upload que se encarga de la carga de archivos, e inmediatamente se dieron cuenta de que carecía de una comprobación de autenticación. Por lo tanto, la explotación era sencilla, pero el archivo de subida se colocaba en una carpeta tmp y parecía que el propio servidor web se ejecutaba como un proceso enjaulado.

Localizar la segunda falla necesaria para modificar las variables de entorno de PHP tampoco fue difícil. Pasar de ahí a la ejecución arbitraria de código fue difícil debido a las defensas de seguridad del sistema operativo Junos.

En primer lugar, los investigadores intentaron abusar de la variablem LD_PRELOAD, que indicará al proceso PHP que cargue una biblioteca. Apuntaron esta variable a la ubicación del archivo que cargaron utilizando la primera falla, pero el intento de ejecución falló con un mensaje de error de autenticación.

Los investigadores intentaron depurar el error durante mucho tiempo para entender qué estaba pasando e incluso intentaron cargar bibliotecas que ya existían en el sistema sin éxito.

"Pues bien, resulta que Juniper está utilizando (sabiamente) una herramienta llamada veriexec, que limitará la ejecución a los binarios que tengan una firma válida -y también verificará su ubicación en el sistema de archivos", dijeron los investigadores. "Esto significa que los intentos de cargar y ejecutar una carga útil fallarán, ya que nuestras cargas útiles se encontrarán en una ubicación no incluida en la lista blanca (y también porque no están firmadas criptográficamente). Genial para la seguridad, pero malo para nosotros".

Entonces los investigadores se preguntaron qué binarios firmados digitalmente podrían existir en el sistema y si podrían influir en su ejecución a través de una variable de entorno. ¿La respuesta? El propio binario PHP. PHP es un framework y un runtime, y cuando se inicia tiene un archivo de configuración, normalmente llamado php.ini, cuya ubicación se define en una variable de entorno llamada PHPRC.

Por lo tanto, los investigadores podrían cargar un archivo de configuración php.ini especialmente diseñado utilizando la vulnerabilidad de carga de archivos y, a continuación, utilizar la segunda vulnerabilidad para modificar la variable PHPRC y dirigir el proceso PHP hacia ella. ¿Cómo se ejecuta código arbitrario desde dentro de un archivo de configuración? Resulta que php.ini tiene una entrada llamada auto_prepend_file que permite al usuario apuntar a un archivo que el proceso ejecutará antes que cualquier otro código PHP.

Ahora la cadena estaba completa. Cargar un archivo con shellcode malicioso, luego cargar un php.ini especialmente diseñado con un auto_prepend_file apuntando a él, luego modificar la variable PHPRC para ejecutar el php.ini e implícitamente el shellcode malicioso. Además de su detallado escrito, los investigadores también publicaron una prueba de concepto en GitHub que automatiza todo el ataque.

"Aunque la calidad del código está muy alineada con otros dispositivos de su clase, como los dispositivos Fortiguard y Sonicwall que hemos estado rompiendo, vale la pena señalar aquí que el uso de veriexec por parte de Juniper fue un acierto, ya que complica la ejecución de código y comandos", dijeron los investigadores. "Sin embargo, no es suficiente para evitar que los atacantes decididos -los investigadores de watchTowr tardaron alrededor de media hora en burlarlo (y, lo admito, mucho más tiempo para darse cuenta de que estaba en efecto)".

Ataques utilizando las vulnerabilidades de Juniper en curso

El mismo día que watchTowr publicó su exploit PoC, la Shadowserver Foundation, una organización que escanea Internet en busca de malware y supervisa los ataques mediante honeypots, informó de la existencia de intentos de exploit para Juniper J-Web CVE-2023-36844 y las demás fallas. La organización señaló que actualmente rastrea más de 8.200 direcciones IP con interfaces J-Web expuestas a Internet.

Los investigadores de watchTowr señalaron que la aplicación de parches podría no ser sencilla, especialmente para los dispositivos Juniper virtualizados que se ejecutan en la nube. "Llevamos a cabo esta investigación utilizando un dispositivo SRX alojado en EC2, y nos quedamos consternados al descubrir que es aparentemente imposible para nosotros parchear realmente el dispositivo a la última", dijeron. "Las actualizaciones sólo están disponibles para los usuarios registrados, y parece que la integración de EC2 que realiza el registro es defectuosa".

Los investigadores aconsejan a los usuarios que no puedan parchear inmediatamente que desactiven el componente J-Web o que restrinjan el acceso al mismo a usuarios de mucha confianza. Su informe también incluye indicadores de compromiso que los administradores pueden buscar en los archivos de registro PHP de sus dispositivos.

Casos de éxito

Más »