Los piratas informáticos han comenzado a explotar vulnerabilidades parcheadas recientemente en los firewalls de Juniper Networks que se pueden encadenar para ejecutar código de forma remota (Ejecución remota de código (RCE). Los detalles del exploit y un PoC asociado fueron publicados a fines de la semana pasada por un equipo de investigadores de seguridad. “Esto Una interesante cadena de errores explota dos errores casi inútiles de forma aislada, pero que cuando se combinan permiten la ejecución remota de código no autenticado de muy alto impacto”. declarado investigadores de la empresa de seguridad WatchTowr en su análisis detallado. "Se recomienda a quienes utilicen un dispositivo afectado que actualicen a una versión parcheada lo antes posible y/o deshabiliten el acceso a la interfaz J-Web si es posible", recomendaron los investigadores.
El 18 de agosto, Juniper Se corrigieron cuatro vulnerabilidades identificadas. en sus cortafuegos de las series SRX y EX. Los fallos se encuentran en el componente J-Web de Junos OS, el sistema operativo para los firewalls de Juniper, y todos tienen una puntuación de 5,3 sobre 10 en la escala del Common Vulnerability Scoring System (CVSS). Esto corresponde a una criticidad media, es decir, estos defectos generalmente se tratan con menor prioridad en los ciclos de corrección. Sin embargo, en este caso particular, algunas de las vulnerabilidades se pueden encadenar para permitir la ejecución remota de código sin autenticación, algo sobre lo que Juniper advierte claramente en su aviso.
CVE-2023-36846 y CVE-2023-36847 en el visor
Dos vulnerabilidades, a las que se hace referencia CVE-2023-36846 y CVE-2023-36847, son similares y brindan a un atacante no autenticado la capacidad de enviar solicitudes especialmente diseñadas a un dispositivo para cargar archivos arbitrarios a través de J-Web al sistema. archivos. Otras dos vulnerabilidades, a las que se hace referencia CVE-2023-36844 y CVE-2023-36845, también similares, permiten a un atacante no autenticado modificar ciertas variables de entorno PHP. Siguiendo el consejo de Juniper, los investigadores de WatchTowr quedaron intrigados por la posibilidad de encadenar estos defectos y por eso comenzaron a estudiarlos. Resulta que sólo se requieren dos fallos para realizar el ataque, una carga de archivo y una modificación de la variable de entorno. Primero, encontraron la vulnerabilidad CVE-2023-36846 examinando las funciones internas de la interfaz J-Web, que es una aplicación PHP. Vieron uno llamado do_upload que maneja la carga de archivos e inmediatamente notaron que no tenía una verificación de autenticación. Entonces, la explotación fue simple, pero el archivo descargado se colocó en una carpeta tmp y parecía que el servidor web se estaba ejecutando como un "proceso encarcelado", un proceso atrapado en un entorno virtual.
Los investigadores tampoco tuvieron muchos problemas para localizar el segundo defecto necesario para modificar las variables de entorno PHP. Por otro lado, la transición a la ejecución de código arbitrario fue difícil gracias a las defensas de seguridad de Junos OS. Primero, los investigadores intentaron abusar de la variable LD_PRELOAD que indica al proceso PHP que cargue una biblioteca. Señalaron esta variable a la ubicación del archivo que descargaron usando 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 comprender qué estaba sucediendo e incluso intentaron cargar bibliotecas que ya existían en el sistema, sin éxito. "Resulta que Juniper (sabiamente) utiliza una herramienta llamada veriexec, que limita la ejecución a archivos binarios con una firma válida y también verifica su ubicación en el sistema de archivos", explicaron los investigadores. “Esto significa que los intentos de descargar y ejecutar una carga útil fallarán porque las cargas útiles se encuentran en una ubicación que no está en la lista blanca (y también porque no están firmadas criptográficamente). "Es fantástico para la seguridad, pero malo para nosotros".
Un PoC de exploit publicado en Github
Luego, 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 es que es el propio binario PHP. PHP es un marco y un tiempo de ejecución, y cuando se inicia tiene un archivo de configuración, generalmente llamado php.ini, cuya ubicación se establece en una variable de entorno llamada PHPRC. Por lo tanto, los investigadores pudieron descargar un archivo de configuración php.ini especialmente diseñado usando la vulnerabilidad de carga de archivos, luego usar la segunda vulnerabilidad para modificar la variable PHPRC y apuntar el proceso PHP a ella. Luego se preguntaron cómo ejecutar código arbitrario desde un archivo de configuración.
Resulta que php.ini tiene una entrada llamada auto_prepend_file que permite al usuario señalar un archivo que el proceso ejecutará antes que cualquier otro código PHP. La cadena ya estaba completa. Cargue un archivo que contenga un código shell malicioso, luego descargue un php.ini especialmente diseñado con una entrada auto_prepend_file apuntando a él, luego modifique la variable PHPRC para ejecutar el php.ini e implícitamente el código shell malicioso. Además de su artículo detallado, los investigadores también publicaron una prueba de concepto en GitHub que automatiza todo el ataque. “Aunque la calidad del código es muy similar a la de otros dispositivos de su clase, como los dispositivos Fortiguard y Sonicwall que rompimos, vale la pena enfatizar aquí que el uso de veriexec por parte de Juniper fue inteligente porque dificulta la ejecución de código y comandos. ”, dijeron los investigadores de WatchTowr. Pero eso no será suficiente para disuadir a los piratas informáticos decididos. En total, a los investigadores les llevó aproximadamente media hora eludir el límite de ejecución (y, lo admito, mucho más tiempo para darse cuenta de que estaba vigente).
Ataques en curso
El mismo día que watchTowr lanzó su exploit PoC, la Fundación Shadowserver, una compañía que escanea Internet en busca de malware y monitorea ataques usando honeypot, reportado intenta explotar la vulnerabilidad Juniper J-Web CVE-2023-36844 y otras fallas. La organización dijo que actualmente estaba rastreando 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 sistemas virtualizados Juniper que se ejecutan en la nube.
"Realizamos esta investigación utilizando un dispositivo SRX alojado en Amazon Elastic Compute Cloud EC2 y quedamos consternados al descubrir que parecía imposible actualizar el dispositivo", dijeron. "Las actualizaciones solo están disponibles para usuarios registrados y parece que la integración de EC2 que realiza el registro no funciona". Los investigadores aconsejan a los usuarios que no pueden aplicar parches inmediatamente que desactiven el componente J-Web o limiten el acceso a usuarios de confianza. Su informe también incluye indicadores de compromiso que los administradores pueden buscar en los archivos de registro PHP de sus terminales.
Otras noticias que te pueden interesar