GitHub Codespaces 中存在一个由 AI 驱动的高危漏洞,名为RoguePilot,该漏洞允许攻击者通过在 GitHub Issue 中嵌入恶意指令,悄无声息地劫持代码仓库。
该漏洞由 Orca Research Pod 的研究人员发现,它利用了 GitHub Issues 与 Codespaces 内置 Copilot AI 代理之间的无缝集成,攻击者无需进行任何直接交互,即可触发对仓库的完全接管。
研究人员已向 GitHub 进行了合规漏洞披露,微软在与 Orca 团队协作完成修复工作后,已对此漏洞进行了修补。
GitHub Copilot 攻击原理
RoguePilot 被归类为被动提示注入,这是一种将恶意指令嵌入语言模型会自动处理的数据、内容或开发环境中的攻击方式。
与需要受害者直接与 AI 交互的传统提示注入不同,该攻击在开发者从被植入恶意内容的 GitHub Issue 打开 Codespaces 的瞬间就会触发。当从 Issue 上下文启动 Codespaces 时,GitHub Copilot 会自动将 Issue 描述作为初始提示,从而将不受信任的用户可控内容直接注入 AI 代理的执行环境。
Orca Security 的研究员 Roi Nisimi 通过 HTML 注释标签
<!-- -->在 GitHub Issue 中嵌入隐藏指令,演示了完整的攻击链。这是 GitHub 的一项标准功能,内容对人类用户不可见,但 Copilot 在处理 Issue 描述时可以完整读取。一旦 Codespace 被打开,Copilot 就会静默执行注入的指令,不会向开发者发出任何可见警报。
攻击随后通过一个三阶段数据窃取链展开。首先,注入的提示指令 Copilot 通过其
run_in_terminal工具执行gh pr checkout 2,拉取一个预先构造的拉取请求。该请求中包含一个名为1.json的符号链接,指向/workspaces/.codespaces/shared/user-secrets-envs.json—— 存储环境GITHUB_TOKEN的文件。由于 Copilot 的防护机制不会追踪符号链接,AI 代理通过该链接使用
file_read工具读取密钥文件,不会触发工作空间边界限制。最后,Copilot 被指令创建一个新的 JSON 文件
issue.json,其$schema属性指向攻击者控制的服务器。这利用了 VS Code 默认开启的json.schemaDownload.enable设置,该设置会自动通过 HTTP GET 获取远程 JSON 模式。攻击者将窃取的
GITHUB_TOKEN作为 URL 参数附加到该模式请求中,实现对高权限认证令牌的静默外带泄露。获取对仓库具有有效权限的GITHUB_TOKEN后,攻击者即可获得完整读写权限,完成隐蔽的仓库接管。Orca Security 将 RoguePilot 描述为一种新型 AI 介导供应链攻击:大语言模型的自主能力、终端访问权限、文件读写和联网工具被武器化,反过来攻击本应受其协助的开发者。
该漏洞表明,作为 Codespaces 内自主编码代理运行的 Copilot,无法可靠区分开发者的合法指令与嵌入在 GitHub Issue 或拉取请求中的对抗性内容。
此次攻击无需特殊权限、无需受害者执行代码、无需社会工程学,仅需创建一个恶意 GitHub Issue 即可实施,技术水平较低的威胁行为者也可轻易利用。
安全专家指出,这是为 AI 代理授予 “上帝模式” 权限、工具、终端访问权和高权限令牌,而底层模型仍采用开放逻辑、将所有处理文本视为可信任内容所直接导致的后果。
Orca 在披露中建议厂商在所有集成大语言模型的开发工具中采用故障安全默认配置:将仓库、Issue 和拉取请求内容视为不可信输入;禁止 AI 代理从外部数据源被动接收提示;将
json.schemaDownload.enable默认设为 false;在工作空间边界内实施严格的符号链接沙箱;为 Codespaces 环境颁发最小权限、短时有效的令牌。







发表评论
您还未登录,请先登录。
登录