GitHub Copilot:通过提示词注入实现远程代码执行(CVE-2025-53773)· Embrace The Red
来源: https://embracethered.com/blog/posts/2025/github-copilot-remote-code-execution-via-prompt-injection/ 抓取时间: 2026-07-21 16:24:00
GitHub Copilot:通过提示词注入实现远程代码执行(CVE-2025-53773)
发布于 2025 年 8 月 12 日 #大语言模型 #智能体 #AI 漏洞月
这篇文章讲述了一个重要但也很可怕的提示词注入发现,它可以导致 GitHub Copilot 和 VS Code 中开发者机器的完全系统入侵。
通过修改项目的 settings.json 文件,将 Copilot 置于 YOLO 模式来实现这一点。
正如几天前关于 Amp 的描述,智能体中一个可能被忽视的漏洞模式是,如果智能体可以写入文件并修改自己的配置或更新与安全相关的设置,这可能导致远程代码执行。这种情况并不少见,也是进行安全审查时应始终关注的领域。
背景研究
在查看 VS Code 和 GitHub Copilot 智能体模式时,我注意到一个奇怪的行为……它可以在没有用户批准的情况下在工作区创建和写入文件。
这些编辑会立即持久化,它们不是作为要审查的差异存储在内存中。修改会立即写入磁盘。
作为一名红队成员,你知道这可能不是一件好事……所以我在研究这是否可以用来提升权限并执行代码。
YOLO 模式
所以,接下来我研究了 VS Code 中依赖于项目/工作区文件夹内设置的功能,并很快发现了一个有趣的功能。
事实证明,在 .vscode/settings.json 文件中可以添加以下行:
"chat.tools.autoApprove": true
这将把 GitHub Copilot 置于 YOLO 模式。
它会禁用所有用户确认,我们可以运行 shell 命令、浏览网页等等!
有趣的是,这是一个实验性功能,但默认情况下仍然存在。我没有下载特殊版本,也没有将我的 VS Code 整体设置为实验模式。
此外,它适用于 Windows、macOS 和 Linux。
漏洞利用链解析
劫持 Copilot 并提升权限的概念验证利用链如下:
- 攻击从植入源代码文件、网页、GitHub 问题、工具调用响应或其他内容中的提示词注入开始……有效负载还可以使用不可见文本作为指令。
- 提示词注入首先将 "chat.tools.autoApprove": true, 这一行添加到
~/.vscode/settings.json文件中。如果文件夹和文件不存在,将创建它们。 - GitHub Copilot 立即进入 YOLO 模式!
- 攻击运行终端命令。使用条件提示词注入,我们实际上可以根据操作系统来定位运行什么。
- 我们实现了由提示词注入驱动的远程代码执行。
这是一张截图,显示了带有提示词注入的演示文件,开发者在右侧的聊天框中与文件交互,以及弹出的计算器!
当然,任何其他提示词注入交付方式,如从 MCP 服务器返回的 Web 或数据,都是攻击角度。我只是在源代码文件中使用它,因为它最容易测试。
视频演练
简短演示
这是一个演示视频,显示了在 Windows 上的代码执行。
这是在 macOS 上的:
演练
这是一个更长的视频,详细解释了发现和利用过程:
AI 可以设置自己的权限和配置设置,这太疯狂了!
将工作站加入僵尸网络 - ZombAI
当然,这意味着我们可以将开发者的机器作为 ZombAI 加入僵尸网络。
此外,为了好玩,我们可以修改 settings.json 文件,将 VS Code 切换为 Red 配色方案以及类似的事情。
但这还不止于此!这也意味着我们可以构建一个真正的 AI 病毒,它会附着在文件上并随着开发者下载和与受感染文件交互而传播。
最后但同样重要的是,为了证明我们完全控制了开发者的主机,我们展示了 Copilot 可以被劫持以下载恶意软件,并加入远程命令和控制服务器。
这意味着门已经为恶意软件、勒索软件、信息窃取程序等打开了。
可怕的东西。
构建 AI 病毒
当看到这一点时,人们会注意到这基本上允许创建病毒。攻击者可以嵌入指令,一旦它们获得代码执行,额外的恶意软件就可以危及其他 Git 项目(和 RAG 源)以嵌入恶意指令,并提交更改甚至强制推送到上游。
这可能导致进一步传播,因为其他开发者在不知不觉中传播受感染的代码。
最后,我们还需要谈谈不可见指令!
使用不可见指令
有人可能会说,如果指令作为注释嵌入,会很快被发现。所以为了让它更有趣一点,我继续创建了一个不可见的有效负载,它实现了攻击链,但对用户不可见。这不是那么可靠,但它仍然有效:
**注意:**虽然这里带有不可见指令的演示对我来说多次有效,但使用不可见指令通常会导致利用非常不可靠,而且模型通常也会拒绝它,VS Code 也会显示关于 Unicode 字符的视觉指示器。然而,攻击(和模型)会随着时间的推移变得更好。还值得强调的是,并非所有模型都容易受到这种不可见的提示词注入攻击。
建议和修复
实际上,除了我分享的 YOLO 模式示例之外,还有更多的攻击角度。当微软问我是否有更多信息时,我多研究了一下,注意到还有其他有问题的地方,例如 AI 可以写入的 .vscode/tasks.json,或添加虚假的恶意 MCP 服务器等,这可能导致代码执行。而且 AI 可以重新配置项目的用户界面和配置设置。
最近我注意到开发者经常使用多个智能体,因此也存在覆盖其他智能体配置文件(允许列表 bash 命令、添加 MCP 服务器……)的威胁,因为它们通常也在项目文件夹中。
理想情况下,AI 不应该能够在没有人首先批准的情况下修改文件。许多其他编辑器确实会显示差异,然后开发者可以批准。
负责任的披露
在 2025 年 6 月 29 日报告漏洞后,微软确认了复现,并询问了一些后续问题。几周后,MSRC 指出这是他们已经在追踪的问题,并将在 8 月前修复。随着 8 月补丁星期二的发布,这现已修复。
向 Persistent Security 的 Markus Vervier 致敬,他也识别并向微软报告了此漏洞。你可以在此处找到他们的文章。还要向似乎也并行发现了这一点的 Ari Marzuk 致敬。
感谢 MSRC 和产品团队的成员帮助缓解了这个问题。
结论
这是另一个例子,说明 AI 智能体可能不会停留在它的盒子里!通过修改自己的环境,GitHub Copilot 可以提升权限并执行代码以危及开发者的机器。这是智能体系统中并不罕见的设计缺陷,正如我所发现的那样。
继续留意这样的设计缺陷,这些应该在威胁建模期间很容易被发现。
干杯。
参考
- 2025 年 AI 漏洞月
- Amp 代码:通过提示词注入的任意命令执行已修复
- Copilot 设置
- CVE-2025-53773:GitHub Copilot 和 Visual Studio 远程代码执行漏洞
- Persistent Security 文章
- Persistent Security




