Fiz um gerenciador de pacotes que se RECUSA a instalar pacote com CVE conhecido
O npm audit te avisa da vulnerabilidade depois que ela já está no seu
node_modules — junto com qualquer postinstall que o pacote trouxe. Pra
ataque de supply-chain, "depois" não serve.
Então construí o Vault: gerenciador de pacotes compatível com npm, estilo
pnpm, escrito em Rust, que faz a checagem de segurança fazer parte do install.
Antes de escrever qualquer coisa no node_modules ele:
- bloqueia CVE crítico/high (OSV + static scan) — dá pra
--force, mas você
assume; - não roda lifecycle script (postinstall) por padrão e instala num sandbox
(Landlock); - avisa de pacote publicado agora há pouco ou queda no nº de maintainers
(sinal de conta comprometida).
Caso real: com "vite": "^5.4.11", npm/pnpm instalam a 5.4.21 calados —
que está no range do GHSA-fx2h-pf6j-xcff (CVSS 8.2). O vault barrou:
✗ BLOCKED vite@5.4.21: critical/high CVE(s): GHSA-fx2h-pf6j-xcff
E o melhor: com cache quente fica a ~0,2s do pnpm mesmo auditando tudo. A
segurança sai praticamente de graça.
Tá no começo (v0.1.3) e quero feedback sincero, principalmente onde o
bloqueio-por-padrão atrapalha.
npm i -g vaultpm (binários: vault / vt)