Vulnerabilidad CVE-2024-23897
Vulnerabilidad CVE-2024-23897
CVE-2024-23897 es una vulnerabilidad de lectura arbitraria de archivos de alta gravedad que afecta al popular servidor de automatización Jenkins. Se origina en un problema de la función de interfaz de línea de comandos (CLI), que permite a un atacante leer cualquier archivo en el sistema de archivos del controlador de Jenkins. Esta falla permite a atacantes no autenticados leer las primeras líneas de los archivos, mientras que los atacantes con permisos de "Overall/Read" pueden acceder a archivos completos. Esto puede derivar en ejecución remota de código (RCE) al exponer información confidencial como claves criptográficas.
¿Cuándo se descubrió?
La vulnerabilidad CVE-2024-23897 fue divulgada públicamente por Jenkins como parte de un aviso de seguridad el 24 de enero de 2024. El aviso detallaba esta vulnerabilidad junto con varias otras que afectaban al núcleo de Jenkins y a varios plugins. Los investigadores de seguridad comenzaron rápidamente a analizar la falla, y los exploits de prueba de concepto surgieron poco después del anuncio público.
Productos y versiones afectados
La vulnerabilidad afecta a múltiples versiones del servidor de automatización Jenkins. Las organizaciones que usan estas versiones deben priorizar su actualización de inmediato.
Producto | Versiones afectadas | Versiones corregidas / enlaces de parches |
Jenkins | <= 2.441 | Jenkins 2.442 |
Jenkins LTS | <= 2.426.2 | Jenkins LTS 2.426.3 |
Descripción técnica de CVE-2024-23897
Esta vulnerabilidad es un caso clásico de path traversal, pero con un giro particular. El problema radica en la biblioteca args4j que usa Jenkins para analizar los argumentos de la línea de comandos. El analizador de comandos de la CLI tiene una función que expande automáticamente un carácter @ seguido de una ruta de archivo, reemplazándolo con el contenido del archivo. Esto está pensado para simplificar el paso de argumentos largos.
¿El problema? El analizador sintáctico no validaba correctamente las rutas de archivo antes de leerlas. Un atacante podía crear un comando de CLI que usara esta función @ para apuntar a cualquier archivo en el sistema de archivos del servidor. Por ejemplo, un comando enviado a la CLI de Jenkins podía incluir @/etc/passwd, lo que hacía que el servidor leyera el contenido de ese archivo. Para atacantes no autenticados, la exposición es limitada, pero los atacantes con permisos de lectura básicos pueden escalar sus privilegios de forma significativa, logrando potencialmente una ejecución remota de código completa al robar secretos almacenados en el servidor.
Tácticas, técnicas y procedimientos (TTPs)
Los atacantes que explotan CVE-2024-23897 generalmente comienzan con reconocimiento para identificar instancias vulnerables de Jenkins. Luego usan la capacidad de lectura de archivos para exfiltrar archivos confidenciales, como claves SSH, credenciales u otros secretos almacenados en el sistema de archivos. Con estos secretos, pueden moverse lateralmente por la red, escalar privilegios y, finalmente, implementar otro malware como webshells o ransomware. Es un camino rápido desde una simple lectura de archivos hasta un compromiso total del sistema.
Indicadores de compromiso
Mantente atento a solicitudes inusuales al endpoint de la CLI de Jenkins, en especial aquellas que contienen el carácter @ seguido de una ruta de archivo en los argumentos. Las entradas sospechosas en los registros de acceso de Jenkins o en los registros del servidor web que muestran solicitudes a endpoints como /cli pueden ser una señal reveladora. Monitorear conexiones salientes inesperadas desde el servidor Jenkins también puede ayudar a detectar intentos de exfiltración de datos. Una solución sólida de identidad, detección, amenazas y respuesta (ITDR) puede ayudarte a detectar estos comportamientos inusuales antes de que escalen.
Pruebas de concepto y exploits conocidos
A pocas horas de divulgarse la vulnerabilidad, se publicaron múltiples exploits de prueba de concepto (PoC) para CVE-2024-23897 en plataformas como GitHub. Estas PoC demostraron lo fácil que es leer archivos arbitrarios de un servidor Jenkins vulnerable. Tanto los investigadores de seguridad como los actores de amenazas han integrado desde entonces estos exploits en sus kits de herramientas. Se ha observado explotación activa en el entorno real, con atacantes escaneando y comprometiendo instancias de Jenkins sin parchar.
¿Cómo detectar la vulnerabilidad CVE-2024-23897?
Detectar esta vulnerabilidad requiere una combinación de escaneo proactivo y análisis de registros. Puedes usar escáneres de vulnerabilidades para verificar si tu versión de Jenkins está afectada. Para la detección basada en endpoints, monitorea los registros de la aplicación Jenkins y los registros de acceso del servidor web en busca de solicitudes al endpoint de la CLI. Una regla de SIEM podría marcar cualquier comando de la CLI que contenga el @carácter en sus argumentos, ya que este es el núcleo del exploit. Correlacionar estos registros con la ejecución inusual de procesos o conexiones de red desde el controlador de Jenkins ofrece otra capa de detección. Una herramienta sólida de Detección y respuesta para endpoints (EDR) es esencial para detectar actividad posterior a la explotación.
Impacto y riesgo de la vulnerabilidad CVE-2024-23897
No subestimes esta vulnerabilidad. El impacto de CVE-2024-23897 es grave. Una explotación exitosa puede llevar al compromiso total de tu controlador de Jenkins. Esto significa que un atacante puede robar código fuente, credenciales, claves de API y otros secretos usados en tus pipelines de CI/CD. A partir de ahí, puede ejecutar código arbitrario en el servidor, moverse hacia otros sistemas de tu red e implementar ransomware. El riesgo para la confidencialidad, integridad y disponibilidad de los datos es enorme, y podría paralizar tus operaciones de desarrollo e implementación.
Estrategias de mitigación y remediación
¡Aplica parches, aplica parches, aplica parches! La forma más efectiva de remediar CVE-2024-23897 es actualizar tu instancia de Jenkins a una versión con parche (Jenkins 2.442 o LTS 2.426.3). Si no puedes aplicar el parche de inmediato, Jenkins ofreció una solución temporal: deshabilitar el acceso a la CLI. Esto detiene de inmediato el vector de ataque. Puedes lograrlo aplicando una propiedad del sistema al iniciar. A largo plazo, deberías restringir el acceso de red a tu controlador de Jenkins y asegurarte de que no esté expuesto a internet público. El security awareness training (SAT) regular para tu equipo de desarrollo sobre prácticas de codificación segura también puede ayudar a prevenir problemas similares en el futuro.
Preguntas frecuentes sobre la vulnerabilidad CVE-2024-23897