Jenkins CLI file read (CVE-2024-23897)
El CLI de Jenkins usa la librería args4j para procesar sus argumentos. Por defecto, cuando un argumento empieza por @, args4j lo interpreta como "sustituir por el contenido de este fichero". Jenkins nunca deshabilitó esa expansión, así que un atacante puede pasar @/ruta/al/fichero y hacer que Jenkins lea ese fichero del servidor y devuelva su contenido en el error o la salida del comando (CVE-2024-23897).
java -jar jenkins-cli.jar -s http://<ip>:8080 help "@/etc/passwd"
# o con PoC dedicado:
python3 51993.py -u http://<ip>:8080 -p /etc/passwdCon lectura arbitraria, el objetivo es el initialAdminPassword (/root/.jenkins/secrets/initialAdminPassword) o las claves de descifrado (master.key + hudson.util.Secret) para recuperar credenciales guardadas (secretos en el código). Una vez dentro como administrador, la Script Console de Jenkins ejecuta Groovy con los privilegios del proceso, cerrando la cadena a RCE.
A menudo el Jenkins vulnerable escucha solo en localhost; se alcanza tras comprometer el host con un reenvío de puertos local por SSH.
Matices. La lectura puede ser completa (usuarios anónimos con permiso de lectura) o parcial (unas pocas líneas por mensaje de error) según los permisos; incluso la parcial suele bastar para el initialAdminPassword, que es corto. Afecta a Jenkins 2.441/LTS 2.426.2 y anteriores.
Cómo detectarlo. El uso del CLI deja rastro en el log de Jenkins: comandos invocados con un argumento que empieza por @ (la marca de la expansión de args4j), y el uso del canal de descarga del CLI (/cli con websocket/duplex). La lectura de secrets/initialAdminPassword o de master.key/hudson.util.Secret es el objetivo revelador. Si el ataque completa la cadena, aparece después un acceso administrativo y ejecución de Groovy en la Script Console (/script), evento de altísima gravedad. Un pico de comandos CLI con @ desde una IP no habitual es la firma.
Defensa. Actualizar Jenkins; deshabilitar el acceso CLI si no se usa; y no exponer el panel ni siquiera en la red interna sin autenticación robusta, porque la Script Console convierte cualquier admin en RCE.
Máquinas donde se aplica
- VmdakProving Grounds Practice