GitLost:我们欺骗了GitHub的AI代理泄露私人仓库
摘要:Noma Labs发现了GitHub新推出的Agentic Workflows中的一个关键提示注入漏洞,该漏洞允许未经身份验证的攻击者通过在与私人仓库同属一个组织的公共仓库中发布一个精心构造的GitHub问题,悄悄提取私人仓库的数据。Noma Labs将该漏洞命名为GitLost。 https://noma.security/wp-content/uploads/GitLost-full-video-1.mp4 介绍 GitHub最近推出了GitHub Agentic Workflows,将GitHub Actions(GitHub用于响应仓库事件执行任务的自动化系统)与Claude或GitHub Copilot支持的AI代理结合在一起。GitHub Agentic Workflows允许团队用简单的Markdown编写他们的GitHub工作流,而GitHub代理读取问题、调用工具并自己作出响应。作为一名具有安全开发背景的漏洞研究人员,我在此发布后,第一个想到的问题是基本而简单的:当GitHub代理读取一些它不应该信任的内容时会发生什么?答案是教科书式的间接提示注入攻击,这种攻击悄悄地将私人数据发送给互联网上的任何人。提示注入是一种攻击类型,攻击者在AI代理读取的内容中隐藏恶意指令。该内容导致代理遵循这些隐藏的指令,而不是其操作者意图的指令。 什么是GitHub Agentic Workflows? GitHub Agentic Workflows允许团队使用自然语言自动化与代码仓库的交互。工作流存储在Markdown(.md)文件中,编译成YAML(常见的配置文件格式)、扩展名为.yml的Actions文件,并通过具有可配置权限的AI代理运行。GitHub代理可以读取问题、调用工具,并访问组织中的其他仓库。 GitLost漏洞概述 GitLost漏洞的根本原因是,目前在代理AI系统中都很熟悉的:提示注入。在大多数代理提示注入攻击中,代理将错误的内容视为可信的指令源,从而允许自己被误导或滥用。这发生在系统未能在系统级指令和不可信用户数据之间保持严格的信任边界时。在这种特定情况下,任何恶意行为者都可以创建一个GitHub问题,并在问题主体中隐藏用简单英语编写的命令,GitHub的代理会遵循这些命令。 Noma Labs发现的易受攻击的GitHub Agentic Workflow配置为: 在GitHub的issues.assigned事件上触发工作流 阅读问题的标题和正文 使用add-comment工具回复评论 在组织内的其他仓库(公共和私人)中具有读取访问权限 要利用此漏洞,攻击者不需要任何编码技巧、访问权限或凭据。所需的只是打开一个属于使用GitHub Agentic Workflow设置的组织的公共仓库的问题,并等待。 攻击流程 让我们来看看Noma Labs漏洞研究人员成功实施的确切攻击流程:首先,他们创建了一个看似无辜的GitHub问题,这个问题由一名销售副总裁在与客户会后提出的一个合理请求组成,如下所示:在这个特定示例中,当问题被分配时,工作流动作被触发,但我们的测试确认它在其他GitHub工作流动作中也同样有效。 然后,在GitHub自动化分配了该问题后,一个事件触发的工作流导致代理从poc(公共)和testlocal(私人)仓库中提取README.md的内容。最后,GitHub代理将这些内容作为公共评论发布在公共仓库中的问题上,任何人都可以访问并阅读。 “附加”的利用 GitHub已经采取了严格的保护措施以防止这种情况的发生,但他们未能按照预期保护仓库。像攻击者一样反复测试GitHub的各种变体,并添加关键词“Additionally”,触发了模型的意外行为,导致其重新构建输出而不是拒绝它。基本上,通过欺骗模型,我能够确保GitHub的保护措施未按预期工作,从而未能阻止数据泄露。 https://noma.security/wp-content/uploads/github_agentic_workflows.mp4 漏洞概念证明 为了实现完全透明,Noma Labs确认的发现,包括我们的工作流重现和实时证据,可以在这里找到: 工作流运行:https://github.com/sasinomalabs/poc/actions/runs/23909666039 问题:https://github.com/sasinomalabs/poc/issues/153 泄露的数据包括以下内容的README.md: sasinomalabs/poc(公共仓库) sasinomalabs/remote-ping(公共仓库,未确认README) sasinomalabs/testlocal(私人仓库) 这很重要 GitLost完美地展示了每个组织在使用代理AI时面临的一项基本安全挑战。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡