CLI工具帮AI代理避开漏洞依赖
速览
该CLI工具专为AI代理设计,能够自动检测并避开有安全漏洞的依赖项。在AI开发中,第三方库的脆弱性常被忽视,此工具可提升系统安全性。它通过扫描依赖树,阻止AI代理使用已知有风险的包,减少攻击面。
AI 深度解读
背景
随着 AI 编程助手(Codex、Claude Code 等)越来越多地自动生成代码并安装依赖,一个突出的问题开始浮现:这些 AI 代理往往会使用过时的、含有已知漏洞的包版本,甚至在推荐更新时也不进行安全检查。开发者需要一种能在 AI 代理执行依赖安装操作之前,自动规避已知漏洞的工具。deptrust 正是为此而生——它是一款运行在本地的 CLI 工具,同时也以 MCP(Model Context Protocol)服务器形式工作,在包安装前主动拦截不安全的版本。
核心内容
deptrust 是一个命令行工具,能够跨多个包生态系统检查特定包版本是否存在已知漏洞。它直接调用公开的包注册表和 OSV(Open Source Vulnerabilities)API,无需信任或配置任何第三方服务。其核心流程如下:
- 支持的生态系统:npm(包括作用域包如
@clidey/ux)、PyPI、Cargo / crates.io、Go modules、RubyGems、NuGet、Maven(使用groupId:artifactId格式)、Packagist / Composer(vendor/package)、pub.dev、CocoaPods、Hex.pm、Hackage 以及 GitHub Actions(使用owner/repo格式,支持标签、分支引用或完整 commit SHA 作为版本)。 - 漏洞报告机制:当查询一个精确版本时,deptrust 会报告已知漏洞数量,并给出
allow(允许)或block(阻止)建议。allow仅表示在公开数据源中未发现已知漏洞,不证明包绝对安全。它还输出风险信号(如版本在最近 72 小时内发布,会标记为“待审核”),避免代理盲目安装全新发布版。 - 并行查询多个漏洞提供方:包括 OSV 和 GitHub Advisory Database(含审核过的公告和恶意软件公告)。如果某个生态系统没有已配置的漏洞提供方支持,deptrust 会返回
unknown而非视为安全。 - 输出格式:支持 JSON 输出,包含
checked_providers、skipped_providers、advisory_coverage(full/partial/none/error)以及详细的漏洞列表(包括 GHSA ID、CVE ID、严重级别、受影响范围、修复版本等)。 - 常用命令:
deptrust check <ecosystem> <package> <version>— 检查精确版本。deptrust check --json <ecosystem> <package> latest— 检查最新版本并以 JSON 输出。deptrust suggest <ecosystem> <package>— 推荐一个无已知漏洞的最新安全版本;如果最新版不安全,它会回溯检查旧版本并返回允许使用的最新版本;如果漏洞提供方提供了修复版本,则优先使用这些修复版本。deptrust compare <ecosystem> <package> <version1> <version2>— 比较两个版本的风险评分(如从 80 降至 0)。deptrust version— 显示当前安装的 deptrust 版本。
- 安装方式:
- 使用
npx @clidey/deptrust install或pnpx @clidey/deptrust@latest install交互式安装,默认启用 MCP、技能回退以及 Codex 和 Claude Code 的依赖安全钩子。 - 非交互式:加
--yes跳过提示;加--all注册所有集成(二进制 + Codex MCP、Codex 技能回退、Claude Code MCP、依赖安全钩子)。 - Homebrew:
brew install clidey/tap/deptrust。 - Go:
go install github.com/clidey/deptrust/cmd/deptrust@latest。
- 使用
- MCP 集成:配置为 stdio MCP 服务器后,AI 代理在推荐更新前会自动调用 deptrust 检查版本。如果使用 deptrust 但未集成 MCP,应手动提示代理在列出、比较或推荐版本前先运行 deptrust。
- 依赖安全钩子:
PreToolUse钩子会在包安装命令执行前进行拦截,同样会检查通过文件编辑工具添加到工作流文件中的 GitHub Actions。钩子仅在用户级配置中写入(~/.codex/hooks.json和~/.claude/settings.json),当 deptrust 返回review、block或unknown时阻止工具调用。
关键要点
- deptrust 解决了一个具体痛点:AI 代理频繁使用含有漏洞的旧版依赖。
- 它覆盖了几乎所有主流包生态系统(npm、PyPI、Cargo、Go、RubyGems、NuGet、Maven、Packagist、pub.dev、CocoaPods、Hex.pm、Hackage、GitHub Actions)。
- 运行完全本地化,不依赖第三方托管服务,直接调用公开 API,保障隐私与安全。
- 输出 JSON 结构化数据,便于 CI/CD 或其他工具集成。
- 提供
allow/block简单建议,并包含风险评分(0-100)。 - 针对新发布版本(72 小时内)发出额外风险信号,阻止盲目安装。
- 支持
suggest命令自动查找安全的替代版本(优先使用提供方报告的修复版本)。 - 与 Codex、Claude Code 深度集成,通过 MCP 协议和 PreToolUse 钩子在安装前自动拦截不安全操作。
- 安装方式灵活:npx、Homebrew、Go install,并支持交互式与非交互式安装。
- 漏洞覆盖度通过
advisory_coverage字段透明报告,当无支持提供方时返回unknown而非安全状态。
意义与影响
deptrust 的出现,标志着一个重要趋势:AI 代理生成代码时,从“功能性正确”向“安全性默认”演进。传统依赖安全扫描通常存在于 CI 流程中,但 AI 代理因其即时性,更容易绕过这些检查。deptrust 通过在 AI 代理的工具执行链中嵌入安全检查,填补了这一空白。
对于开发者社区而言,deptrust 提供了一种简单、零配置的方式来加固 AI 辅助开发的安全基线。它不要求开发者记忆复杂的漏洞库,而是直接集成到代理的行为中。同时,它开源透明,任何人都可以审计其工作方式。
长远来看,随着 AI 编码代理的普及,类似 deptrust 这样的“代理安全层”将成为基础设施的一部分——让 AI 在安装任何依赖前先“问”一下安全数据库,从而减少因版本依赖带来的供应链攻击风险。这可能会推动更多代理工具原生集成此类安全检查,或者成为 MCP 生态中的一个标准组件。
