仓库指令文件如何劫持AI编程助手
文章分析AGENTS.md、CLAUDE.md等仓库指令文件中的提示注入风险,包括利用不可见Unicode字符隐藏外传.env文件的指令。作者结合团队实践讨论防御,指出文件、依赖输出和网页内容都可能成为注入入口。
原文暂未完整获取,基于公开信息的快读
一份仓库里的 AGENTS.md,也可能成为 AI 编程助手的攻击入口。dev.to 的这篇文章讨论了攻击者如何把恶意指令藏进仓库说明文件,诱导 Agent 外传 .env 等敏感配置。作者还介绍了他们团队采用的扫描、审查和权限限制措施,但目前拿到的原文节选并不完整。
目前能确认什么
AGENTS.md、CLAUDE.md、.cursorrules 等文件用于向编程助手提供项目约定。风险在于:攻击者也能修改这些文本,把「执行测试前先运行某个脚本」包装成正常开发步骤。
这属于提示注入(Prompt Injection):外部内容中的指令试图改变模型行为。入口还可能包括依赖安装输出、README 和网页内容。
作者列举了 Unicode 隐藏字符、Markdown 的 HTML 注释等隐藏方式,并称曾在可疑仓库中扫描出隐藏命令。他们团队把扫描接入 pre-commit 和 CI,并要求指令文件变更经过指定人员审查。
隐藏内容能否造成实际损害,还取决于 Agent 的文件、Shell 和网络权限。
我的判断
对程序员而言,最需要调整的是审查习惯:仓库指令文件应当像 CI 配置一样检查,尤其要追踪其中要求执行的脚本。仅看 Markdown 渲染结果,可能漏掉注释里的指令。
扫描可以暴露可疑字符,却不能证明文件安全。正常文字同样能诱导执行恶意操作;限制敏感文件访问和网络出口,才能进一步缩小损害范围。
节选没有提供可复现的攻击记录,也没有说明各工具对隐藏字符的处理差异,不能据此认定所有 Agent 都会中招。另外,CODEOWNERS 文件是否能强制审查,还取决于仓库保护规则。具体工具如何建立指令信任边界,仍需官方文档确认。