GitHub MCP 恶意 agent 流程通过公开 issue 泄露私有仓库数据
Invariant Labs 展示了攻击者如何利用恶意的公开 GitHub issue 引导 GitHub MCP server 上的 agent,将私有仓库数据复制到公开 pull request 中。
事件经过
2025 年 5 月 26 日,Invariant Labs 披露了一起涉及 GitHub MCP server 的攻击事件,并将其称为“有毒 agent 流程”。攻击者在公开仓库中创建一个 issue,并在其中写入针对 agent 的指令。之后,agent 读取未关闭的 issue 时,会接触到攻击者植入的文本并照其执行。
Agent 使用的 token 还可能有权访问仓库所有者的私有仓库。Agent 按照 issue 中的指令,从这些私有仓库中提取数据,并通过公开仓库中的 pull request 发布,任何人都能读取这些数据。
攻击奏效的原因
致命三要素在同一个会话中全部出现:能够访问私有仓库的 token、来自公开 issue 的不可信文本,以及作为数据出口的公开 pull request。每一项单独看都很常见,但三者组合后,任何能创建 issue 的人都可以读取该 token 有权访问的所有内容。
应对措施
- 让 agent 读取公开 issue 时,为其提供仅限该仓库的 token。
- 将公开仓库和私有仓库分别放在不同的 agent 会话中。
- 要求在 agent 于公开仓库中创建 pull request、发表评论或提交 commit 前先获得批准。
- 将 issue 标题、正文和评论视为不可信输入。