4837 个 GitHub 账号被盗,6 万多个仓库中招:盯上的是 CI 里的密钥

凯叔爱分享 2026-11-13 30 11/13

11 月 10 日中午,有人拿着偷来的 GitHub 账号,开始往 6 万多个代码仓库里塞东西。他们没碰你的代码,目标是 CI 流程。往里面塞一段偷密钥的脚本,跑起来就把仓库里的密钥一锅端。两天后,安全公司 Aikido 把这波攻击捅了出来,起了个名字叫 wfx-loot。数字摆在这:4837 个被盗账号,61764 个仓库收到探测,至少 1806 个仓库里脚本真的跑起来了。

wfx-loot 攻击概念图:GitHub 仓库密钥泄露示意图

这事离普通开发者一点都不远。你在 GitHub 上哪怕只托管一个小项目,仓库里都可能躺着云服务密钥和 API token。CI 一跑,脚本就能把这些东西顺走。更麻烦的是,它偷完还会留后门,换掉密钥都不一定管用。

发生了什么

据 Aikido Security 11 月 12 日披露,攻击从 11 月 10 日 12 点 45 分(UTC)开始。攻击者手里有一批偷来的 GitHub 账号和 token,挨个试哪些仓库有写入权限。确认能写,就先发一个探测 PR,标题写着"docs: dependency audit notes",分支名叫 wfx-docs。Aikido 数了一下,4837 个被盗账号在 61764 个仓库发了探测 PR,其中 10431 个发进了账号主人并不拥有的仓库,靠的是协作者或者组织权限。一个 token 被盗,牵连的是这个人能写的所有项目。

探测只是第一步。确认能写之后,攻击者往工作流文件里塞一段大约 1500 行的 shell 脚本。脚本不藏着掖着,注释写得很全,里面自称 wfx。截至 11 月 12 日,至少 1806 个仓库里这段脚本真的跑起来了。StepSecurity 的观测是,11 月 12 日早上 7 点 40 分,GitHub 上已经有 63000 多个探测 PR,而且每隔几分钟就有新的冒出来。92% 的探测 PR 到报告时还开着,没人关。

脚本偷什么,怎么偷

脚本分四个阶段走。先收集,再提权,然后留后门,最后把东西发出去。先把能拿的都拿走。GitHub Actions 里的 secrets 在列,运行时的 GITHUB_TOKEN 和 OIDC token 在列。云服务的凭证文件在列,SSH 密钥和 shell 历史记录也一样。AI 服务的 API key 也在它的清单上,OpenAI 和 Anthropic 的 key 在列,Cursor 和 Copilot 这类编程工具的凭证同样在内。

拿到手的东西不只用来看。它用 OIDC token 去换 AWS 的会话,GCP 和 Azure 那边也一样。在 AWS 里建长期有效的访问密钥,改 IAM 角色的信任策略,让任何 AWS 账号都能进来。Azure 那边加联合凭证,方便以后再回来。换句话说,它偷完还给自己留了门。

数据往外发的方式很直接。最早的样本往两个 IP 地址发,194.150.166.244 和 18.143.168.96,走 HTTP 明文。11 月 12 日之后的新样本改走 Telegram。Aikido 提醒,没找到这些痕迹不等于安全,因为数据是直接发走的,仓库里不一定留痕。

攻击没钻 GitHub Actions 的空子

攻击用的就是偷来的有效账号和 token,登录方式跟正常开发者一模一样。代码改动进了仓库,CI 按流程自动跑起来,脚本就跟着跑了。防它的办法不在打补丁,在管好账号和 token。

怎么查自己有没有中招

仓库里出现这几样东西就要警惕:

  • 名叫 wfx-docs 的分支
  • 标题是"docs: dependency audit notes"的 PR
  • 提交信息是"ci: refresh build cache"、"chore: add ci helper"或"chore: add dependency audit workflow"
  • 工作流执行记录里缺了号

攻击者跑完会删掉自己的执行记录,留下一个对不上的编号。查的时候注意,Aikido 的原话是,找不到这些痕迹证明不了什么。数据直接发到攻击者服务器上,仓库里可能什么都没留下。保险起见,11 月 10 日前后有陌生 PR 的仓库都值得翻一遍。

中招了怎么办

只换 token 不够。脚本已经在云账号里留了后门,AWS 的长期密钥要查,被改过的 IAM 信任策略要查,Azure 的联合凭证也要查,该吊销的吊销,该重建的重建。GitHub 上的 token 和 secrets 轮换一遍,Actions 的运行日志翻一遍,看看 11 月 10 日之后有没有不认识的执行记录。

还没中招的,现在做三件事也不晚。GitHub 账号开双因素认证,token 只给最小权限,过期时间设短一点。仓库里的 secrets 定期轮换,别一个 token 到处用。CI 日志偶尔翻一翻,陌生的 PR 和分支别急着合,先看一眼改了什么。

跟 10 月那波有关系吗

10 月 GitHub 上出过一波叫 GhostAction 的攻击,手法很像,也是偷 token 往 CI 里塞东西。Aikido 的统计是,10 月那波里中招的账号,这次更容易再中招。100 多个仓库里,wfx-loot 直接被塞进了 GhostAction 留下的工作流文件。不过 Aikido 没把两波归到同一个攻击者,工具、服务器和手法都对不上,偷来的凭证经常在不同团伙之间转手。

相关阅读:点一下"不要再问",数据库密码就上了 GitHub:Claude Code 这次翻车,1122 个仓库中招。同一个教训换了个说法,密钥一旦进了不该进的地方,收拾起来比丢了更麻烦。

你的仓库收到过这种探测 PR 吗?评论区说一声,看看这波到底波及多广。

来源:Aikido Security、Help Net Security、StepSecurity,信息核对时间 2026 年 11 月 13 日。

- THE END -

凯叔爱分享

11月13日09:08

最后修改:2026年11月13日
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论