AI 智能体安全直觉编程

Vibes and More

近期,eslint-config-prettier,一个每周下载量超过 3000 万次的 npm 包遭到了攻击。我们在此前的一篇博客 eslint-prettier-config: Major Supply Chain Attack on npm 中对此进行了报道。但事实是,npm 与其他公共开源包注册中心一样,是通过恶意开源包进行供应链攻击的源头。AI IDE 和编码代理可能会加速软件供应链中恶意包的风险。

我们构建了 SafeDep vet 来保护软件开发团队免受 CI/CD 中恶意包的侵害。但对于 OpenAI Codex、Claude Code 等 AI 编码代理以及 Cursor、Windsurf 等 AI IDE 来说,这还远远不够。让我们通过一个例子来说明。

像专业人士一样 Vibing

想象你正在全身心投入地打造世界上最优秀的命令行工具,拥有出色的开发者体验。你从一个只有少数几个依赖项的 Typescript 项目模板开始,比如 tsc

bash
pnpm ls --depth 100 --parseable | wc -l 8

你很喜欢 Claude Code,于是你输入了这样的提示词:

txt
Set the foundation for building a multi-command cli tool with the best developer experience for cli with interactive, progress bars and other eye candies

Claude Code 与你一起 vibe,并制定了一个计划。

Claude Code Initial Prompt

该计划首先需要安装一堆第三方 npm 库。你正处于 vibe 模式,于是按照 Claude Code 的建议安装了 8 个库。

Claude Code Plan

完成这一步后,你突然意识到第三方依赖项——也就是来自开源的代码——已经激增至惊人的 165 个。你不确定这些库的作用,但你相信 Claude Code 推荐的这些库是你命令行工具的最佳选择。

bash
pnpm ls --depth 100 --parseable | wc -l 165

你是一个高级 vet 用户,你运行了快速的 vet scan 来检查可能不受欢迎的包。

bash
➜ vet --no-banner scan -M pnpm-lock.yaml \ --insights-v2 --report-summary=false \ --filter 'projects.exists(p, p.stars < 50)' ┌──────────────────────────┬─────────┐ │ PACKAGE │ VERSION │ ├──────────────────────────┼─────────┤ │ proto-list │ 1.2.4 │ │ util-deprecate │ 1.0.2 │ │ widest-line │ 4.0.1 │ │ os-tmpdir │ 1.0.2 │ │ @pnpm/config.env-replace │ 1.1.0 │ │ stubborn-fs │ 1.2.5 │ │ run-async │ 3.0.0 │ │ is-path-inside │ 4.0.0 │ │ @pnpm/network.ca-file │ 1.0.2 │ │ @pnpm/npm-conf │ 2.3.1 │ │ ansi-align │ 3.0.1 │ │ restore-cursor │ 3.1.0 │ │ get-east-asian-width │ 1.3.0 │ │ is-fullwidth-code-point │ 3.0.0 │ │ stdin-discarder │ 0.2.2 │ │ is-in-ci │ 1.0.0 │ │ cli-width │ 4.1.0 │ │ external-editor │ 3.1.0 │ │ string_decoder │ 1.3.0 │ │ when-exit │ 2.1.4 │ └──────────────────────────┴─────────┘

你意识到自己并没有控制正在安装的依赖项。你处于 vibe 模式,并没有考虑所安装依赖项的安全隐患。许多依赖项甚至没有像样的社区支持,其威胁特征与 eslint-config-prettier 类似。然后你听说了 Slopsquatting,这时你恍然大悟。因开源代码中的恶意代码而被黑客攻击的风险是真实存在的。

添加一点安全保障

这就是 vet MCP Server 的用武之地。我们不想妨碍你的 vibe 编码冒险,但希望在 vibe 编码的同时保护你免受黑客攻击。让我们开始吧。

使用 homebrew 安装 vet,或者了解 其他安装选项

bash
brew install safedep/tap/vet

在 Claude Code 中添加 vet 作为 MCP 服务器

bash
➜ claude mcp add safedep-vet vet server mcp Added stdio MCP server safedep-vet with command: vet server mcp to local config

将以下内容添加到你的 CLAUDE.md 文件中

txt
Always use vet-mcp to check for vulnerabilities and malware before installing any package.

就这样!让我们来试试 Claude Code 和 vet 的配合。

txt
Install [email protected]

注意:​ pkg:npm/[email protected] 是一个已知的恶意包。这里我们用它来测试 vet MCP 服务器与 Claude Code 的集成。

Claude Code 现在通过 vet MCP server 对所有开源包进行审查,保护你免受开源代码中恶意代码的攻击。

Claude Code with vet MCP Server

再也不用在 vibe 编码时被攻击了。你可以继续你的 vibe 编码冒险,只是多了一些安全保障。vet MCP Server 支持所有支持 MCP 的 AI IDE 和编码代理。更多详情请阅读 MCP Server Documentation

结论

虽然 vibe 编码很有趣,但安全风险是真实存在的。具体来说,请确保:

  1. 在生产使用前审查生成的代码
  2. 在生产使用前修复生成代码中的安全漏洞
  3. 在安装前审查开源包

最后,如果你好奇的话,这就是我们 vibe 编码会话后 cli 的样子。

Claude Code Generated Tool
  • npm
  • oss
  • malware
  • vibe-coding
  • claude-code

SafeDep 博客最新更新

关注我们,获取关于开源安全与工程的最新更新和见解