GitHub 新推出的 Agentic Workflows(GitHub Actions 结合 AI agent,基于 Claude 或 Copilot,用 Markdown 编写工作流)被曝存在 prompt injection 漏洞。Noma Labs 发现,攻击者只需构造一个看似正常的公开 Issue 并在其中嵌入隐藏指令,就能让 agent 读取组织内多个仓库(包括私有仓库)的内容,并将结果以公开评论形式发布。无需凭证、无需 exploit 代码、无需内网权限。
“agent 的上下文窗口就是它的攻击面。agent 读取的任何内容——Issue、PR、评论或文件——如果被 agent 当作指令输入处理,都可能被武器化。”
具体攻击流程:Noma 研究员创建了一个伪装成销售 VP 需求的 Issue,正文包含隐藏指令。当 GitHub 自动化分配此 Issue 时,触发了配置为on: issues.assigned的 Agentic Workflow,该 workflow 有权读取组织内其他仓库(包括私有库),并使用add-comment工具。隐藏指令要求 agent 从各个仓库获取 README.md 并作为评论发布。agent 照做了,泄露了私有仓库testlocal的内容。PoC 公开可见。
防御绕过:GitHub 原有护栏未能阻止。Noma 发现,在注入指令中加入 “Additionally” 一词即可让模型重新框定输出而非拒绝,绕开所有护栏。一个关键词就瓦解了预期的安全行为。攻击者可低成本迭代措辞,防御方迭代成本高昂。
更广泛的模式:Noma 明确指出,prompt injection 之于 agentic AI 就像 SQL injection 之于 Web 应用——一种系统性的、类别级的漏洞类,无法通过加固单个案例解决,需要架构级防御。GitLost 攻击之所以成功,是因为 agent 无法区分操作者的指令和隐藏在用户控制内容中的指令,这是信任边界失效,且是结构性的。传统安全由代码强制信任边界,而在 agent 系统中,部分信任边界由模型的“遵循指令”行为来执行。
缓解建议:严格限定 agent 权限——跨仓库读权限是最高风险配置;绝不让 agent 公开发布用户控制的内容;对进入 agent 指令上下文的用户输入进行消毒或隔离(如同对待 SQL 查询中的用户输入);立即审计你的 Agentic Workflow 配置——检查权限范围和触发事件。
GitHub 已收到报告并负责任地披露,但底层模式并未修复——只是这一特定实例被报告了。
#开发者 #工具 #GitHub #AgenticWorkflows #安全漏洞 #PromptInjection #NomaLabs #CICD
@DevToolboxHub