返回探索
指南VibeFix 编辑部更新于 2026年10月4日

AI 装的依赖包,你敢用吗:vibe coding 供应链安全实战

vibe coding 里最危险的一行代码,往往不是 AI 写的,而是 AI 替你装的。OpenCode 的 RCE 漏洞就是栽在 npm preinstall 脚本上。这篇指南给你一套今晚就能落地的依赖审查流程:锁文件、审计、最小权限,让 AI 的「大方」不再变成你的事故。

快递员把包裹递到用户手中,隐喻依赖包的交付链条

先讲个真事:一个接口,一次 RCE

10 月的安全盘点里有个案例值得所有 vibe coder 背下来:OpenCode 的 /global/upgrade 接口接受任意包名,攻击者从网页跨域发一个请求,就能让受害者机器装上带恶意 preinstall 脚本的 npm 包——脚本在安装时自动执行,RCE 到手。修复只用了一行逻辑,但教训是通用的:依赖安装,是供应链攻击最短的路。

而在 vibe coding 的工作流里,这条路比任何时候都宽。传统开发里,装个包你要读 README、看 star、扫一眼 issue;AI 可不跟你客气——它为了「让功能跑起来」,npm install 起来比你还大方,一个 CRUD 能给你拉进来 40 个包,其中一半你这辈子都不会点开看。你省下的每一分钟「选型时间」,都在给未来的自己攒利息。

这不是危言耸听。Adversa 十月盘点里,CodePoisonRAG 研究显示投毒的代码 artifact 在三款代码生成器上达到 0.80–0.93 的攻击成功率;Plugin4Shell 则证明连「pin 住版本号」都可能被 git 层面的花招绕过。AI 时代,依赖就是代码,代码就是依赖。

AI 装依赖的四种「大方」,一种比一种贵

第一种:幽灵依赖。AI 写 import xxx from 'some-lib',发现没装就顺手装上,最后功能其实没用上这个库,但包留在了 package.json 里。每个幽灵依赖都是一次无意义的攻击面扩张——你甚至不知道它在那儿。

第二种:版本漂移。AI 经常写 ^1.2.3 这种宽松版本,或者干脆 latest。下次 npm install 拉到的可能就是被投毒的新版本。2026 年的投毒事件里,利用版本漂移的占了相当比例,因为攻击者知道:没人会去 diff 一个 patch 版本的变更。

第三种:脚本盲区。npm 包的 preinstall/postinstall 脚本在安装时以你的用户权限执行,能读文件、能联网、能写 cron。AI 装包时从不提醒你「这个包带了安装脚本」,而 OpenCode 的 RCE 已经演示了这条路线的终点。

第四种:传递依赖黑洞。你装 1 个包,实际进来 80 个。AI 不会去看依赖树,你也不会。攻击者最喜欢藏身的地方,就是第 5 层传递依赖里那个三年来没人维护的小包。

今晚就能落地的五步流程

第一步:锁死版本,提交 lockfile。永远用 package-lock.json(或 pnpm-lock.yaml),永远提交到仓库。告诉你的 agent 一条硬规则:「不许用 latest,不许写宽松版本,所有新增依赖必须出现在 lockfile 里。」这是成本最低、收益最高的一步。

第二步:装包前让 AI 先「答辩」。给 agent 加一条 prompt 约束:每个新依赖必须回答三个问题——它是做什么的(有没有更轻的替代)、它多久没更新了(一年没动的要警惕)、它带不带 install 脚本。答不上来就不装。这条规则每月大概能帮你挡掉一半的幽灵依赖。

第三步:自动化审计进 CI。npm audit 是底线,Socket.dev 或 Snyk 是进阶。重点不是「零漏洞」(那不现实),而是新增依赖的增量审计:PR 里多出来的包自动扫一遍,高危直接拦。vibe 项目也值得一个 5 分钟配好的 GitHub Action。

第四步:定期「杀包」。每个月花 20 分钟跑一遍:npx depcheck 找出没用到的依赖,删;npm ls 看看依赖树里有没有你已经不认识的包,查。依赖和代码一样会腐烂,区别是代码腐烂你看得见,依赖腐烂你看不见。

第五步:生产环境最小化安装。Docker 镜像里用 npm ci --omit=dev,devDependencies 永远不上生产。AI 特别爱装 dev 工具(顺手嘛),而历史上不少投毒包恰恰藏在 dev 依赖里,因为「反正不上生产」的心态让审查更松。

一个判断框架:依赖的「信任预算」

最后分享一个我自己的框架。把每个项目对第三方代码的信任看作一笔预算:大厂维护的、有 provenance(构建来源证明)的包,花 1 块;个人维护但活跃的,花 5 块;一年没更新、带 install 脚本、传递依赖层数深的,花 20 块。一个小项目的预算大概是 100 块——AI 替你装第 6 个「20 块」的包时,你就该叫停了。

这个框架的好处是,它把「安全」翻译成了 vibe coder 听得懂的语言:不是「不许装」,而是「装之前算算账」。AI 负责大方,你负责记账。

vibe coding 把写代码的速度提高了十倍,但供应链攻击的速度也一样。你的 agent 每分钟能装 10 个包,攻击者只需要其中一个。这场军备竞赛里,赢的永远是那个多看了一眼 lockfile 的人。

浏览项目广场发布你的项目

相关文章

Google 开发者文档变成结构化 API,向 AI 编程 Agent 输送最新知识
资讯
别再让 Agent 背过期文档写代码:Google 把官方文档变成 API,gcloud 一行查、Skill 一行装

2026 年 10 月 7 日,Google Developers 发布 Developer Knowledge API 生态:Google Cloud、Firebase、Android 等官方文档变成程序化事实来源,配 gcloud CLI 入口、官方 Agent Skill(一行安装)、MCP server 和多语言客户端库。为什么「文档 API 化」能连根拔掉 vibe coding「模型记错 API」的经典翻车。

AI 编程实践开发工作流产品发布
API 网关流量控制与请求限流的抽象示意,象征对后端服务的保护
指南
一夜被脚本刷掉 300 美元:vibe 项目的 API 限流与配额实战

公网上的每个接口都会在某个深夜被超预期调用。这篇实战为一人团队搭建限流体系:算法选型(滑动窗口 vs 令牌桶)、四层防御、AI 接口烧钱专项防护、配额设计、429 响应规范、误伤排查,最后附上线检查清单。

后端工程安全与隐私部署上线