CVE-2017-1000353 – Ejecución Remota de Código (RCE) no autenticada – Jenkins

Jenkins es un servidor de automatización de código abierto ampliamente utilizado para canalizaciones de integración y despliegue continuo (CI/CD), que admite la compilación, las pruebas y el despliegue de software en diversas plataformas. Divulgada en abril de 2017, CVE-2017-1000353 es una vulnerabilidad crítica de deserialización que permitía a los atacantes ejecutar código arbitrario de forma remota sin autenticación. La vulnerabilidad afecta a las main line releases de Jenkins hasta la versión 2.56 incluida y a las LTS releases de Jenkins hasta la 2.46.1 incluida.

ProductoJenkins
Fecha2025-10-07 12:41:25

Resumen técnico

La vulnerabilidad deriva de una deserialización de Java insegura en la funcionalidad de remoting de la CLI (Command Line Interface) de Jenkins. En particular, el error reside en la función readFrom dentro de Command.java, donde Jenkins deserializa datos controlados por el usuario, provenientes de una instancia de ObjectInputStream.

El problema principal es que los atacantes pueden transferir un objeto Java serializado SignedObject a la CLI de Jenkins basada en remoting, el cual será deserializado mediante un nuevo ObjectInputStream, eludiendo el mecanismo de protección basado en listas de bloqueo (blocklist).

Dado que la lista de bloqueo existente en Jenkins no incluía SignedObject, su deserialización desencadenaba la deserialización del contenido encapsulado;

El escenario de ataque se vería de la siguiente manera: Los atacantes envían dos solicitudes HTTP:

  • La primera solicitud establece una sesión CLI de Jenkins válida con dos canales (carga/descarga);
  • La segunda solicitud carga un SignedObject que contiene un objeto Java serializado malicioso; La función readFrom deserializa el SignedObject; El contenido encapsulado del SignedObject se deserializa entonces, eludiendo la lista de bloqueo; Las cadenas de gadgets maliciosos se activan durante la deserialización y ejecutan código arbitrario con los privilegios del servidor Jenkins.

Recomendaciones

  1. Aplicar el parche inmediatamente: Actualizar todas las instancias de Jenkins a la versión 2.57 (weekly) o 2.46.2 LTS.
  2. Deshabilitar la CLI basada en remoting: Después de la actualización, los usuarios deben deshabilitar la CLI basada en remoting y cambiar a otros modos (HTTP o SSH).
  3. Investigación y monitoreo: Implementar reglas WAF para detectar firmas de ataques de deserialización de Java y revisar los registros de acceso de Jenkins en busca de patrones sospechosos en la creación de sesiones CLI.

[Callforaction-THREAT-Footer]