关于 SafeDep Vet MCP
vet 是一款命令行工具,用于在依赖、GitHub Actions 工作流和 AI Agent 配置进入生产环境前发现恶意包、已知漏洞和高风险设置。面向开发者与 CI 流程,无需账户,也不上传源代码。
主要功能
- 01检测恶意包与已知漏洞并给出修复版本
- 02扫描 GitHub Actions 工作流的高风险配置
- 03基于 CEL 的策略即代码控制扫描失败条件
- 04生成 CycloneDX xBOM 与 CBOM 清单
- 05审计本机的 AI 工具、MCP 服务与编辑器扩展
适用场景
- 01在拉取请求中检查新增依赖与工作流变更
- 02在 CI 中以退出码或 SARIF 报告阻断构建
- 03审计开发者机器上的 MCP 服务与 AI 工具
MCP 相关
vet endpoint audit 会列出开发者机器上的 MCP 服务并检查其中是否含有恶意软件,本身不作为 MCP 服务运行。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm ghcr.io/safedep/vet:v1.20.0本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/safedep/vet:v1.20.0stdio工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
在恶意软件包、漏洞和高风险 CI 工作流进入生产环境之前,发现它们。
说明
此分支是处于 alpha 阶段的 vet v2。vet v1 位于
main分支,并仍是最新发布版本。v2.0.0 发布说明列出了 v1 中每个命令和标志 在 v2 中的对应项。
为什么选择 vet
你的依赖项、GitHub Actions 工作流和 AI Agent 配置会运行你未编写的代码。vet 可以发现其中的风险。
- 恶意软件包。 vet 会根据 SafeDep Threat Intel 检查每个软件包。软件包注册表发布新版本时,Threat Intel 会对其进行分析。
- 已知漏洞,并提供可升级到的修复版本。
- 高风险工作流。 危险的触发器、模板注入、暴露的机密,以及未固定提交 SHA 的 Actions。
- 锁文件篡改和新版本。 来自不可信注册表的条目,以及处于冷却期内的版本。
- 策略即代码。 使用 CEL 编写的规则决定扫描是否失败。你可以在已保存的扫描结果上测试规则。
- AI 和加密清单。 vet 会列出代码调用的 AI 库和加密算法,并生成 CycloneDX xBOM 和 CBOM。
vet 无需账户,也不会发送源代码。
快速开始
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
安装
| 渠道 | 命令 |
|---|---|
| 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 扫描内容
| 目标 | 示例 |
|---|---|
| 目录(默认) | 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 Agent 配置,但不会安装或运行其中任何内容。控制项会将这些数据转化为发现项。请参阅 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 GitHub Action 会在拉取请求添加软件包、工作流或发现时发表评论,并在检测到攻击时使检查失败。
vet ci init会将其添加到代码库中。 - CI 门禁。 退出代码、用于 GitHub 代码扫描的 SARIF,以及 GitLab 和 Bitbucket 报告。请参阅 ci.md。
- 拉取请求审查。
--base-ref仅报告更改新增的软件包和工作流。 - xBOM 和 CBOM。 使用代码中 AI 库和加密技术的 CycloneDX 1.7 清单。请参阅 inventory.md。
- AI Agent。 vet 会查找 Claude Code 和其他 Agent,然后写入 JSON,且绝不会提示。
- 端点审计。
vet endpoint audit会列出开发者设备上的 AI 工具、MCP 服务、编辑器扩展和全局 npm 软件包,并检查它们是否含有恶意软件。
文档
| 页面 | 内容 |
|---|---|
| 安装 | 所有安装渠道以及如何验证发行版 |
| 命令 | 每条命令、其标志和退出代码 |
| 控制项 | 控制项及其选项 |
| 策略 | 规则、抑制规则和门禁 |
| 输出 | 报告格式、已保存的扫描和配置 |
| CI 和 AI Agent | GitHub Actions、GitLab、Bitbucket 和 Agent 模式 |
| 清单 | 代码用法、AI 和加密技术、xBOM 和 CBOM |
隐私
vet 会将每个软件包的标识信息(生态系统、名称和版本)发送给 SafeDep,以获取相关数据。vet 不会发送源代码或任何文件内容。
社区
- 在 Discord 或 GitHub 讨论区提问并分享想法。
- 在问题跟踪器中报告错误。
- 打开拉取请求前,请阅读贡献指南。
vet 也可在云端运行。SafeDep Cloud 可在你的代码库上运行 vet,无需管理基础设施。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。