AI 编码 Agent 装个库都带漏洞?用 deptrust 给依赖上一道安检门
当你愉快地用 Claude Code 或 Cursor 写代码时,Agent 说”装个 lodash 4.17.20″,你点头确认——然后第二天的安全扫描报告上就多了两个高危漏洞。这不是 Agent 不努力,而是它根本不知道哪个版本是安全的。
AI 编程 Agent 的优势在于快速迭代,但这恰恰也是它的阿喀琉斯之踵:它倾向于安装”最新能用的版本”,而不是”最安全的版本”。一个依赖还好,当 Agent 一口气装了十几个包时,你面临的可能是成堆的 CVE。deptrust 就是为解决这个问题而生的——它像一道安检门,在 Agent 装包之前先过一遍筛子。
一个真实痛点
我用 Cursor 写过一个 Express 后端项目,Agent 在半小时内装了 20 多个 npm 包。事后用 npm audit 一查,3 个高危、5 个中危。逐个手动排查版本、升级、测试,又花了一个小时——Agent 省下的时间全花在擦屁股上了。
deptrust 的逻辑很简单:在 Agent 推荐或安装某个包之前,先跑一遍安全检查。它通过 MCP 协议与 Claude Code、Codex、Cursor 集成,Agent 调用依赖时自动触发扫描,返回类似”lodash@4.17.20 有 2 个已知漏洞,建议用 4.17.21″的建议。
安装与集成
deptrust 是用 Go 写的,但安装不需要装 Go。最快捷的方式是 npx:
npx @clidey/deptrust install --all
这条命令会做三件事:安装 deptrust 二进制、注册 Codex MCP 集成(如果你装了 Codex CLI)、注册 Claude Code MCP 集成。一行命令搞定。
Homebrew 用户也可以走 tap 安装:
brew tap clidey/tap brew install deptrust
Go 用户还能直接 go install:
go install github.com/clidey/deptrust/cmd/deptrust@latest
集成到 Claude Code
如果用的是 Claude Code,手动配置 MCP 也很简单:
claude mcp add --transport stdio deptrust -- /path/to/deptrust mcp
然后在 claude.json 里写入:
{
"mcpServers": {
"deptrust": {
"command": "/path/to/deptrust",
"args": ["mcp"]
}
}
}
配置好后,每次 Claude Code 准备安装或升级依赖时,deptrust 的 MCP 服务会自动拦截检查。
三个核心命令
deptrust 的 CLI 设计很克制,只有三个核心子命令,配合 14 个生态系统的包管理。
check:检查指定版本的漏洞
deptrust check npm lodash 4.17.20
输出非常直观:
npm lodash@4.17.20: 2 known vulnerabilities found recommendation: block risk_score: 80
风险评分 0-100,80 分意味着”别用”。支持 --json 参数获取完整 JSON 输出,包含 CVE ID、严重等级、修复版本等详细信息:
deptrust check --json pypi requests 2.25.0
支持的生态系统覆盖面相当广:
| 生态 | 示例命令 |
|---|---|
| npm | deptrust check npm lodash 4.17.20 |
| PyPI | deptrust check pypi requests latest |
| Cargo | deptrust check cargo serde latest |
| Go | deptrust check go golang.org/x/crypto latest |
| RubyGems | deptrust check rubygems rails latest |
| NuGet | deptrust check nuget Newtonsoft.Json latest |
| Maven | deptrust check maven org.apache.logging.log4j:log4j-core latest |
| GitHub Actions | deptrust check github-actions actions/checkout v7.0.0 |
suggest:推荐最安全的版本
deptrust suggest npm lodash
如果最新版本有漏洞,suggest 会自动回退查找,直到找到漏洞最少的可接受版本。这个过程对你完全透明,Agent 只需要拿到推荐结果。
compare:对比两个版本的风险差异
deptrust compare npm lodash 4.17.20 4.17.21
输出:
lodash 4.17.20 -> 4.17.21 improves risk: score 80 to 0. recommendation: allow next_action: upgrade_to_target
这在重构或升级依赖时特别有用——你可以让 Agent 明确知道某个版本升级是否真的提升了安全性。
MCP 模式下的工作流程
deptrust 的 MCP 服务提供了三个工具:check_package、suggest_safe_version、compare_versions。
当一个 AI Agent 准备安装依赖时,流程大致是这样:
- Agent 调用
check_package,传入生态名和包名 - deptrust 并行查询 OSV 和 GitHub Advisory Database
- 返回精简的 MCP 结果(只含关键字段,避免拉取完整的 advisory body 撑爆上下文)
- 如果版本不安全,Agent 调用
suggest_safe_version获取替代版本 - 确定安全版本后,Agent 才执行安装
MCP 模式下返回的 JSON 还包含一个 full_response_command 字段,告诉 Agent 如果需要看完整详情,可以直接运行 deptrust check --json ... 获取。
风险信号不仅仅是 CVE
deptrust 不只是查 CVE 数据库。它还发出一些非 CVE 的风险信号。比如,一个包版本发布时间在 72 小时以内,deptrust 会标记为 review——让 Agent 不会盲目安装刚发布几小时的全新版本,避免供应链投毒风险。
另一个贴心设计是 advisory coverage 字段。当 deptrust 无法从某个提供商获取数据时,它不会静默返回”安全”,而是明确告诉你 partial 或 error,避免你基于不完整信息做出错误判断。
写在最后
AI 编程 Agent 的编码速度越来越快,但速度的另一面是安全风险在指数级放大。deptrust 做的事情很简单——在”装”这个动作之前加一道安检,但它解决的是一大类 Agent 安全问题:依赖供应链的自动化防护。
如果你的团队在用 Claude Code、Codex 或 Cursor,装一个 deptrust 的成本几乎为零,但它能帮你避免第二天上班收到安全告警的尴尬。
相关链接