GitHub Copilot Chat中存在一个CVSS评分高达9.6的高危漏洞,攻击者可利用该漏洞悄无声息地从私有仓库窃取源代码和敏感信息。
该漏洞结合了新型提示注入技术和GitHub内容安全策略(CSP)的巧妙绕过方法,使攻击者能够获得对受害者Copilot实例的显著控制权,包括建议恶意代码或链接的能力。该漏洞已通过HackerOne平台负责任的披露,GitHub随后发布了修复补丁。
漏洞利用原理
攻击始于对GitHub Copilot上下文感知特性的利用。这款AI助手设计初衷是利用仓库中的代码和拉取请求等信息来提供相关建议。
Legit Security研究人员发现,他们可以利用GitHub的"隐形注释"功能将恶意提示直接嵌入拉取请求描述中。虽然这些注释在用户界面中不可见,但Copilot仍会处理其内容。这意味着攻击者可以创建包含隐藏恶意提示的拉取请求,任何后续使用Copilot分析该请求的开发人员都会导致会话被入侵。
由于Copilot以发出请求的用户权限运行,注入的提示可以命令AI访问和操作受害者私有仓库中的数据。
URL字典绕过安全策略
攻击者面临的主要障碍是GitHub严格的内容安全策略(CSP),该策略可防止AI将数据泄露到外部域。
GitHub使用名为Camo的代理服务安全渲染第三方网站的图片。Camo会将外部图片URL重写为经过签名的camo.githubusercontent.com
链接,只有包含GitHub生成的有效签名的URL才会被处理。这防止了攻击者简单地注入<img>
标签将数据发送到自己的服务器。
为绕过此限制,研究人员设计了一种巧妙方法。根据Legit Security报告,他们预先为每个字母和符号生成了有效的Camo URL字典。每个URL都指向他们控制的服务器上的1×1透明像素。
最终的注入提示会指示Copilot在受害者的私有仓库中查找敏感信息,如AWS密钥或零日漏洞描述。然后使用预先生成的Camo URL字典将这些信息"绘制"成一系列不可见图片。
当受害者的浏览器渲染这些图片时,会向攻击者的服务器发送一系列请求,实际上是一个字符一个字符地泄露敏感数据。
PoC演示了成功从私有仓库窃取代码的过程。针对此次披露,GitHub已于2025年8月14日修复该漏洞,彻底禁用Copilot Chat功能中的所有图片渲染,消除了该攻击途径。
参考来源:
Critical GitHub Copilot Vulnerability Let Attackers Exfiltrate Source Code From Private Repos
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf
客服小蜜蜂(微信:freebee1024)