Los investigadores advierten que los atacantes ya han comenzado a buscar servidores Jenkins que sean vulnerables a una falla crítica de ejecución remota de código corregida la semana pasada. Los exploits de prueba de concepto (PoC) para la vulnerabilidad ya están disponibles, por lo que la ventana de tiempo para aplicar parches antes de que se produzcan ataques generalizados se está acortando rápidamente.
Según los análisis realizados con el servicio Shodan, más de 75.000 servidores Jenkins están expuestos a Internet. Jenkins es un servidor de automatización de código abierto que se usa comúnmente como parte de procesos de integración y entrega continua (CI/CD) porque permite la automatización de la creación, prueba e implementación de código. Jenkins tiene muchas integraciones con otros servicios y herramientas, lo que lo convierte en una opción popular para todas las organizaciones de desarrollo de software con una participación de mercado estimada de alrededor del 44%.
La vulnerabilidad, rastreada como CVE-2024-23897, está clasificado como de gravedad crítica y se describe como un problema de lectura de archivos arbitrario que los atacantes pueden aprovechar para leer archivos binarios completos o parciales del sistema de archivos. Esto puede permitirles extraer claves secretas que pueden utilizar para escalar sus privilegios a administrador y ejecutar código malicioso. El problema se solucionó en las versiones 2.442 y LTS 2.426.3 de Jenkins junto con varias otras fallas de gravedad alta y media.
El análisis de argumentos de la línea de comandos expone el contenido del archivo
La falla surge del uso que hace Jenkins de la biblioteca args4j para analizar argumentos y opciones de comandos al procesar comandos enviados a través de la función de interfaz de línea de comandos (CLI) de Jenkins. El analizador reemplaza el carácter @ seguido de una ruta de archivo en un argumento de comando con el contenido del archivo, por lo que potencialmente expone secretos.
Según los investigadores de SonarSource, que encontraron e informaron sobre la vulnerabilidad, los atacantes no autenticados pueden aprovecharla si obtienen autorización de lectura en el servidor. Esto se puede lograr en múltiples configuraciones: si el servidor tiene habilitada la autorización del modo heredado, si el servidor está configurado con «Permitir acceso de lectura anónimo» marcado en el modo de autorización «los usuarios registrados pueden hacer cualquier cosa», o si la función de registro está activada. habilitado que permite a cualquiera crear una cuenta en el servidor. Incluso si ninguna de estas condiciones se cumple, los usuarios no autenticados aún pueden leer las primeras líneas de los archivos en lugar de todo su contenido.
«Una forma en que un atacante podría aprovechar esto es encontrar un comando que tome una cantidad arbitraria de argumentos y se los muestre al usuario», dijeron los investigadores en una publicación de blog. “Dado que los argumentos se completan a partir del contenido del archivo, un atacante podría filtrar el contenido del archivo de esta manera. Descubrimos que el comando connect-to-node es un buen candidato: recibe una lista de cadenas como argumento e intenta conectarse a cada una. Si falla, se genera un mensaje de error con el nombre del nodo conectado fallido”.