Olá, pessoal!
Se você é desenvolvedor ou, pelo menos, envolvido com a área tech, tenho certeza de que já ouviu falar de ataques de supply chain, ou ataques de cadeia de suprimentos.
Esse tipo de ataque tem se tornado cada vez mais frequente, ainda mais com IAs gerando cada vez mais código sem supervisão. Com isso em mente, criei uma ferramenta que visa impedir que dependências comprometidas sejam instaladas em seu projeto, reduzindo o risco de um ataque bem-sucedido de cadeia de suprimentos.
Chega mais para conhecer! E, claro, todo feedback é super bem-vindo. 🙂
Ha e claro, se quiser saber mais sobre o que é supply chain atack, dá uma conferida aqui O que é Suply Chain Attack
A Crise de Segurança na Cadeia de Suprimentos Open Source
Os ataques de supply chain (cadeia de suprimentos) têm aumentado de forma alarmante nos últimos anos. Dados recentes revelam um cenário preocupante:
- Malware em código aberto subiu 156% de um ano para outro em 2024, com mais de 704 mil pacotes maliciosos identificados desde 2019.
- Em 2025, houve um aumento de 73% em pacotes open source maliciosos detectados em comparação com 2024.
- Entre 2020 e 2023, as ameaças em repositórios open source cresceram 1.300%.
- O custo global anual projetado de ataques de supply chain deve alcançar US$ 60 bilhões em 2025.
- No ecossistema npm, a atividade maliciosa mais do que dobrou em 2025, representando quase 90% de todo o malware open source detectado.
- Terceiros comprometidos passaram a representar 30% de todas as violações de dados em 2025.
Instalar dependências sem verificação tornou-se uma operação de risco. Mesmo pacotes populares podem conter vulnerabilidades conhecidas ou, em cenários mais graves, serem comprometidos por atacantes.
O que é o SafeInstall ✅?
O SafeInstall é um wrapper de segurança para comandos de instalação de pacotes que consulta a API do OSV (Open Source Vulnerabilities) para identificar vulnerabilidades conhecidas antes de permitir que a instalação seja concluída. Assim, ele ajuda a reduzir ataques de supply chain alertando o desenvolvedor sobre pacotes vulneráveis antes que eles entrem no projeto.
Repositório da ferramenta 🚀: Github
Benefícios Principais
- Verificação antes da instalação — Nada é instalado sem checagem de vulnerabilidades.
- Integração com OSV — Usa dados agregados do GitHub Advisory, PyPI Advisory, CVE/NVD, RustSec, Go Vulnerability Database e outros.
- Suporte a múltiplos ecossistemas — npm, pip, Go, Cargo, RubyGems, Packagist, Pub.
-
Instalações em lote — Protege comandos como
npm installepip install -r requirements.txt. - Controle nas suas mãos — Permite confirmar ou cancelar instalações com risco identificado.
A seguir temos mostro exemplos de como a ferramenta funciona e como ela pode auxiliar na proteção desse tipo de ataque.
- Bloqueando instalação de biblioteca especificando uma versão
- Bloqueando instalação de biblioteca utilizando instalação em massa, por exemplo npm i
- Permitindo instalação de bibliotecas mesmo com vulnerabilidades(ambientes de CI/CD por exemplo)
- Quando uma versão não é especificada, a ferramenta tenta identificar automaticamente a última versão e então analisa para ver se alguma vulnerabilidade é encontrada
- Exemplo golang para instalação vulnerável vs instalação de última versão
- Exemplo de biblioteca python
- Exemplo de biblioteca sem vulnerabilidades em lotes
- Exemplo de biblioteca sem vulnerabilidade
Como Instalar 💥
Pré-requisitos
- Go 1.25.7+ — Necessário para compilar o SafeInstall e para o osv-scanner.
- osv-scanner — Necessário para varreduras em lote. É instalado automaticamente pelos scripts de instalação.
Para instalar o osv-scanner manualmente (se necessário):
go install github.com/google/osv-scanner/v2/cmd/osv-scanner@v2
Garanta que $(go env GOPATH)/bin esteja no seu PATH.
Instalação por plataforma
Windows (PowerShell):
.\scripts\install.ps1
Windows (Prompt de Comando):
scripts\install.bat
Linux / macOS:
chmod +x scripts/install.sh
./scripts/install.sh
Compilação manual:
go build -o safeinstall .
Comandos e Uso
Sintaxe básica
Sintaxe nova (recomendada):
safeinstall [-y|--yes] <ecosistema> "<pacote>"
Sintaxe legada (comando completo):
safeinstall [-y|--yes] "<comando de instalação>"
Instalação de pacote único
Ao especificar um pacote com versão, o SafeInstall:
- Consulta a API do OSV em busca de vulnerabilidades conhecidas
- Aplica o algoritmo IsVulnerable para saber se sua versão exata é afetada
- Se houver vulnerabilidade: exibe CVE/GHSA em vermelho e pede confirmação
- Se estiver seguro: exibe mensagem em verde e prossegue automaticamente
Exemplos (sintaxe nova):
safeinstall npm "express"
safeinstall npm "express@4.17.1"
safeinstall pip "requests==2.25.1"
safeinstall pip "jinja2"
safeinstall go "golang.org/x/crypto@v0.1.0"
Exemplos (sintaxe legada):
safeinstall "npm i express"
safeinstall "pip install -r requirements.txt"
Instalação em lote (npm i, pip install -r, etc.)
Para comandos que não especificam um único pacote (ex.: npm install, npm ci, pip install -r requirements.txt):
- O osv-scanner roda antes da instalação, analisando manifests e lockfiles
- Se forem encontradas vulnerabilidades e você não passou
-y/--yes, o SafeInstall pede confirmação - Se você recusar, a instalação é cancelada — pacotes vulneráveis não são instalados
- Se não houver vulnerabilidades (ou você aceitar o risco), o comando de instalação é executado
- Após a instalação, o osv-scanner roda novamente para verificar as dependências instaladas
Exemplos:
safeinstall "npm install"
safeinstall "npm ci"
safeinstall "pip install -r requirements.txt"
Modo CI/CD
Use -y ou --yes para aceitar automaticamente os riscos em ambientes automatizados:
safeinstall -y "npm install express@4.17.1"
Desinstalação
Para remover o SafeInstall por completo:
safeinstall --uninstall
# ou
safeinstall -u
# ou
safeinstall uninstall
Ou use os scripts de desinstalação:
-
Windows (PowerShell):
.\scripts\uninstall.ps1 -
Windows (CMD):
scripts\uninstall.bat -
Linux/macOS:
./scripts/uninstall.sh
Ecossistemas Suportados
| Ecossistema | Gerenciador de Pacotes | Exemplo |
|---|---|---|
| npm | npm, yarn, pnpm | safeinstall npm "express@4.17.1" |
| PyPI | pip, pip3, poetry | safeinstall pip "requests==2.25.1" |
| Go | go get | safeinstall go "golang.org/x/crypto@v0.1.0" |
| crates.io | cargo | safeinstall "cargo add serde@1.0" |
| RubyGems | gem | safeinstall "gem install rails:7.0" |
| Packagist | composer | Pacotes PHP |
| Pub | pub | Pacotes Dart |
Como o SafeInstall Reduz o Risco de Supply Chain
- Bloqueio proativo — Evita instalações de pacotes conhecidamente vulneráveis ou maliciosos.
- Uso de dados confiáveis — OSV agrega bases como GitHub Advisory, PYSEC, CVE e RustSec.
- Avaliação precisa — Usa o algoritmo oficial do OSV (IncludedInVersions, IncludedInRanges, BeforeLimits).
-
Dupla verificação em lote — Analisa antes e depois da instalação em cenários como
npm installepip install -r. - Decisão consciente — O desenvolvedor escolhe se aceita o risco em casos específicos.
- Integração simples — Substitui chamadas diretas aos gerenciadores de pacotes com um comando único.
Requisitos
- Conexão com a internet para consultas à API
- Go e osv-scanner no PATH (para instalações em lote)
Fontes:
- [1] Supply Chain Attack Statistics 2025: Costs & Defenses — DeepStrike. https://deepstrike.io/blog/supply-chain-attack-statistics-2025
- [2] The State of the Software Supply Chain 2025 — JFrog. https://jfrog.com/blog/state-of-software-supply-chain-security-2025
- [3] ReversingLabs 2026 Software Supply Chain Security Report — 73% aumento em pacotes open source maliciosos. https://www.reversinglabs.com/press-releases/reversinglabs-2026-software-supply-chain-security-report-identifies-73-increase-in-malicious-open-source-packages
- [4] Sonatype's 10th Annual State of the Software Supply Chain Report — 156% de aumento em malware open source. https://www.globenewswire.com/news-release/2024/10/10/2961239/0/en/Sonatype-s-10th-Annual-State-of-the-Software-Supply-Chain-Report-Reveals-156-Surge-in-Open-Source-Malware.html








Top comments (0)