
vet v1.19.0
Proteja-se contra pacotes de código aberto maliciosos 🤖
Encontre pacotes maliciosos, vulnerabilidades e workflows de CI arriscados antes que cheguem à produção.
Instalação • Documentação • Comandos • PolÃtica • Discord
[!NOTE] Este branch é o vet v2, em alpha. O vet v1 está em
maine continua sendo a versão mais recente. As notas de versão do v2.0.0 mapeiam cada comando e flag do v1 para o v2.
Por que usar o vet
Suas dependências, seus workflows do GitHub Actions e suas configurações de agentes de IA executam código que você não escreveu. O vet encontra o risco neles.
- Pacotes maliciosos. O vet verifica cada pacote contra o SafeDep Threat Intel. O Threat Intel analisa novas versões de pacotes quando os registries as publicam.
- Vulnerabilidades conhecidas, com a versão corrigida para a qual atualizar.
- Workflows arriscados. Triggers perigosos, injeção de template, segredos expostos e actions sem commit SHA fixado.
- Adulteração de lockfile e versões recentes. Entradas de um registry não confiável e versões dentro da janela de cooldown.
- PolÃtica como código. Regras em CEL decidem quando um scan falha. Você pode testar uma regra em um scan salvo.
- Inventário de IA e criptografia. O vet lista as bibliotecas de IA e os algoritmos de criptografia que seu código chama, e escreve um CycloneDX xBOM e CBOM.
O vet não precisa de conta e não envia código-fonte.
InÃcio rápido
brew install --cask safedep/tap/vet@edge
vet scan
vet scan --fail-on high # exit 1 on a high or critical finding
vet scan --base-ref origin/main --fail-on high # report only what a pull request changes
vet report show --report sarif=vet.sarif # write SARIF from the saved scan, with no new scan
Instalação
| Canal | Comando |
|---|---|
| Homebrew | brew install --cask safedep/tap/vet@edge |
| mise | mise use -g 'github:safedep/vet[prerelease=true]@2' |
| Go | go install github.com/safedep/vet/v2/cmd/vet@latest |
| Container | docker run --rm -v "$PWD:/src" -w /src ghcr.io/safedep/vet:v2-latest scan |
O mise instala uma versão um dia após sua publicação. O install.md tem o comando para a build mais recente, os binários de release e as atestações de build.
O que o vet escaneia
| Alvo | Exemplo |
|---|---|
| Um diretório (o padrão) | vet scan, vet scan ./service |
| Um repositório git | vet scan https://github.com/safedep/vet |
| Uma imagem de container | vet scan oci://alpine:3.20, vet scan image.tar |
| Um SBOM (CycloneDX ou SPDX) | vet scan sbom.cdx.json |
| Um pacote | vet scan pkg:npm/[email protected] |
| As ferramentas nesta máquina | vet endpoint audit |
O vet lê os lockfiles e manifests de npm, PyPI, Go, Maven, Gradle, Cargo, RubyGems, NuGet, Packagist, Pub e mais. Ele também lê os workflows do GitHub Actions e as configurações de agentes de IA do alvo. Ele não instala nem executa nenhum deles. Os controles transformam esses dados em achados. Veja controls.md.
PolÃtica
Uma polÃtica decide quando um scan falha. Salve este arquivo como vet-policy.yml:
version: 2
rules:
- id: no-malware
description: A malicious or suspicious package fails the build.
when: finding.family == "malware"
action: fail
- id: no-workflow-injection
when: finding.control_id in ["dangerous-trigger", "template-injection"]
action: fail
- id: no-critical-vulnerability
when: finding.control_id == "vulnerability" && finding.severity == "critical"
action: fail
- id: new-dependency-age
description: A pull request cannot add a version that is less than 14 days old.
when: package.change == "ADDED" && has(package.days_since_publish) && package.days_since_publish < 14
action: fail
suppressions:
- purl: pkg:npm/[email protected]
reason: The upgrade to 4.18.1 is in pull request 42.
expires: 2026-12-31
Teste-a no último scan, sem um novo scan. Depois aplique-a a um pull request:
vet report show last --policy vet-policy.yml
vet scan --base-ref origin/main --policy vet-policy.yml
Após sua data de expiração, a supressão deixa de ocultar o achado. Leia policy.md para os campos de regra, mais regras e a Agent Skill que escreve uma polÃtica para você.
Casos de uso
- Verificação de pull request. A vet GitHub Action comenta em um pull
request que adiciona um pacote, um workflow ou um achado, e falha a verificação em um ataque.
vet ci inita adiciona a um repositório. - Gate de CI. Códigos de saÃda, SARIF para o code scanning do GitHub, relatórios do GitLab e Bitbucket. Veja ci.md.
- Revisão de pull request.
--base-refreporta apenas os pacotes e workflows que uma mudança adiciona. - xBOM e CBOM. Um inventário CycloneDX 1.7 das bibliotecas de IA e da criptografia que seu código usa. Veja inventory.md.
- Agentes de IA. O vet encontra o Claude Code e outros agentes, e então escreve JSON e nunca solicita entrada.
- Auditoria de endpoint.
vet endpoint auditlista as ferramentas de IA, servidores MCP, extensões de editor e pacotes npm globais em uma máquina de desenvolvedor, e os verifica em busca de malware.