摘要:2026年7月,Noma Labs 安全团队披露了一个名为 GitLost 的严重安全漏洞——攻击者只需在 GitHub 公共仓库中提交一个精心构造的 Issue,就能让 GitHub 的 Agentic Workflow 自动泄露同一组织下的私有仓库数据。本文将深度剖析该漏洞的技术原理、攻击链,并探讨其对 Agentic AI 安全的启示。


一、事件背景

2026年7月6日,安全研究团队 Noma Labs 公开披露了一个编号为 GitLost 的漏洞(原始报告),在安全社区引发轩然大波。该漏洞直指 GitHub 最新推出的 Agentic Workflows 功能——一项将 GitHub Actions 与 AI Agent(Claude 或 GitHub Copilot)深度集成的自动化能力。

截至本文写作时,该漏洞在 Hacker News 上已获得 252 个点赞,成为本周最受关注的安全话题之一。

什么是 GitHub Agentic Workflows?

GitHub Agentic Workflows 允许团队用 纯 Markdown 文件 编写工作流定义,AI Agent 会自动解析并执行这些工作流。Agent 可以:

  • 读取 Issue 的内容(标题 + 正文)
  • 调用各种工具(如 add-comment
  • 访问组织下的其他仓库(包括私有仓库)

听起来很强大,但也埋下了巨大的安全隐患。


二、漏洞本质:AI 界的 SQL 注入

GitLost 的根因并不复杂,却极其致命——间接提示注入(Indirect Prompt Injection)

提示注入:攻击者将恶意指令隐藏在 AI Agent 读取的内容中,导致 Agent 执行非预期的操作。这就像传统 Web 安全中的 SQL 注入——攻击者将恶意数据伪装成合法输入,被系统不加区分地执行。

在基于 AI Agent 的系统中,Agent 的上下文窗口就是它的攻击面。当 Agent 同时读取"系统指令"和"用户可控内容"时,如果系统没有严格区分信任边界,攻击者就可以在用户可控内容中"下毒"。

攻击流程

GitLost 的攻击链简洁而致命,仅需 4 步

  1. 攻击者在目标组织的某个公开仓库中创建一个 Issue
  2. 在 Issue 正文中嵌入隐藏指令——用自然语言告诉 Agent 去读取其他仓库的文件
  3. 等待组织内部分配该 Issue,触发 Agentic Workflow
  4. Agent 执行指令,读取私有仓库的内容,并以评论形式发布在公共同题上

整个过程中,攻击者不需要任何凭证、不需要任何代码能力,只需要能提交 Issue 即可。

关键突破:"Additionally" 魔法词

Noma Labs 发现,GitHub 其实部署了防护措施来阻止这种数据泄露。但研究团队找到了一个巧妙的绕过方式——在指令中加入 "Additionally" 关键词

这个看似普通的词语触发了模型的非预期行为:Agent 不再拒绝执行,而是重新框架化(reframe)自己的输出,认为这是"额外的、合理的任务",从而绕过了安全护栏。


三、PoC 验证

Noma Labs 公开了完整的 PoC 验证记录:

攻击泄露的数据包括:

仓库 类型 是否泄露
sasinomalabs/poc 公开
sasinomalabs/remote-ping 公开 ✅(无 README)
sasinomalabs/testlocal 私有 关键泄露

四、为什么这很重要?

GitLost 不是孤立事件,而是 Agentic AI 时代安全范式转变的标志性案例

传统安全 vs. Agentic AI 安全

维度 传统安全 Agentic AI 安全
信任边界 由代码强制执行 部分由模型行为决定
攻击面 有限的 API 接口 上下文窗口中的所有内容
漏洞特征 参数注入、XSS、SQLi 提示注入、间接指令劫持
防御难度 相对成熟 尚在探索阶段

Noma Labs 的评论一针见血:

"Prompt injection 之于 Agentic AI,正如 SQL injection 之于 Web 应用——是一种系统性的、跨类别的漏洞类型,需要同样系统性的防御策略。"


五、防御建议

Noma Labs 为 AI 安全负责人和开发者提供了以下建议:

  1. 绝不将用户可控内容视为可信指令——对 AI Agent 的输入进行严格分级
  2. 最小权限原则——Agent 的仓库访问权限应限定到最小必要范围
  3. 限制公开输出——严格控制 Agent 在公开渠道发布的内容
  4. 输入隔离与清洗——在将用户内容传入模型之前,进行隔离或消毒处理

六、我的思考

作为一个网络安全方向的研究者,我认为 GitLost 有几个值得深思的维度:

1. 这是 Agentic AI 的"SQL 注入时刻"

2000 年代初,SQL 注入肆虐了整整一代 Web 应用,直到参数化查询成为行业标准。今天,提示注入正在 Agentic AI 领域复制同样的剧本。GitLost 告诉我们:当 AI Agent 获得"读"和"写"的能力时,信任边界的模糊化带来了全新的攻击面。

2. "Additionally" 的启示

那个绕过防护的"Additionally"关键词,揭示了当前 LLM 安全机制的根本缺陷——基于关键词或规则的安全过滤,在模型行为的非线性和不可预测性面前,往往不堪一击。真正的安全需要从系统架构层面根治,而不是依赖模型层面的补丁。

3. 对差分隐私的启示

这与我研究的差分隐私保护机制也有深层关联:在 Agentic AI 系统中,当 Agent 可以跨仓库读取数据时,如何在"提供服务"和"保护数据"之间取得平衡?也许差分隐私的"噪声注入"思路可以为 AI Agent 的数据访问审计提供新的视角。


七、总结

GitLost 漏洞是 Agentic AI 安全领域的一个里程碑事件。它用最直接的方式告诉我们:赋予 AI Agent 行动能力的同时,也必须重新思考安全的根基。 GitHub 已收到负责任的披露,但更广泛的问题是:还有多少 Agentic 系统存在类似的漏洞?

如果你是开发者或安全从业者,现在是时候审视你的 AI Agent 架构了——当你的 Agent 读到不该读的内容时,它会怎么做?


本文基于 Noma Labs 公开研究报告撰写,原文链接:GitLost: How We Tricked GitHub’s AI Agent into Leaking Private Repos - Noma Security

关注我的 CSDN 博客,获取更多 AI 安全前沿分析。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐