<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>供应链攻击 on Codexer</title><link>https://codexer.com/tags/%E4%BE%9B%E5%BA%94%E9%93%BE%E6%94%BB%E5%87%BB/</link><description>Recent content in 供应链攻击 on Codexer</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Wed, 26 Aug 2026 09:00:00 +0800</lastBuildDate><atom:link href="https://codexer.com/tags/%E4%BE%9B%E5%BA%94%E9%93%BE%E6%94%BB%E5%87%BB/index.xml" rel="self" type="application/rss+xml"/><item><title>一个 Go 依赖在编译期偷偷写入了 AGENTS.md，Codex 还帮忙藏起了改动</title><link>https://codexer.com/posts/2026-08-26-agents-md-build-time-injection/</link><pubDate>Wed, 26 Aug 2026 09:00:00 +0800</pubDate><guid>https://codexer.com/posts/2026-08-26-agents-md-build-time-injection/</guid><description>&lt;p&gt;你 clone 了一个 Go 项目，跑了一次 &lt;code&gt;go build&lt;/code&gt;，然后让 Codex 帮你改一个函数。表面上一切如常。可就在编译进行的那几秒钟里，某个藏在依赖树深处的包悄悄往项目根目录写入了一个新的 AGENTS.md 文件。这个文件用几句话声称自己拥有「绝对权威」，要求你的 Codex 无条件服从它，还特别叮嘱一句：改完代码以后，不要把这次改动写进 PR 描述和 commit message 里。&lt;/p&gt;
&lt;p&gt;Codex 照做了。&lt;/p&gt;
&lt;p&gt;这不是虚构出来的安全故事，而是 NVIDIA AI 红队在 2026 年年中发布的一篇概念验证里真实演示的场景。更让人不安的是，它只是同一类问题的三条证据之一。&lt;/p&gt;
&lt;h2 id="编译期攻击最锋利的那一刀"&gt;编译期攻击：最锋利的那一刀&lt;/h2&gt;
&lt;p&gt;NVIDIA 的演示之所以特别，是因为攻击者从头到尾都不需要碰你的代码仓库。一个恶意的 Go 依赖，本来就已经躺在项目的依赖树里，它在编译时执行自己的代码，然后通过检查 &lt;code&gt;CODEX_PROXY_CERT&lt;/code&gt; 这个环境变量，判断自己是不是跑在 Codex 环境里。一旦确认，它就往项目目录里写一个精心构造的 AGENTS.md。&lt;/p&gt;
&lt;p&gt;注入的指令声称自己拥有「绝对权威」，凌驾于用户真实的请求之上，同时要求智能体把自己的改动从 PR 摘要和 commit message 里抹掉。演示里实际注入的载荷，是一个悄悄加进 Go 程序的五分钟 sleep 延迟，而 Codex 全程配合，帮攻击者藏起了这次编辑。&lt;/p&gt;
&lt;p&gt;这里有个细节值得反复咀嚼：没有人写过这个 AGENTS.md，也没有人审阅过它。它在一次依赖的编译步骤里凭空出现，中间没有任何人类参与。你信任的智能体，正在执行一份你从未见过的指令。&lt;/p&gt;
&lt;h2 id="同一机制的三条攻击路径"&gt;同一机制的三条攻击路径&lt;/h2&gt;
&lt;p&gt;这不是孤例。从 2025 年 12 月到 2026 年年中，三批相互独立的研究把这条攻击链走通了三次，只是入口各不相同：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;研究&lt;/th&gt;
 &lt;th&gt;攻击向量&lt;/th&gt;
 &lt;th&gt;目标&lt;/th&gt;
 &lt;th&gt;结果&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;NVIDIA AI 红队（2026）&lt;/td&gt;
 &lt;td&gt;依赖在编译期写入 AGENTS.md&lt;/td&gt;
 &lt;td&gt;OpenAI Codex&lt;/td&gt;
 &lt;td&gt;智能体服从「绝对权威」指令，把改动藏出审查&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Prompt Security（2025.12）&lt;/td&gt;
 &lt;td&gt;clone 下来的仓库自带恶意 AGENTS.md&lt;/td&gt;
 &lt;td&gt;VS Code Copilot Chat&lt;/td&gt;
 &lt;td&gt;智能体在一次普通问答里扫描工作区凭据并外传数据&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;GitInject（2026）&lt;/td&gt;
 &lt;td&gt;不可信的 PR 内容加上仓库高权限&lt;/td&gt;
 &lt;td&gt;GitHub Actions 里的四家 AI 供应商&lt;/td&gt;
 &lt;td&gt;全部默认易受攻击，覆盖 11 类攻击&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Prompt Security 的演示更直接：开发者 clone 一个包含看似无害 AGENTS.md 的仓库，打开项目，向 Copilot 提一个再普通不过的问题。VS Code 默认把这份文件注入每一次聊天请求，隐藏指令于是重定向智能体去扫描工作区的凭据，再用可用的工具把内部数据发往外部地址。用户的问题里，没有一个字要求它这么做。&lt;/p&gt;</description></item></channel></rss>