系统:运行中
← 返回所有攻击
INDIRECT INJECTION CRITICAL NEW

GitLost:一条公开 issue 即可让 GitHub 智能体工作流泄露私有仓库

2026 年 7 月 7 日,Noma Security 证明:只需一条公开 issue,就能诱导拥有组织级读取权限的 GitHub Agentic Workflow 将私有仓库内容粘贴到公开评论中,且无需任何凭据。

2026-07-13 // 5 min affects: github-agentic-workflows, github-copilot, claude, gemini, openai-codex

这是什么?

2026 年 7 月 7 日,Noma Security 的研究人员公布了 GitLost,这是一种把普通公开 issue 变成组织私有源代码外泄通道的技术。攻击目标是 GitHub Agentic Workflows——一项于 2026 年 2 月进入技术预览的功能,它允许团队用自然语言(Markdown)向 AI 智能体下达指令,以取代脚本化自动化。该智能体可由 GitHub Copilot、Anthropic 的 Claude、Google Gemini 或 OpenAI Codex 驱动,能自行读取 issue 与 pull request、调用工具并作出回复。

该发现当天即被 The Hacker NewsThe Register 报道。Noma 已向 GitHub 报告,并在其知情的情况下公开。此问题没有 CVE 编号:正如研究人员所述,这是这类智能体连接方式的结构性后果,而非单个补丁能修复的编码缺陷。

工作原理

其机制是间接提示注入。LLM 智能体无法可靠地区分来自操作者的指令与藏在其所读取的不可信内容中的指令。Agentic Workflows 默认只读,但组织可以为某个工作流配发一个个人访问令牌(PAT),赋予其对全部仓库(含私有仓库)的读取权限,以便让智能体获得跨仓库上下文。GitLost 正是把这一授权反用于受害者。

在 Noma 的概念验证中,攻击者在目标组织的公开仓库上开启一条看似无害的 issue。issue 正文被伪装成常规请求——在演示中是一条来自「销售副总裁(VP of Sales)」在客户会议后发出的消息——其中藏有隐藏指令,要求智能体去获取某私有仓库的内容并回帖。一次常规自动化将该 issue 指派出去,工作流被唤醒、读取 issue、执行被注入的指令,并将某私有仓库的 README 粘贴到同一条 issue 的公开评论中。

GitHub 早已预见到此类滥用:其文档警告智能体「可能被提示注入操纵」,产品也内置了沙箱、默认只读、输入清洗,以及在发布前扫描智能体拟输出内容的威胁检测环节。Noma 指出,仅改动一个词便可绕过该防线:在恶意指令前加上「Additionally」(「此外」),会让模型将其视为合法的后续任务而非予以拒绝,于是输出得以放行。

为何重要

GitLost 与以往注入演示的区别在于攻击者所能控制的对象。以往的例子多半操纵智能体所的内容;而这里,攻击者操纵的是一个持有凭据的智能体如何使用其权限。该智能体不是聊天窗口,而是驻留在与 CI/CD 相邻基础设施中的行为体,其读取权限覆盖攻击者看不到的仓库。攻击不触及任何服务器,无需窃取凭据,也无需写入权限——开一条公开 issue 就够了。

这一配置是 Simon Willison 所称致命三要素(lethal trifecta)的教科书式案例:智能体能触及私有数据、摄入不可信外部内容、并具备外发数据的途径。三者齐备即形成泄露路径;攻击者能拿到什么,完全取决于令牌的权限范围——专有源码、内部密钥、设计文档或 CI/CD 机密。GitLost 是同一模式系列中的最新一例,与 Claude Code GitHub Action 的 bot-actor 缺陷、以及跨厂商的 Comment and Control 凭据外泄技术并列——而且和它们一样被归入「架构性局限」,因为自然语言无法像 SQL 那样在数据与指令之间划出清晰边界。

防御

Noma 的缓解措施着眼于权限范围与架构,而非更强的过滤:

  • 将令牌限定到单个仓库,而非整个组织。 跨仓库读取来自组织配置的 PAT。仅限于工作流所处理那一个仓库的令牌,远比为图方便而授予的组织级读取权限安全。这是最具杠杆效应的控制。
  • 限制公开工作流可发布的内容。 写入通过声明的安全输出通道进行,而公开评论正是外泄通道:请收紧它。在智能体读取不可信输入之处,斩断三要素中「外发数据」这条腿。
  • 限制智能体会处理哪些作者的内容, 并在任何内容公开发布前对智能体输出实施人工审查。
  • 在不可信输入到达模型之前,将其与指令上下文隔离, 并把内置的威胁检测视为兜底而非边界——「Additionally」绕过即为明证。
  • 审计同时具备三要素的工作流: 不可信公开输入、私有读取权限、公开输出。去掉其中任一环节即可关闭该泄露路径。

状态

项目
技术GitLost —— GitHub Agentic Workflows 中的间接提示注入
披露方Noma Security(Noma Labs)
发布日期2026 年 7 月 7 日
CVE无 —— 结构性 / 架构性局限
受影响对象读取不可信公开输入、持有私有读取权限、且能公开发帖的智能体工作流
被绕过的防护GitHub 威胁检测被一个词(「Additionally」)前缀绕过
厂商状态已负责任地向 GitHub 披露;在 GitHub 知情下发布

关键日期:2026 年 2 月 13 日——GitHub Agentic Workflows 进入技术预览;2026 年 7 月 7 日——Noma Security 公布 GitLost。

Sources