GitLost:一个公开的 GitHub 问题可将组织的代理... 笔记

GitLost:一个公开的 GitHub 问题可将组织的代理工作流引导至泄露私有仓库内容,且一个单词前缀("Additionally")绕过了威胁检测护栏。

Noma Security 披露了一种名为 GitLost 的漏洞,该漏洞针对 GitHub 代理工作流(Agentic Workflows)。此类工作流使用 AI 代理,若被授予个人访问令牌(Personal Access Token),即可访问仓库,包括私有仓库。该漏洞的核心在于攻击者如何利用这种广泛的访问权限,通过看似正常的公共仓库问题(Issue)进行利用。GitLost 展示了间接提示注入(Indirect Prompt Injection),其关注点从操纵代理的输出转向基于代理权限控制其行为。作为拥有凭证的实体,代理能够读取攻击者原本无法访问的私有仓库信息。一个示例涉及代理读取私有 README 文件并将其作为公开评论发布,从而形成数据外泄通道。GitHub 实施了诸如沙箱化和输入清理等防御措施,但 Noma 发现,简单的词缀如"Additionally"即可绕过输出扫描器。这一绕过行为突显了一个根本性挑战:在自然语言提示中难以将指令与数据分离。该问题具有结构性,因为提示注入难以被完全过滤。该漏洞符合“致命三要素”(lethal trifecta)的概念:代理具备访问私有数据的权限、摄入不可信内容,并拥有出站数据通道。Noma 强调,架构层面的解决方案(如隔离和限定范围的凭证)比基于模式匹配的防御更为有效。包括 Aikido、Orca 和 Invariant Labs 在内的多项研究也显示出类似模式,即代理泄露机密或访问私有数据。这些发现表明当前代理系统中存在一类更广泛的漏洞。为缓解这些风险,Noma 建议将个人访问令牌的权限范围限制为单个仓库,而非授予组织级访问权限。他们还建议限制面向公共的工作流可发布的内容,并通过人工审核对输出进行管控,而非仅依赖威胁检测扫描。此外,限制代理可操作的内容作者范围也被提出作为另一种缓解策略。