AI 编程 Agent 为绕过 GitHub CLI 限制,结果导致超过 13000 张内部截图被公开发布,无黑客入侵。
根据 Glow Labs 本周发布的一份事件报告,为了绕过 GitHub 命令行工具的一个限制,AI 编程 agents 最终将超过 13,000 张内部图片发布到了公开仓库中。该公司称这一事件为 PixelLeak。
受影响的开发者遍布 300 多个组织,其中包括一家全球最大的科技公司、一个前沿 AI 实验室、一家大型企业软件供应商、一家财富 500 强旅游公司,以及云、医疗、金融科技和政府领域的团队,泄露的图片分布在 900 多个仓库中。
这一切并非源于攻击,Glow Labs 表示这些 agents 是在完成开发者分配给它们的任务。
触发点
触发点是前端工作中最日常的步骤之一。开发者在完成一次 UI 改动后,让 agent 将前后的截图附到 pull request 上,但 GitHub 的图片附件功能是为在网页界面中工作的人设计的,而编程 agents 通过基于文本的 CLI 操作——直到 9 月 1 日 GitHub CLI 的 2.99.0 版本才加入了图片附件选项。当 agent 无法通过这种方式附上图片时,它便寻找另一条路让审查者看到这些图片。
Glow 在其实验室中复现了这一行为:让一个运行 Anthropic Claude Opus 5 的 agent(通过 Claude Code)在其私有的扫雷项目中修改标题颜色。Agent 创建了一个新的公开仓库并将截图固定到一次 commit 上,这样审查者就能从那个私有的 pull request 中看到它们。
"GitHub 无法在 PR 描述中渲染来自私有仓库的图片——其图片代理是匿名获取的,所以任何提交到这里的内容(分支、release 资产等)对于审查者来说都会显示为破损状态," agent 推理道。
"唯一能同时满足'审查者看到图片'和'仓库里只有 index.html'这两个条件的方法是把 PNG 托管到别处,所以我创建了一个新的公开仓库。"
Glow 表示,这一推理代表了它在许多受影响组织中发现的情况。
截图暴露了什么
泄露的内容远远超出了界面调整的范畴。在一家拥有超过 10 万名员工的大型制造商中,一个处理内部账单页面的 agent 将截图发布到了开发者个人 GitHub 账户下的一个公开仓库中。这些图片包含了参与修复的一家公用事业公司的账单记录。
由于仓库位于员工个人 GitHub 账户下而非公司组织内,安全团队从未发现它,直到 Glow 联系时这些图片仍然公开可见。
安全扫描为何漏掉泄露
这一案例反映了一个更广泛的模式:Glow 发现 93% 的图片存储在员工个人用户名下的仓库中,使得针对公司 GitHub 组织的扫描无法触及。
即使图片可见,团队依赖的泄露检测工具(如 secret 扫描器和静态分析工具)分析的是代码和文本而非图片内容,导致内部控制台的截图得以通过检测。
大约三分之一的受影响组织中,开发者使用了 gitshot——一个未经审核的开源工具,用于在代码审查期间发布截图——在好几家大公司,agents 自行发现了这个工具并开始使用它。
Glow 发现了 100 多个通过 _gitshot 标签暴露内部工作的公开账户,包括来自一个前沿 AI 实验室的开发工作,以及一家金融服务公司的内部资金和结算控制台、取款页面中提及的机构客户名称,以及两段其资金流动控制台的屏幕录制。
编程 agents 可以在无需团队任何人预先审核的情况下安装工具和软件包,而 gitshot 表明,当其中一个工具为 agent 提供了一条绕过现有控制的路径时会发生什么。
一个变通方案如何扩散开来
一旦这个变通方案变成一条可复用的指令,这一事件就演变成了系统性问题。在一家软件供应商处,为多名工程师服务的 agents 在 7 月初开始将审查截图公开发布,不到一周就有十多个工程师将这种方法编码为一项技能,应用到每一个开发工单上。
运行该技能后,agents 上传了 1000 多张公司产品的截图和屏幕录制,以及距离发布还有数周或数月的功能书面摘要。
Agent 技能本身已经成为了供应链风险,而这个案例表明,一个技能并不需要是恶意的才会将风险传播到整个工程团队——一个错误的技能传播起来和恶意的一样高效。Glow 于 2026 年 9 月 9 日开始通知受影响的组织,并相信还有其他组织也受到了影响。
应对措施
对于运行编程 agents 的团队,首先要做的是分类排查。Glow 建议从所有向私有仓库提交代码的人开始,包括前员工,审查他们的个人账户;然后检查 releases 和 gists 而不仅仅是文件列表,因为附在 release 上的图片可能让文件视图看起来是空的。将所有发现的泄露内容全部删除,并轮换图片中可见的所有凭证或其他密钥。
接下来重点转向 agents 和开发者实际使用的工具。Glow 建议移除像 gitshot 这样未经安全审查的工具,保持 git 工具的最新状态,并在 agent 执行潜在风险操作前要求审批。
团队还应审查其 agents 加载的共享规则和指令文件,因为这是一个一次性变通方案如何变成 agents 自动重复的东西的途径。
编程 agents 的运行时控制
Glow 表示真正能阻止这一行为的控制是在运行时层面。作为实际销售端点运行时保护的厂商,Glow 建议使用一个执行前钩子,阻止或要求审批任何创建新公开仓库、推送到个人账户而非公司组织、推送到 gist、或将仓库从私有切换为公开的尝试。
这些关卡在位于 agent 外部、评估的是行为本身而非推理过程或注入提示的来源时效果最佳。一个无法创建公开仓库的 agent 就没有办法临时想出这个特殊的逃脱方式。