OPEN SOURCE · RUST · SUPPLY CHAIN SECURITY

Confira o pacote.
Antes de instalar.

Antes de instalar um pacote, o safe-npm analisa o código, consulta informações do npm Registry e verifica as dependências. Tudo isso sem executar o pacote.

● ● ● safe-npm
$ safe-npm tree suspicious-package
Root: suspicious-package@1.4.2
Packages: 47   Files: 1,284   Risk: HIGH

• suspicious-package@1.4.2  score=10/100 (MEDIUM)
• tiny-helper@0.2.1        score=65/100 (HIGH)
  ! [CRITICAL] credential-access - package/index.js
  ! [HIGH] process-execution - package/index.js

Installation blocked before package execution.
0pacotes executados durante o scan
100%scanner escrito em Rust
∞dependências transitivas*
* com limites configuráveis de segurança

Baixe o safe-npm pronto para usar.

Os links abaixo sempre apontam para a release estável mais recente publicada no GitHub.

Linux x86_64

Binário compilado para Linux 64-bit.

Baixar Linux
Windows x86_64

Executável para Windows 64-bit em arquivo ZIP.

Baixar Windows
macOS Universal

Binário universal para Intel e Apple Silicon.

Baixar macOS

Também é possível consultar notas, histórico e assets diretamente na última release no GitHub.

Analise antes de rodar npm install.

01

Resolve

Consulta o npm Registry para identificar a versão correta do pacote e suas dependências.

02

Baixa

Baixa os pacotes que precisam ser analisados sem executar scripts de instalação.

03

Analisa

Verifica package.json, arquivos JavaScript e TypeScript em busca de comportamentos suspeitos.

04

Decide

Mostra o nível de risco encontrado e pode impedir a instalação quando o risco for alto.

Contexto local primeiro. IA quando você quiser.

Menos falsos positivos

O score não cresce mais só porque a mesma regra apareceu centenas de vezes no pacote.

Evidência contextual

O scanner guarda um pequeno trecho ao redor do comportamento encontrado para ajudar na revisão.

Validação com OpenAI

Com --ai, findings MEDIUM, HIGH e CRITICAL podem ser revisados considerando o contexto do código.

Opt-in

Sem --ai, nenhum trecho de código é enviado para a OpenAI. A análise local continua sendo o padrão.

$ export OPENAI_API_KEY="sua-chave"
$ safe-npm --ai tree express
$ safe-npm --ai --ai-model gpt-5.6-luna scan lodash

lodash analisado com contexto por IA.

lodash 4.18.1

1.049 arquivos analisados no AI package test.

Score 30/100

Risco final MEDIUM, com 5 findings preservados.

encoded-payload

IA: uncertain, confiança 0,96. O trecho com String.fromCharCode não foi suficiente para confirmar um payload malicioso.

network-access

IA: uncertain, confiança 0,99. A evidência era um link para o threat model, não uma requisição de rede.

Outros 3 findings de obfuscation-density ficaram como not_analyzed por não terem evidência contextual. O safe-npm os manteve no relatório em vez de pedir para a IA inferir sem contexto.

O que o safe-npm verifica.

Lifecycle scripts

preinstall, install, postinstall e prepare.

Execução de processos

child_process, exec, spawn, shells e comandos.

Credenciais

.npmrc, .ssh, tokens npm/GitHub e secrets AWS.

Código dinâmico

eval, new Function e padrões de execução dinâmica.

Rede

APIs e indicadores de conexões externas.

Ofuscação

Base64, escapes hex/unicode e densidade anormal de código.

Typosquatting

Nomes muito próximos de pacotes npm populares.

Registry intelligence

Depreciação, mantenedores ausentes e histórico muito curto.

Correlação comportamental

Cruza sinais como acesso a credenciais, chamadas de rede e execução de comandos.

Policy + SARIF

Permite definir regras por projeto e gerar relatórios SARIF para uso no CI.

Confira uma dependência
antes de colocar no projeto.

$ cargo install --git https://github.com/mdnbras/safe-npm
$ safe-npm tree express
$ safe-npm install express

O scanner ajuda, mas não substitui uma revisão de segurança.

O safe-npm combina análise estática, heurísticas contextuais e, opcionalmente, validação por IA. Um alerta indica algo que vale a pena revisar, mas não significa automaticamente que o pacote contém malware. Da mesma forma, um resultado sem alertas não garante que o pacote seja seguro. Use a ferramenta junto com npm audit, provenance, assinaturas e revisão de código.