Secuestro del agente de Jenkins en NodeJS para la ejecución del código remoto

Los investigadores de seguridad han descubierto recientemente una vulnerabilidad crítica en la infraestructura integrada continua de Node.js, permitiendo a los atacantes ejecutar código malicioso en los agentes internos de Jenkins, lo que podría conducir a ataques catastróficos de la cadena de suministro.

¿Múltiples plataformas DevOps funcionan juntas para ejecutar una tubería de un solo repositorio de GitHub? En Node.js, la respuesta fue sobre “no siempre”.

La compañía de seguridad Praetorian reveló el 30 de abril de 2025 que descubrió una grave brecha de seguridad en la arquitectura de tuberías CI/CD de Node.js. La vulnerabilidad permitió a un atacante evitar las verificaciones de seguridad en los agentes internos de Jenkins que construyen y prueban el entorno de tiempo de ejecución JavaScript más popular del mundo y ejecutan código arbitrario.

“El problema central proviene de una vulnerabilidad en el uso del tiempo (TCTOU) entre el inicio de una construcción de CI y el momento en que un trabajo de Jenkins verifica el código”, explicó el comité de dirección técnica Node.js en su divulgación.

La vulnerabilidad afectó la aplicación a millones de usuarios posteriores que confían en Node.js.

Este ataque explotó un defecto fundamental en la forma en que el flujo de trabajo de acción GitHub de Node.JS se comunica con la tubería Jenkins. Un atacante puede enviar una solicitud de extracción legal, esperar a que el mantenedor apruebe y agregue la etiqueta de solicitud de CI, y luego presione el nuevo código malicioso con la marca de tiempo de confirmación de git forjado antes del evento de etiqueta.

Secuestrando al agente de Jenkins en NodeJs

Esta falsificación de sello de tiempo permitió al atacante evitar la función de comprobación del nodo.

Cuando se ejecuta, este código puede instalar persistencia en la infraestructura de prueba de nodo.js Jenkins, potencialmente violar las credenciales de Jenkins y facilitar el movimiento lateral a través de la red interna.

Más preocupante, una investigación interna de Node.js reveló que existen vulnerabilidades similares en el proceso de “compromiso”. Esto permite que un atacante inyecte código malicioso directamente en la rama principal, lo que potencialmente permite ataques de la cadena de suministro que afectan a todos los usuarios de Node.js.

El equipo de seguridad Node.js respondió rápidamente al informe del 21 de marzo de Praetorian. Rápidamente restringieron el acceso al CI de Jenkins y Ran, identificaron y reconstruyó 24 máquinas comprometidas.

Para el 1 de abril, habían implementado mejoras de seguridad significativas y reemplazaron la validación de la fecha con cheques SHA aprobados para solucionar ambas vulnerabilidades.

“La auditoría integral se llevó a cabo en 140 Jenkins Jobs, priorizando los usados ​​con frecuencia, detectando y arreglando vulnerabilidades”, informó el equipo Node.js. El equipo también deshabilitó temporalmente flujos de trabajo de GitHub vulnerables hasta que pudieron aplicar parches con medidas de seguridad mejoradas.

Este incidente destaca la creciente complejidad de las tuberías modernas de CI/CD, especialmente cuando abarcan múltiples plataformas. Las organizaciones dependen en gran medida de las tuberías automatizadas para la entrega de software, por lo que los perímetros de seguridad entre estos sistemas se convierten en vectores de ataque importantes.

“Gestionar y asegurar relaciones entre varias plataformas DevOps es un desafío, especialmente cuando es responsabilidad del usuario final”, dijo Praetorian en su informe. Su investigación de tres días confirmó que incluso los sistemas bien administrados tienen brechas de seguridad que cruzan plataformas.

Este incidente subraya la importancia de las rigurosas pruebas de seguridad centradas en los límites entre las organizaciones que utilizan tuberías de CI/CD multiplataforma.

Como lo demuestra Node.js, la implementación de un mecanismo de verificación robusto es fundamental para responder a los informes de seguridad rápidamente y mantener la confianza en la cadena de suministro de software.

El equipo Node.js elogia el manejo transparente de los incidentes y los esfuerzos integrales de remediación, y demuestra su compromiso con la seguridad, establecido por ejemplo para proyectos de código abierto en todo el mundo.

¿Eres de los equipos SOC y DFIR? – Analice los incidentes de malware y comience cualquiera.run-> gratis.