GitHub智能体遭提示注入攻击,私有仓库内容被公开泄露

安全公司Noma Research披露了一种名为"GitLost"的攻击方式:攻击者通过向公开仓库提交精心构造的GitHub Issue,可触发提示注入攻击,诱使GitHub AI代理读取同组织内的私有仓库内容并公开发布。该攻击无需窃取凭证或利用软件漏洞,核心问题在于AI代理将用户输入视为可信指令。研究人员建议对AI代理实施最小权限控制,并将Issues、PR等视为不可信输入。

根据安全公司Noma Security的最新研究,一种提示注入攻击能够诱骗GitHub预览版智能体工作流(Agentic Workflows)从私有代码仓库中提取内容并公开发布,这一发现揭示了企业在将AI智能体部署于具有特权访问权限的软件开发环境时所面临的更深层安全风险。

Noma Security在一篇博客文章中详细描述了这一被命名为"GitLost"的攻击方式:未经身份验证的攻击者只需向公开代码仓库提交一个经过精心构造的GitHub Issue,即可触发漏洞。若AI智能体拥有对同一组织内私有仓库的读取权限,便可能将敏感信息提取出来,并以公开评论的形式发布。

GitHub智能体工作流将GitHub Actions与Claude或GitHub Copilot等AI模型相结合,允许开发者通过Markdown定义工作流程,同时让AI智能体读取Issue、调用工具并代为执行相关任务。

Noma研究员Sasi Levi在文中写道:"如果GitHub智能体读取了它本不应信任的内容,会发生什么?答案就是一次典型的间接提示注入攻击——这类攻击能悄无声息地将私密数据泄露给互联网上的任何人。"

Noma指出,此次攻击无需依赖窃取的凭证、恶意软件或软件漏洞,攻击者只需在提交到公开仓库的GitHub Issue正文中嵌入隐藏指令即可。由于AI智能体将Issue内容视为可信指令而非不受信任的输入,它便会主动访问私有仓库,并将内容回传至公开Issue中。

Levi写道:"GitLost漏洞的根源,在智能体AI系统中其实并不陌生,那就是提示注入。在此案例中,任何恶意行为者都可以创建一个GitHub Issue,并在正文中用普通英语隐藏指令,GitHub的智能体便会照单全收。"

为验证这一攻击,研究人员构造了一个看似普通的GitHub Issue,要求更新文档。工作流一旦被触发,AI智能体便从私有仓库中提取了README文件,并将其内容发布在公开可见的评论中。研究人员还发现,仅需对措辞稍作修改,便能绕过GitHub基于提示的防护机制,使智能体执行此前被拒绝的指令。

截至发稿时,GitHub尚未回应置评请求。

Noma表示,GitLost所揭示的是AI智能体在架构层面面临的普遍挑战,而非GitHub独有的安全缺陷。Levi写道:"问题不在于GitHub的AI智能体安全性特别薄弱,而在于任何能够同时访问不受信任的外部内容和敏感内部资源的AI智能体,一旦缺乏明确的信任边界约束,都可能成为两者之间意外的数据通道。"

独立网络安全研究员、红队测试人员Vibhum Dubey认为,这一发现所揭露的问题远不止于提示注入本身。"这不是抽象意义上的提示注入,而是GitHub在智能体权限机制尚不成熟之前就仓促上线了智能体功能,"Dubey说,"此漏洞表明,AI智能体运行的是服务账户权限模型,而非用户权限模型。这是安全团队在将大语言模型纳入攻击向量考量之前就已形成的架构假设。"

Dubey认为,提示注入本身甚至是次要的。"真正危险的是,信任边界存在于GitHub的数据模型中,却完全不存在于智能体的执行上下文里,"他说,"智能体并不'知道'某个仓库是私有的,它只看到'可访问'。随着越来越多的组织部署智能体,这类隐形权限漏洞正在不断积累。"

Dubey建议,企业应从根本上重新审视AI智能体的权限授予方式,而不仅仅将其视为监控层面的挑战。他提出三项具体修复措施:为智能体设置明确的仓库白名单,而非赋予宽泛的服务账户访问权限;在所有用户输入(包括提交信息、PR描述和Issue内容)进入大语言模型之前进行验证;同时准备好紧急熔断机制。"大多数团队知道如何禁用一个已泄露的API密钥,但你能快速禁用一个失控的智能体吗?"

Dubey表示,GitLost清楚地说明,一旦AI智能体被赋予广泛的组织级访问权限,就可能有效地演变为一种内部威胁。"GitLost的高明之处不在于它欺骗了AI,而在于它将GitHub默认服务账户可信这一假设武器化了,"他说,"智能体本就是为了绕过人工判断、自主运行而构建的,这恰恰是它们危险所在——我们在将跨边界操作自动化的那一刻,就已经将其视为常态了。"

Noma还建议,企业应落实最小权限访问控制,限制AI智能体的跨仓库访问能力,并将GitHub的Issue、Pull Request和评论一律视为不受信任的输入内容加以处理。

Q&A

Q1:GitLost攻击是如何实现私有仓库内容泄露的?

A:攻击者只需向一个公开的GitHub仓库提交包含隐藏指令的Issue,当AI智能体读取该Issue时,会将其中的指令视为可信任命令并执行。如果该智能体同时拥有同组织内私有仓库的读取权限,就会将私有仓库中的内容(如README文件)提取出来,并以公开评论的形式发布,从而造成信息泄露。整个过程无需窃取凭证或利用任何传统软件漏洞。

Q2:GitHub智能体工作流为什么容易受到提示注入攻击?

A:GitHub智能体工作流将GitHub Actions与Claude或GitHub Copilot等AI模型结合,允许智能体自主读取Issue、调用工具并执行任务。问题在于,智能体无法区分可信的系统指令与用户提交的不可信内容,同时其执行上下文中缺乏信任边界约束,智能体只看到资源"可访问",而不知道某个仓库是否为私有。这种架构设计使得恶意输入可以轻易被当作合法指令执行。

Q3:企业应该如何防范AI智能体面临的提示注入风险?

A:安全研究人员建议采取三项核心措施:第一,为AI智能体配置明确的仓库白名单,避免赋予宽泛的服务账户访问权限;第二,对所有用户输入(包括Issue内容、PR描述、提交信息等)在进入大语言模型之前进行严格验证,将其视为不受信任的内容处理;第三,建立紧急熔断机制,确保在智能体出现异常行为时能够迅速将其禁用。此外,还应落实最小权限原则,限制智能体的跨仓库访问能力。

来源:InfoWorld

0赞

好文章,需要你的鼓励

2026

07/10

19:42

分享

点赞

邮件订阅