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。
➜ pnpm ls --depth 100 --parseable | wc -l
8你很喜欢 Claude Code,于是你输入了这样的提示词:
Set the foundation for building a multi-command cli tool with
the best developer experience for cli with interactive,
progress bars and other eye candiesClaude Code 与你一起 vibe,并制定了一个计划。
该计划首先需要安装一堆第三方 npm 库。你正处于 vibe 模式,于是按照 Claude Code 的建议安装了 8 个库。
完成这一步后,你突然意识到第三方依赖项——也就是来自开源的代码——已经激增至惊人的 165 个。你不确定这些库的作用,但你相信 Claude Code 推荐的这些库是你命令行工具的最佳选择。
➜ pnpm ls --depth 100 --parseable | wc -l
165你是一个高级 vet 用户,你运行了快速的 vet scan 来检查可能不受欢迎的包。
➜ 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,或者了解 其他安装选项。
brew install safedep/tap/vet在 Claude Code 中添加 vet 作为 MCP 服务器
➜ claude mcp add safedep-vet vet server mcp
Added stdio MCP server safedep-vet with command: vet server mcp to local config将以下内容添加到你的 CLAUDE.md 文件中
Always use vet-mcp to check for vulnerabilities and malware
before installing any package.就这样!让我们来试试 Claude Code 和 vet 的配合。
Install [email protected]注意: pkg:npm/[email protected] 是一个已知的恶意包。这里我们用它来测试 vet MCP 服务器与 Claude Code 的集成。
Claude Code 现在通过 vet MCP server 对所有开源包进行审查,保护你免受开源代码中恶意代码的攻击。
再也不用在 vibe 编码时被攻击了。你可以继续你的 vibe 编码冒险,只是多了一些安全保障。vet MCP Server 支持所有支持 MCP 的 AI IDE 和编码代理。更多详情请阅读 MCP Server Documentation。
结论
虽然 vibe 编码很有趣,但安全风险是真实存在的。具体来说,请确保:
- 在生产使用前审查生成的代码
- 在生产使用前修复生成代码中的安全漏洞
- 在安装前审查开源包
最后,如果你好奇的话,这就是我们 vibe 编码会话后 cli 的样子。
- npm
- oss
- malware
- vibe-coding
- claude-code
SafeDep 博客最新更新
关注我们,获取关于开源安全与工程的最新更新和见解