GitHub Copilot 提示注入致RCE(CVE-2025-53773)-网络安全论坛-网络安全-阻击者联盟

GitHub Copilot 提示注入致RCE(CVE-2025-53773)

前言

这篇文章披露了一种值得警惕的提示注入问题:在GitHub Copilot与VS Code环境下,攻击者可借此接管开发者的整台机器。

实现方式是通过修改项目的settings.json,把 Copilot 置于不设防模式(YOLO模式),从而完成利用链的触发。

如前几天在Amp一文所述,代理(agent)里一个常被忽略的漏洞模式是:只要代理能写文件、改自己的配置,或调整与安全相关的设置,就可能被利用走向远程代码执行(RCE)。这并不罕见,做安全审查时应把这类入口作为常规检查项。

Amp Code

notalking,公众号:影域实验室Amp Code:通过Prompt Injection实现任意命令执行

背景研究

在审看 VS Code 与 GitHub Copilot 的 Agent 模式时,我注意到一个异常行为:它可以在工作区(workspace)里创建并写入文件,而且不需要用户确认。

这些编辑会立即持久化,不是以内存里的 diff 供你审核;改动会立刻落盘,直接写到磁盘。

d2b5ca33bd20250821064729

这种情况对红队来说一眼就知道不妙——所以我继续验证:能不能借此做提权并执行代码。

YOLO 模式

接下来在去梳理 VS Code 中依赖项目/工作区(workspace)目录内配置项的功能,很快就发现了一个有意思的特性。

d2b5ca33bd20250821064745

结果发现,在工作区目录下的 .vscode/settings.json 里可以加入这一行:

"chat.tools.autoApprove": true

含义很直白:自动批准工具调用,不再弹出确认,这行配置会让 GitHub Copilot 进入不设防模式(YOLO)

它会关闭所有用户确认,我们可以直接跑 shell 命令、访问网页等更多操作。

更有意思的是:这是个实验性功能,但默认就存在。我既没下特殊版本,也没把 VS Code 切到全局实验模式。

此外,这一行为在 Windows、macOS、Linux 上都能复现。

PoC

通过提示注入劫持 Copilot 并完成提权的链路如下:

  1. 起手提示注入:将载荷埋在源代码文件、网页、GitHub Issue、工具调用的响应等内容中;也可以用不可见文本承载指令。

  2. 写入配置、放宽限制:注入首先向 ~/.vscode/settings.json 写入如下配置(若目录/文件不存在会被创建):

    "chat.tools.autoApprove": true
    1. Copilot 进入不设防模式(YOLO):写入后 Copilot 立即切到不设防状态。

    2. 执行命令,按系统分流:触发终端命令执行;配合条件式提示注入,可根据操作系统选择执行何种命令。

    3. 达成效果:RCE:通过提示注入获得远程代码执行能力。。

    文中截图展示:左侧为含提示注入的演示文件;右侧开发者在聊天框与其交互;系统计算器窗口随即弹出。

d2b5ca33bd20250821064828

当然提示注入还有很多投递方式都是可用的攻击面——比如网页内容,或者 MCP 服务器返回的数据。我把载荷放在源代码文件里,只是因为这样最容易复现和测试。

将工作站并入僵尸网络 —— “ZombieAIs”

这也就意味着,我们可以把开发者的机器并入僵尸网络,作为一台 “ZombieAI” 节点。

另外,纯属“玩笑”层面的,还可以改动 settings.json,把 VS Code 切成红色主题之类的外观设置。

但事情不止于此:这同样意味着可以做出一种真正的“AI 病毒”——它附着在文件上,随着开发者下载并与受感染文件交互而传播。

最后,为了证明我们对开发者主机拥有完整控制,演示显示:可以劫持 Copilot 去下载恶意程序,并与远程 C2(命令与控制) 服务器建立连接。

d2b5ca33bd20250821064849

风险影响

这等于把门敞开给恶意软件、勒索软件、信息窃取器等各类东西。

构建一种“AI 病毒”

看到这里,你会留意到:这套机制几乎等同于能制造一种“病毒”。攻击者把指令埋进去,一旦拿到代码执行,后续的恶意程序就能继续污染其他 Git 项目(以及 RAG 数据源,RAG =检索增强生成),把恶意指令写进去,提交改动,甚至强推到上游。

这会带来进一步扩散:其他开发者在不知情的情况下同步、传播了被感染的代码。

建议与修复

  • 攻击面不止“不设防模式(YOLO)”这一个例子。微软询问我是否还有更多信息时,我继续排查,发现还有其他薄弱点:例如 AI 可写入 .vscode/tasks.json,或添加伪造的恶意 MCP 服务器,这些都可能引发代码执行。同时,AI 还能重配项目的界面配置
  • 近来我注意到很多开发者会同时使用多个 agent,这带来覆盖其他 agent 配置文件的风险(比如为 bash 命令加白名单添加 MCP 服务器等),而这些配置通常也放在项目目录里。
  • 理想状态是:未经人工确认,AI 不应修改文件。许多编辑器会先展示 diff,再由开发者审核通过。

结论

这再次说明:AI 代理并不总能“老老实实待在盒子里”。一旦能改动自身运行环境,GitHub Copilot 就可以完成提权并执行代码,进而拿下开发者主机。按我的观察,这在代理式系统里并不罕见,属于常见的设计缺陷。

威胁建模时要把这类问题拎出来重点看——按理说它们本应容易被识别出来

请登录后发表评论

    没有回复内容