Se acaba el tiempo para solucionar un fallo descubierto en Jenkins, la solución de despliegue continuo para desarrolladores. De hecho, la vulnerabilidad apenas fue encontrada cuando se publicaron varios exploits en GitHub, abriendo la puerta a una multiplicación de ataques. Según el análisis realizado por el servicio Shodan, más de 75.000 servidores Jenkins están expuestos a Internet. Este servicio se utiliza habitualmente para la integración continua y la entrega continua (CI/CD), ya que permite automatizar la creación, prueba y despliegue de código.

Dadas sus múltiples integraciones con otros servicios y herramientas, Jenkins es muy popular entre todas las empresas de desarrollo. Su cuota de mercado se estima en torno al 44%. La vulnerabilidad, calificada como crítica, es CVE-2024-23897, y resulta de un problema de lectura arbitraria de archivos que los atacantes pueden explotar para leer binarios completos o parciales del sistema de archivos. A continuación, pueden extraer claves secretas y utilizarlas para escalar sus privilegios al nivel de administrador y ejecutar código malicioso. Este problema se ha solucionado en las versiones 2.442 y LTS 2.426.3 de Jenkins, junto con varias otras vulnerabilidades de gravedad alta y media.

Índice
  1. Las líneas de comando exponen secretos
  2. Mitigar la vulnerabilidad del servidor de CI/CD de Jenkins

Las líneas de comando exponen secretos

La vulnerabilidad se origina en el uso que hace Jenkins de la biblioteca args4j para analizar argumentos de línea de comandos (análisis de argumentos de línea de comandos) y opciones al procesar comandos enviados a través de la 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, lo que potencialmente expone secretos. Según los investigadores de SonarSourceQuienes descubrieron y reportaron la vulnerabilidad, los atacantes no autenticados pueden explotarla si obtienen permiso de lectura en el servidor. Esto es posible en varias configuraciones: si el servidor tiene permiso de lectura, legado habilitado, si está configurado con “Permitir acceso de lectura anónimo” Comprobado en modo de autorización “los usuarios registrados pueden hacer cualquier cosa”, o si la función inscribirse Está habilitado y permite a cualquiera crear una cuenta en el servidor.

Incluso si no se cumple ninguna de estas condiciones, los usuarios no autenticados pueden leer las primeras líneas de los archivos en lugar de su contenido completo. "Un atacante podría aprovechar esta situación encontrando un comando que tome un número arbitrario de argumentos y los muestre al usuario", explican los investigadores en una publicación de blog. "Dado que los argumentos se toman del contenido del archivo, un atacante podría filtrar el contenido del archivo de esta manera. Según nuestra investigación, el comando Conectarse al nodo es un buen candidato: recibe una lista de cadenas como argumento e intenta conectarse a cada una de ellas. Si esto falla, se genera un mensaje de error con el nombre del nodo que no pudo conectarse. Algunos de los archivos del servidor que podrían ser de interés para un atacante incluyen claves SSH, el /etc/contraseñaEl archivo /etc/sombrasecretos y credenciales del proyecto, código fuente y artefactos de compilación, etc. El equipo de seguridad de Jenkins documenta varias rutas de ataque para lograr la ejecución remota de código y otros robos de secretos con esta vulnerabilidad. Estos incluyen el uso indebido de la "URL raíz del recurso", de manipulación de cookies "Acuérdate de mí", insertar ataques de secuencias de comandos entre sitios (XSS) en registros de compilación, falsificar tokens de protección contra falsificación de solicitudes entre sitios (CSRF), descifrar secretos binarios y descargar un volcado de memoria de Java.

Mitigar la vulnerabilidad del servidor de CI/CD de Jenkins

La solución es deshabilitar el analizador de comandos que expone el contenido de los archivos. Esto puede causar problemas en algunas implementaciones, en cuyo caso hay un mecanismo disponible para anularlo. Sin embargo, su uso se desaconseja enfáticamente en instancias de Jenkins a las que los usuarios que no son administradores pueden acceder a través de la red.

Otra forma de mitigar la amenaza es deshabilitar por completo el acceso a la interfaz de línea de comandos de Jenkins hasta que se puedan aplicar los parches. Los investigadores de seguridad advirtieron el viernes pasado que ya se han publicado varias pruebas de concepto para explotar la vulnerabilidad en GitHub, y otros ya han informado sobre explotaciones de la falla en la red.