# CVE-2025-54313 - eslint-config-prettier Supply-Chain Compromise (npm)
> [!high] CVSS 8.5 - CISA KEV - Ataque Supply-Chain via npm
> Versões comprometidas do pacote eslint-config-prettier contêm código malicioso que executa uma DLL via rundll32 durante a instalação, roubando tokens npm e comprometendo pipelines de CI/CD em Windows.
## Visão Geral
O **CVE-2025-54313** representa um ataque de **comprometimento de supply-chain** no ecossistema npm, específicamente no pacote **`eslint-config-prettier`** - uma configuração de regras ESLint amplamente utilizada em projetos JavaScript e TypeScript ao redor do mundo. Versões específicas do pacote foram comprometidas com **código malicioso** inserido no script de instalação (`install.js`), executado automaticamente durante `npm install` em sistemas Windows. Este tipo de ataque é particularmente insidioso porque aproveita a confiança que desenvolvedores depositam em ferramentas de desenvolvimento estabelecidas.
O vetor de ataque explora um padrão universal no desenvolvimento moderno: todo projeto JavaScript/TypeScript que usa ESLint com Prettier - uma combinação extremamente comum - é um alvo potencial. O código malicioso utiliza `rundll32.exe` para carregar uma DLL (`node-gyp.dll`) incluída no pacote, roubando tokens npm do ambiente de desenvolvimento ou CI/CD. Esses tokens permitem ao atacante públicar pacotes maliciosos em nome das vítimas, criando um efeito cascata de comprometimento na cadeia de suprimentos de software.
A CISA adicionou esta CVE ao catálogo KEV em janeiro de 2026, juntamente com [[cve-2025-34026|CVE-2025-34026]] e [[cve-2025-68645|CVE-2025-68645]], reconhecendo seu uso em comprometimentos confirmados. O incidente é comparável em natureza ao ataque ao `ua-parser-js` em 2021 e ao `event-source-polyfill` em 2023, mas com impacto amplificado pela prevalência do `eslint-config-prettier` no ecossistema.
## Versões Comprometidas
| Pacote | Versão Comprometida | Status |
|--------|-------------------|--------|
| eslint-config-prettier | 8.10.1 | Comprometida - não usar |
| eslint-config-prettier | 9.1.1 | Comprometida - não usar |
| eslint-config-prettier | 10.1.6 | Comprometida - não usar |
| eslint-config-prettier | 10.1.7 | Comprometida - não usar |
| eslint-config-prettier | 8.10.0 e anteriores | Segura |
| eslint-config-prettier | 9.1.0 e anteriores | Segura |
| eslint-config-prettier | 10.1.5 e anteriores | Segura |
## Descrição Técnica
A exploração ocorre **automaticamente durante a instalação do pacote** em sistemas Windows. O script `install.js` incluído nas versões comprometidas:
1. Verifica o sistema operacional (executa apenas no Windows - sai silenciosamente em Linux/macOS)
2. Usa `rundll32.exe` para carregar a `node-gyp.dll` maliciosa incluída no pacote
3. A DLL executa código que rouba **tokens npm** armazenados no sistema (`~/.npmrc`)
4. Os tokens comprometidos permitem públicar pacotes em nome do desenvolvedor/organização
**Cadeia de impacto em ambientes CI/CD:**
```
npm install → install.js acionado → rundll32 carrega DLL →
tokens npm roubados → publicação de pacotes maliciosos →
comprometimento downstream
```
**Escopo limitado por plataforma:** A exploração é específica para Windows. Sistemas Linux e macOS não são afetados pelo payload, mas pipelines CI que rodam em agentes Windows self-hosted (common em Azure DevOps, GitHub Actions self-hosted) são vulneráveis.
**TTPs associadas:**
- [[t1195-002-supply-chain-compromise|T1195.002 - Compromise Software Supply Chain]]
- [[t1552-unsecured-credentials|T1552 - Unsecured Credentials]]
- [[t1059-command-scripting-interpreter|T1059 - Command and Scripting Interpreter]]
## Contexto LATAM
> [!latam] Impacto no Brasil e América Latina
> O eslint-config-prettier é um dos pacotes npm mais populares no Brasil, presente em virtualmente todo projeto TypeScript e Node.js moderno. Equipes de engenharia de software em fintechs, startups de tecnologia e grandes empresas do setor financeiro e de telecomúnicações que utilizaram as versões comprometidas em ambientes Windows devem assumir que seus tokens npm foram comprometidos. O ecossistema brasileiro de desenvolvimento de software, que produz inúmeros pacotes open-source ativos no npm, é especialmente vulnerável ao efeito cascata: um token comprometido pode permitir a públicação de versões maliciosas de pacotes usados por milhares de outros projetos. Times de DevSecOps devem auditar pipelines de CI/CD com agentes Windows e rotacionar tokens npm imediatamente.
## Mitigação
**Ação imediata:**
- **Não usar as versões comprometidas:** 8.10.1, 9.1.1, 10.1.6, 10.1.7
- Reverter para versão anterior verificada (ex: `
[email protected]`) ou atualizar para versão posterior segura
- Verificar o `package-lock.json` para confirmar que versões comprometidas não foram instaladas
**Se houver suspeita de comprometimento:**
1. **Revogar imediatamente** todos os tokens npm: `npm token revoke <token>`
2. Gerar novos tokens com permissões mínimas necessárias
3. Revisar todos os pacotes públicados nas 24-48h após a instalação comprometida
4. Verificar variáveis de ambiente e secrets no pipeline de CI/CD no período
5. Inspecionar o sistema Windows onde `npm install` foi executado com as versões afetadas
**Detecção:**
- Verificar presença de `node-gyp.dll` inesperada em `node_modules/eslint-config-prettier/`
- Monitorar execuções de `rundll32.exe` disparadas por processos npm/Node.js
- Auditar logs de públicação npm para públicações não autorizadas
## Notas Relacionadas
**CVEs adicionados ao CISA KEV simultaneamente:** [[cve-2025-34026|CVE-2025-34026]] · [[cve-2025-68645|CVE-2025-68645]]
**TTPs:** [[t1195-002-supply-chain-compromise|T1195.002]] · [[t1552-unsecured-credentials|T1552]] · [[t1059-command-scripting-interpreter|T1059]]
**Contexto:** Ataque supply-chain npm similar ao `ua-parser-js` (2021) e `event-source-polyfill` (2023)
**Setores em risco:** [[technology]] · [[financial]] · Qualquer organização com pipelines CI/CD Windows usando npm
## Referências
- [CISA KEV Catalog - CVE-2025-54313](https://www.cisa.gov/known-exploited-vulnerabilities-catalog)
- [npm Advisory - eslint-config-prettier](https://www.npmjs.com/advisories)
- [NVD - CVE-2025-54313](https://nvd.nist.gov/vuln/detail/CVE-2025-54313)
- [Socket.dev Supply Chain Security Blog](https://socket.dev/blog)