GitLost:公共 GitHub Issue 可诱骗 GitHub 智能体工作流泄露私有仓库数据
导语:Noma Security 披露名为 GitLost 的新型攻击技术:攻击者仅需在公共仓库提交普通 Issue,即可利用间接提示注入操纵 GitHub Agentic Workflows 读取并泄露组织私有仓库内容,无需任何凭据或访问权限。
Noma Security 的研究人员证明,一个公共 Issue 即可诱骗 GitHub 智能体工作流(Agentic Workflows)泄露组织私有仓库的内容。
攻击者只需要在公共仓库上提交一个看似普通的 Issue,无需窃取任何凭据,无需访问目标组织本身。如果该组织已经向智能体授予了跨仓库读取权限——包括私有仓库——那么这条 Issue 就可以引导智能体将私有内容写入公共评论中。
Noma 将该技术命名为 GitLost。其目标是 GitHub 智能体工作流(GitHub Agentic Workflows),该功能目前处于公开预览阶段,由 GitHub 于今年 2 月推出。用户不再编写自动化脚本,而是在 Markdown 文件中以自然语言向 AI 智能体下达指令,智能体会读取 Issue 和 Pull Request、运行工具并自主回复。
该智能体可由 GitHub Copilot、Anthropic 的 Claude、Google Gemini 或 OpenAI Codex 驱动。工作流默认只读,但组织可以为其提供一个具有跨仓库(包括私有仓库)读取权限的令牌,以赋予其跨仓库上下文能力。
漏洞的根源是一个广为人知的问题:间接提示注入(indirect prompt injection)。AI 智能体无法可靠区分来自所有者的指令与隐藏在所读取内容中的指令。因此,如果攻击者将这些指令写入一条 Issue,智能体可能会照单执行。
在 Noma 的概念验证中,恶意 Issue 被伪装成销售副总裁在客户会议后提出的例行请求。被触发的工作流被设定为在 Issue 被分配时启动,读取 Issue 内容并以评论形式回复。该工作流还拥有对组织其他仓库的读取权限。
一旦常规自动化将这条 Issue 分配出去,智能体便读取了某个私有仓库的 README,并将其粘贴到该 Issue 的公共评论中。
GitHub 为阻止此类问题构建了护栏。在其官方文档中,公司警告称"AI 智能体可能被提示注入、恶意仓库内容或被入侵的工具所操纵",该产品默认提供沙箱、只读令牌、输入清理,以及在智能体发布输出前对其进行扫描的威胁检测步骤。

Noma 报告称,在其测试中,仅一个单词的更改就足以绕过防护。在恶意指令前加上"Additionally(此外)"一词,模型便会将其视为后续任务而非需要拒绝的指令,护栏因此放行。
GitLost 的特别之处在于攻击者能够控制的内容。Noma Security 安全研究负责人 Sasi Levi 告诉 The Hacker News:"以往的提示注入示例主要在于操纵智能体的输出内容,而 GitLost 则是操纵智能体如何运用其权限。"
他表示,这里的智能体并非聊天窗口,而是坐落在组织 CI/CD 相关基础设施内部、拥有跨仓库读取权限的凭证化行为者,而这些仓库是攻击者无法看见的。它不接触任何服务器,不需要窃取的凭据,也不需要对任何私有内容拥有写权限。攻击者只需要发起一个公共 Issue。
这种场景恰好符合开发者 Simon Willison 所提出的"致命三要素"(lethal trifecta)模型,Levi 也使用了同样的术语:一个能访问私有数据、接收不可信外部内容,并具备对外发送数据通道的智能体。当三者同时具备时,便形成了泄露路径。
这并不是一个可以通过补丁修复的漏洞。正如 Levi 所阐述的,它是向 AI 智能体授予常驻凭证、同时让其读取攻击者可控文本的结构性后果。
Noma 已将 GitLost 披露给 GitHub,并在 GitHub 知晓的情况下发布了其发现。受影响范围仅限于启用了该预览功能、并将智能体配置为读取不可信公共输入、同时拥有私有仓库读取权限并能够公开发布的组织。
攻击者能够获取的内容取决于智能体令牌所能访问的范围,从专有源代码到内部密钥、设计文档或 CI/CD 密钥。正如 Levi 所言,最关键的是权限范围:仅限于单个仓库的智能体令牌"远比为图方便而签发的全组织范围读取权限令牌危险性更低"。
来源信息
来源:The Hacker News
原文链接:https://thehackernews.com/2026/07/public-github-issue-could-trick-github.html
作者:info@thehackernews.com (The Hacker News)

