一项已修复的漏洞曾允许攻击者通过在代码协作页面中嵌入隐藏提示,操纵 GitHub Copilot Chat 读取并泄露私有仓库中的敏感数据。
研究显示,该攻击链还可借助 GitHub 图片代理将窃取的信息通过图像请求“隐身”传出,揭示了 AI 助手在安全设计上的新盲点。
01
一场由“隐藏提示”引发的意外风险
GitHub Copilot Chat是GitHub平台集成的人工智能助手,能够读取仓库文件、拉取请求(PR)和评论内容,为开发者提供代码建议、解释和实现方案。其核心能力是上下文感知——根据当前代码和PR内容生成定制化回答。
然而,Legit Security的研究人员发现,Copilot在处理PR描述和评论时,对隐藏的注释或富文本内容并没有严格隔离和验证。这就为攻击者留下了可乘之机:他们可以在PR中插入隐藏提示(prompt),诱导Copilot在用户打开页面时无意执行指令。
这种提示注入不会触发浏览器警告,也不会直接显示在页面上,但足以改变Copilot的行为。例如,它可以被指令去搜索私有仓库文件、查找密钥字符串,并将结果嵌入聊天回复中。因为Copilot拥有与运行它的用户相同的访问权限,这意味着私有仓库中的敏感信息可能被泄露。
研究发现,隐藏提示的影响不仅限于触发的用户,还可能影响访问同一PR页面的其他开发者。Legit Security CTO Liav Caspi指出:“我们的测试仅使用拉取请求注释,这是任何开发者都可以访问的接口。其他隐藏位置虽然可能存在风险,但攻击链更复杂。”
一旦Copilot读取到隐藏指令,攻击者就可以让它执行一系列操作,例如显示特定消息、生成伪造代码、插入链接或图片,甚至检索私有代码中的敏感信息并以可读文本形式返回。由此可见,Copilot强大的上下文感知能力在没有严格安全约束时,也可能成为潜在的攻击入口。
02
图片代理成了“泄密通道”
研究人员进一步发现,GitHub的图片代理系统Camo可被用来绕过安全策略,将敏感数据偷偷传出。
GitHub为了安全,将所有外部图片请求转换为camo.githubusercontent.com域下的签名链接,以防止网页直接从未知服务器加载内容。然而,在本次事件中,这一机制被反向利用。
研究者创建成百上千个“已签名”的图片链接,每个链接代表一个字母或符号,并让Copilot按照指令拼接这些图片,从而将要泄露的文本(如密钥或代码片段)编码进图片请求的顺序中。
这些图片请求通过Camo代理加载,看似只是普通单像素图片,但实际上请求过程已经把仓库敏感数据转化为隐蔽网络流量。当GitHub代理加载这些图片时,敏感信息便随请求传输给攻击者,从而绕过常规浏览器安全策略。
03
攻击链验证与修复
研究员证明了该方法能够找到特定的敏感信息,例如密钥 AWS_KEY,并将其从私有仓库中发送出去。该攻击还可以操纵 Copilot 对其他用户展示格式化的文本、代码和看起来合法的链接。
研究者成功利用这一链路,在受控实验环境中让 Copilot 从私有仓库中识别出特定密钥并通过图片请求外发。
Legit Security 的 CTO Liav Caspi 指出,这种攻击方式虽然数据泄露规模有限,但隐蔽性极强。“只要能诱使 AI 读取恶意内容,就可能让它执行一系列看似无害却可泄露数据的任务。” 他说。他同时强调,这种利用 AI 行为链的攻击不止存在于 GitHub 生态中,理论上其他具备上下文访问能力的 AI 助手也可能面临类似威胁。
04
对开发者与企业的启示
此次事件再次凸显了AI助手的“双刃剑”特性:在提高开发效率的同时,也扩大了“可被利用的上下文面”。Caspi建议,Copilot用户可采取以下措施降低风险:
控制Copilot访问范围,通过配置ignore文件屏蔽敏感目录;
谨慎处理外部PR和评论内容,尤其是包含隐藏或富文本元素的提交;
启用网络流量监控,及时发现异常外部请求,防止数据无感知泄露。
从长期来看,该漏洞揭示了AI与安全边界融合的复杂性。传统安全策略(如内容隔离与图片代理)在面对“可理解内容”的AI时可能不再可靠。未来AI系统需更强的上下文约束与跨层防护机制,才能真正实现“智能而安全”。
GitHub虽然迅速修复漏洞,但给开发者和企业的启示深远:当AI深入代码托管与协作平台,安全不仅仅是防止外部攻击,更要防止“助手本身”成为新的数据泄露通道。
消息来源:Cyber Security News
文章来源 :安全客















暂无评论内容