
Protégete contra paquetes de código abierto maliciosos 🤖
Encuentra paquetes maliciosos, vulnerabilidades y flujos de trabajo de CI riesgosos antes de que lleguen a producción.
Instalar • Documentación • Comandos • Políticas • Discord
[!NOTE] Esta rama es vet v2, en alfa. vet v1 está en
mainy sigue siendo la última versión publicada. Las notas de la versión v2.0.0 mapean cada comando y flag de v1 a v2.
Tus dependencias, tus flujos de trabajo de GitHub Actions y tus configuraciones de agentes de IA ejecutan código que no escribiste. vet encuentra el riesgo en ellos.
vet no necesita cuenta y no envía código fuente.
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
| 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 |
| Contenedor | docker run --rm -v "$PWD:/src" -w /src ghcr.io/safedep/vet:v2-latest scan |
mise instala una versión un día después de su publicación. install.md tiene el comando para la compilación más reciente, los binarios de la versión y las atestaciones de compilación.
| Objetivo | Ejemplo |
|---|---|
| Un directorio (el predeterminado) | vet scan, vet scan ./service |
| Un repositorio git | vet scan https://github.com/safedep/vet |
| Una imagen de contenedor | vet scan oci://alpine:3.20, vet scan image.tar |
| Un SBOM (CycloneDX o SPDX) | vet scan sbom.cdx.json |
| Un paquete | vet scan pkg:npm/[email protected] |
| Las herramientas en esta máquina | vet endpoint audit |
vet lee los lockfiles y manifiestos de npm, PyPI, Go, Maven, Gradle, Cargo, RubyGems, NuGet, Packagist, Pub y más. También lee los flujos de trabajo de GitHub Actions y las configuraciones de agentes de IA del objetivo. No instala ni ejecuta ninguno de ellos. Los controles convierten estos datos en hallazgos. Consulta controls.md.
Una política decide cuándo falla un escaneo. Guarda este archivo 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
Pruébala en el último escaneo, sin un nuevo escaneo. Luego aplícala a una pull request:
vet report show last --policy vet-policy.yml
vet scan --base-ref origin/main --policy vet-policy.yml
Después de su fecha de expiración, la supresión ya no oculta el hallazgo. Lee policy.md para los campos de las reglas, más reglas y la Agent Skill que escribe una política por ti.
vet ci init la agrega a un repositorio.--base-ref informa solo los paquetes y flujos de trabajo que un cambio agrega.vet endpoint audit lista las herramientas de IA, servidores MCP, extensiones de editor y
paquetes npm globales en una máquina de desarrollador, y los verifica en busca de malware.