在恶意包、漏洞和有风险的 CI 工作流进入生产环境之前发现它们。
[!NOTE] 此分支是 vet v2,处于 alpha 阶段。vet v1 位于
main, 仍是最新发布版本。v2.0.0 发布说明将每个 v1 命令和标志映射到 v2。
你的依赖项、GitHub Actions 工作流和 AI 代理配置运行着你并未编写的代码。vet 能发现其中的风险。
vet 无需账户,也不发送源代码。
brew install --cask safedep/tap/vet@edge
vet scan
vet scan --fail-on high # 发现高危或严重问题时以 1 退出
vet scan --base-ref origin/main --fail-on high # 仅报告拉取请求所更改的内容
vet report show --report sarif=vet.sarif # 从已保存的扫描生成 SARIF,无需重新扫描
| 渠道 | 命令 |
|---|---|
| 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 |
| 容器 | docker run --rm -v "$PWD:/src" -w /src ghcr.io/safedep/vet:v2-latest scan |
mise 会在发布一天后安装该版本。install.md 提供了 最新构建、发布二进制文件和构建证明的命令。
| 目标 | 示例 |
|---|---|
| 目录(默认) | vet scan、vet scan ./service |
| git 仓库 | vet scan https://github.com/safedep/vet |
| 容器镜像 | vet scan oci://alpine:3.20、vet scan image.tar |
| SBOM(CycloneDX 或 SPDX) | vet scan sbom.cdx.json |
| 单个包 | vet scan pkg:npm/[email protected] |
| 本机上的工具 | vet endpoint audit |
vet 会读取 npm、PyPI、Go、Maven、Gradle、Cargo、RubyGems、NuGet、 Packagist、Pub 等的锁文件和清单文件。它还会读取目标的 GitHub Actions 工作流和 AI 代理配置。 它不会安装或运行其中任何内容。控制项将这些数据转化为发现项。参见 controls.md。
策略决定扫描何时失败。将此文件保存为 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
在最后一次扫描上测试它,无需重新扫描。然后将其应用于拉取请求:
vet report show last --policy vet-policy.yml
vet scan --base-ref origin/main --policy vet-policy.yml
超过过期日期后,该抑制项不再隐藏发现项。阅读 policy.md 了解规则字段、更多规则以及 可为你编写策略的 Agent Skill。
vet ci init 会将其添加到仓库。--base-ref 仅报告变更所添加的包和工作流。vet endpoint audit 会列出开发人员机器上的 AI 工具、MCP 服务器、编辑器扩展和
全局 npm 包,并检查它们是否含有恶意软件。| 页面 | 阅读目的 |
|---|---|
| 安装 | 所有渠道以及如何验证发布版本 |
| 命令 | 每个命令、其标志和退出码 |
| 控制项 | 控制项及其选项 |
| 策略 | 规则、抑制项和门禁 |
| 输出 | 报告格式、已保存的扫描和配置 |
| CI 和 AI 代理 | GitHub Actions、GitLab、Bitbucket 和代理模式 |
| 清单 | 代码使用情况、AI 和加密、xBOM 和 CBOM |
vet 会将每个包的身份信息(其生态系统、名称和版本)发送给 SafeDep,以获取 有关它的数据。vet 不发送源代码,也不发送文件内容。
vet 也可在云端运行。SafeDep Cloud 会在你的仓库上运行 vet, 无需管理任何基础设施。