Noma Security研究人员发现,攻击者只需在公开仓库创建一个看似正常的issue,无需窃取凭证或获取组织访问权限,就能诱使GitHub Agentic Workflows泄露组织私有仓库内容。若目标组织已授予该Agent跨仓库(包括私有仓库)的读取权限,恶意issue就能引导其将私有内容提取至公开评论中。
Noma将这种技术命名为GitLost。攻击目标是GitHub今年二月推出的公开预览功能Agentic Workflows,该功能允许用户直接在Markdown文件中用自然英语编写指令,由AI Agent自动读取issue和拉取请求、运行工具并自主回复。该功能可基于GitHub Copilot、Anthropic的Claude、Google Gemini或OpenAI Codex运行。
攻击原理剖析
漏洞根源在于间接提示注入这一已知问题:AI Agent无法可靠区分来自所有者的指令与隐藏在其读取内容中的指令。在Noma的PoC中,恶意issue伪装成销售副总裁在客户会议后的常规请求。当自动化流程分配该issue后,Agent便将私有仓库的README文件内容粘贴至公开评论。

GitHub虽已内置防护措施(包括沙箱隔离、默认只读令牌、输入清洗及发布前的威胁检测扫描),但Noma测试发现仅需在恶意指令前添加"Additionally"一词,就能让模型将其视为后续任务而非拒绝项,从而绕过防护。
攻击特性分析
Noma安全研究主管Sasi Levi指出,GitLost的独特之处在于攻击者能控制Agent的权限行为------这不是聊天窗口,而是具有跨仓库读取权限的凭证化执行者。攻击者无需入侵服务器、窃取凭证或获取私有内容写入权限,仅需创建公开issue即可。这种模式符合开发者Simon Willison提出的"致命三要素":可访问私有数据的Agent、接收不可信外部输入、具备数据外泄途径。
行业现状与应对建议
GitLost是近期同类攻击的最新案例。此前Anthropic Claude Code GitHub Action漏洞、Orca Security的RoguePilot攻击,以及Invariant Labs披露的GitHub MCP服务器问题,均证明这是架构级缺陷,无法通过补丁修复。
Noma建议采取以下防护措施:
-
将个人访问令牌权限限定于工作流处理的单一仓库,而非整个组织
-
限制面向公众的工作流发布内容
-
设置Agent响应内容的白名单作者
-
建立人工审核输出机制
GitHub的威胁检测虽能扫描Agent输出,但Noma的单词绕过实验证明过滤机制仅是最后防线。正如Levi强调:在自然语言中,数据与指令不存在类似SQL的清晰界限,因此解决方案应侧重于架构设计------通过隔离、限定权限和分级审核来构建防护体系。在完善边界建立前,任何能读取私有数据、接收不可信输入且可公开发布的Agent,都面临因精心设计的issue导致数据泄露的风险。