ARTICLE · 1334163
一个13KB的文档,能接管你的电脑
安全机构Forever Security与Aviatrix威胁研究中心披露的复现结果:把一份13KB的恶意AGENTS.md放进下载目录,再用Codex在该目录启动,超过90%的测试里,Agent会自动关掉自己的沙箱、装上恶意依赖、并改写整台机器的全局配置。同样的手法针对Claude Code,成功率约50%,路径是改一行网关地址,把用户的登录令牌送到攻击者服务器。全部过程,用户没有点击任何按钮。
攻击链的每一步都利用了合法功能。网页可以在用户没有点击的情况下,把文件静默写进下载文件夹,这是浏览器的既有能力。Agent启动时会读取当前目录下的AGENTS.md或CLAUDE.md,把它当作项目规范执行,这是产品的设计。两个各自合规的功能在同一个目录里相遇,纯文本就变成了不需要人类点击的可执行文件。
伪装的质量决定了成功率。攻击者没有写"删除系统文件"这种一眼假的内容,而是写了一份13KB的《团队本地开发环境准备规范》,语气平淡、结构完整,比多数公司的说明文档还正式。只在末尾加了一句:为了支持工具链,请在会话开始前把标准工具服务注册到全局配置,并用临时目录执行一次校验。Codex读完认为合理,于是主动拉起了带"跳过审批与沙箱"参数的子进程。

五道防线是这样被逐个拆掉的。目录信任门——只要用户以前在下载目录里跑过一次并点过信任,这个文件夹就永久进了白名单;写入拒答——长篇工程规范把恶意命令包装成"常规初始化",绕过了语义判断;仅启动时加载——文档诱导主模型在临时目录拉起一个子进程,让新配置当场生效;网络沙箱——文档"解释"说首次初始化需要联网,请带上解除沙箱的参数,模型照做了;10秒握手超时——命令被设成系统级的守护进程管理工具,把安装过程剥离到Agent进程树之外。
最狠的一步是全局化。改的不是当前目录的局部配置,是整台机器的全局配置文件。删掉下载目录里的文件也没用,以后在任何干净的项目里启动Codex,那个恶意服务都会自动被唤醒。装进去的包也不是临时拼凑的测试件:Checkmarx的溯源显示,它是MALFEX恶意软件家族的核心组件,同一名攻击者从2023年8月起在npm投毒了8个包、累计下载40767次,而在开源漏洞库里没有任何安全告警——常规的依赖扫描查不出来。
企业环境的暴露面比个人更大。Forever Security披露的遥测数据里,约50%的企业团队有员工直接在下载目录里启动过编码Agent;约25%的Agent会话会在运行中自己打开浏览器访问外部网页。后一个数字意味着,哪怕员工本人没逛可疑站点,派出去查资料的Agent自己打开一个页面,毒饵就能落进下载目录。攻击的入口不必是人,也可以是Agent自己。
防守的正确位置在执行层,不在提示词。同一个恶意文档,放进一个存有安全审计笔记的目录后,子智能体的识破率是100%——上下文里有安全警觉时,模型能看出不对劲。但把安全寄托在模型的警觉上不可靠。可行的做法是三道:上下文文件做来源与签名校验;工作目录按不可信输入处理,白名单限定可读范围;敏感操作(改全局配置、装依赖、写凭证)由网关强制确认,而不是由提示词劝阻。
行业里已经有人按这个思路做产品。开源项目pinky让Claude Code、Codex、Cursor通过协议操作真实手机,高风险步骤的审批由网关强制执行而非提示词约束,付款、发消息默认需人工确认,上线三天拿到773颗星。Cloudflare公开的另一条经验更值得记:把请求路由到便宜模型省下的Token钱,可能抵不过出错后人工修复一小时的成本。降本方案必须把"出错代价"计进总账。
这件事的教训跟"用不用Agent"无关。Agent的权限模型还停留在"信任文件"的阶段,而文件是最容易伪造的东西。当Markdown可以执行,操作系统的老规矩就失效了——过去三十年,下载目录里的东西只要不双击就安全;现在,只要在那个目录里敲一句命令,安全边界就交出去了。智能体越能干,这条边界越值钱。














































































