GitHub Copilot Chat 漏洞泄露私有仓库数据
HackerNews 编译,转载请注明出处: Legit Security 近日披露了 GitHub Copilot Chat 人工智能助手的一个漏洞,该漏洞导致敏感数据泄露并允许攻击者完全控制 Copilot 的回复。 通过结合内容安全策略(CSP)绕过与远程提示注入,Legit Security 的研究员 Omer Mayraz 成功从私有仓库中泄露了 AWS 密钥和零日漏洞信息,并影响了 Copilot 向其他用户提供的回复。 Copilot Chat 旨在提供代码解释和建议,并允许用户通过 HTML 注释在渲染的 Markdown 中隐藏内容。隐藏评论仍会触发向仓库所有者发送的拉取请求通知,但不会显示评论内容。然而,相关提示也会被注入到其他用户的上下文中。 Mayraz 解释说,隐藏评论功能允许用户影响 Copilot,使其向其他用户显示代码建议,包括恶意软件包。Mayraz 还发现,他可以制作包含访问用户私有仓库指令的提示,对其内容进行编码,并将其附加到 URL 中。“当用户点击该 URL 时,数据就会被回传给我们,”他指出。 不过,GitHub 严格的内容安全策略阻止从非平台拥有的域名获取图片及其他内容,从而防止通过向受害者聊天中注入 HTML <img> 标签来泄露数据。当 README 或 Markdown 文件中包含外部图片时,GitHub 会解析这些图片以识别 URL,并使用开源项目 Camo 为每个文件生成匿名代理 URL。外部 URL 会被重写为 Camo 代理 URL,当浏览器请求图片时,Camo 代理会检查 URL 签名,并且仅当 URL 由 GitHub 签名时才从原始位置获取外部图片。 这种做法通过使用受控代理获取图片来确保安全,防止利用任意 URL 泄露数据,并且在 README 中显示图片时不会暴露图片 URL。 “我们注入到受害者聊天中的每个 <img> 标签必须包含预先生成的有效 Camo URL 签名,否则 GitHub 的反向代理将不会获取内容,”Mayraz 指出。 为了绕过这一保护机制,该研究员创建了一个包含字母表中所有字母和符号的字典,为每个字符预生成对应的 Camo URL,并将该字典嵌入到注入的提示中。 他创建了一个对每个请求返回 1×1 透明像素的服务器,构建了可用于从仓库泄露敏感内容的字母和符号的 Camo URL 字典,随后制作了触发漏洞的提示。 Mayraz 发布了概念验证视频,演示了如何利用该攻击从私有仓库中泄露零日漏洞和 AWS 密钥。 8月14日,GitHub 通知该研究员,已通过禁止使用 Camo 泄露用户敏感信息的方式修复了该问题。 消息来源:securityweek; 本文由 HackerNews.cc 翻译整理,封面来源于网络; 转载请注明“转自 HackerNews.cc”并附上原文