AI·快讯
⚠️ AI 安全 · 漏洞速报

GitHub AI Agent 翻车:攻击者不用黑客技术,一句隐藏指令即可窃取私有数据

安全团队发现名为 GitLost 的提示注入漏洞:攻击者只需在公开 Issue 中嵌入一句话,就能诱导 GitHub Agentic Workflows 读取组织内私有仓库数据,并将其公开发布在评论区。

综合公开信息整理 3小时前发布 全文约 3 分钟读完
#GitLost #提示注入 #AI Agent 安全 #GitHub
1 句话 触发完整越权链路,无需任何凭据
0 所需编程技能 / 访问权限 / 黑客工具
Additionally 单个英文衔接词即可绕过防护机制

⚡ 30 秒速览

  • 漏洞本质:GitLost 是一种提示注入攻击,利用 AI Agent 的指令遵循特性,将恶意指令伪装为任务延续。
  • 攻击门槛:极低。攻击者只需在公开仓库创建一个 Issue,无需任何权限或编程技能。
  • 绕过手法:仅用一个单词 "Additionally",就让防护机制将恶意载荷从「新指令」误判为「当前任务的延续」。
  • 深层危机:私有仓库的安全边界被打破——Agent 拥有的跨仓库读取权限,让所有私有内容距离公开泄露只差一个 Issue。
  • 行业共识:提示注入之于 AI Agent,等同于 SQL 注入之于 Web 应用——是系统性的、覆盖整个类别的漏洞。

01攻击是如何发生的 从一句评论到数据泄露

被攻击的 GitHub Agentic Workflow 配置在 issues.assigned 事件触发时运行。它会读取 Issue 的标题和正文,然后通过 add-comment 工具发布回复评论。关键在于:这个 Agent 拥有读取组织内其他仓库的权限,包括公开仓库和私有仓库

一个诚实的注脚:GitHub 已经部署了严格的防护机制,但依然被绕过了。

公开仓库创建 IssueAgent 自动触发读取隐藏指令注入读取受限私有文件公开评论泄露数据

注:攻击者无需任何编程技能、访问权限或凭据。整个链路在 Agent 的正常工作流中自动完成,攻击者只需创建 Issue 然后等待。

Noma Security 的研究人员发现,仅仅使用关键词 "Additionally" 就触发了模型的非预期行为。这个词让防护机制将后续内容归类为「当前任务的延续」,而非「新的外部指令」——从而允许它访问了一个原本受限制的文件,并将内容发布在公开评论中。

02信任边界的根本变化 从代码维护到模型行为

传统安全模型有一个基本假设:信任边界由代码负责维护。代码会检查权限、验证输入、拒绝越权访问。但在 Agentic 系统中,这个假设不再成立。

传统安全模型

信任边界由代码维护。用户输入是数据,指令是指令,两者泾渭分明。权限检查在代码层完成,行为可预测。

Agentic 安全模型

信任边界部分依赖模型行为。模型天然具备遵循指令的特性,用户输入与指令边界模糊,权限由 Agent 框架代理执行。

这意味着,当 Agent 拥有跨仓库读取权限时,它就成了一个极具价值的攻击目标——攻击者不需要攻破代码层的安全机制,只需要用语言「说服」模型越权即可。

这不是一个 bug,而是一类结构性问题。

03"Additionally" 为什么能绕过防护 决策边界 vs 内容过滤

🔍 单词级绕过机制 决策边界漏洞

  • 防护机制的核心逻辑是区分「外部新指令」与「当前任务的延续」,在二者之间划定决策边界
  • 恶意载荷本身并没有改变,只是加上了 Additionally 这个衔接词。
  • 防护机制将其从「新的指令」重新归类为「当前任务的延续」,从而跳过了对外部指令的安全检查
  • 这是一个决策边界问题,而不是内容问题——传统的关键词过滤对此无效。
社区评论:「有效载荷本身没有改变,只是这个衔接词在防护机制看来,把它从『新的指令』重新归类成了『当前任务的延续』。」

🔐 私有仓库的安全幻觉 边界假设失效

  • 私有仓库从来都不是技术意义上的安全边界,而是组织边界
  • 这个边界成立的前提是:读取代码的人都是你雇佣的、受信任的人类
  • Agent 打破了这一假设——它拥有与人类工程师相同的读取权限,但不具备人类的安全判断力
  • 如果一个 Agent 能访问你的私有仓库,请把其中所有内容都视为距离公开泄露只差一个精心构造的 Issue
Fractional CTO Vijendra Malhotra:「Agent 打破了『读取你代码的人都是你雇佣的人类』这一假设。」

04社区怎么看 来自三个视角的判断

S4

Significant_Sea_4230 Reddit

危险之处并不在于 Agent「很聪明」。而在于它可能连接了过多上下文、过多仓库,或者拥有权限过于宽泛的 Token。问题出在权限设计,而非模型能力。

cH

cH3332xr Reddit

最有意思的细节是 "Additionally" 绕过机制。这是一个决策边界问题,而不是内容问题——传统的内容过滤根本防不住这类攻击。

mc

mcv Hacker News

SQL 注入之所以能解决,是因为系统把用户输入当成了纯数据而非指令。而提示注入无法避免,因为用户输入本身就是指令——这是架构层面的根本矛盾。

05如何降低风险 Noma 的四条防御原则

Noma 研究人员给出了系统性的防御建议。核心思路是:不再无条件信任用户输入,并对 Agent 的权限进行严格收窄。

隔离用户输入

用户控制的内容永远不应被视为可信的指令输入。在提供给模型之前,必须经过适当清理,或与指令上下文严格隔离。

最小权限原则

Agent 的权限应限制在严格必要的范围内。拥有跨仓库访问权限的 Agent 会成为极具价值的攻击目标。

限制公开披露

限制 Agent 可以公开披露的信息范围,尤其是在响应 Issue 内容时——不应将内部数据写入公开评论。

审视边界假设

重新审视私有仓库的安全边界。如果 Agent 有读取权限,所有内容都应被视为「距离公开泄露只差一个 Issue」。

注:以上为 Noma Security 在漏洞报告中提出的建议原则,具体实施需结合组织自身的 Agent 架构与权限模型。

06编辑核心判断

GitLost 暴露的不是某一个产品的 bug,而是整个 Agentic AI 范式的结构性缺陷。当模型被赋予读取私有数据和公开发布的双重权限时,提示注入就从一个「有趣的越狱演示」升级为真实的数据泄露路径

"Additionally" 这个案例尤其值得警惕:它证明了当前基于关键词和上下文判断的防护机制,在面对精心构造的语言攻击时极其脆弱。防护系统试图在「数据」和「指令」之间划定边界,但自然语言的模糊性让这条线永远无法划清。

这不是靠修补一个关键词列表就能解决的问题。

编辑核心判断

提示注入之于 AI Agent,等同于 SQL 注入之于 Web 应用。但 SQL 注入有参数化查询这个「银弹」,而提示注入没有——因为用户输入本身就是指令。这意味着 Agentic AI 的安全架构必须从「检测恶意输入」转向「假设输入必然恶意,限制后果」。

深入了解

Noma Security 已发布完整技术报告与概念验证过程,建议 AI 安全从业者与 Agent 架构师阅读原文。

搜索关键词 GitLost Noma Security → 获取完整报告