安全研究人员警告,GitHub正遭遇一场大规模协同攻击:攻击者利用被盗的有效令牌,向超过6.6万个公开仓库推送名为WFX的窃密脚本,其中部分仓库属于《财富》100强企业等大型机构。
据Aikido Security统计,自周二以来,恶意工作流已确认运行并外泄凭据至少1970次,这一数字仅涵盖公开可见的案例,实际数量可能更高。攻击目前仍在持续。
攻击如何展开
这轮攻击的入口是窃取来的有效 GitHub 令牌。攻击者用这些令牌修改仓库已有的 GitHub Actions 工作流,或直接新增工作流,把名为 WFX 的恶意 shell 脚本注入其中。GitHub Actions 属于 CI/CD 流程,开发者每次提交代码变更时都会自动运行,恶意脚本因此获得在构建机器上执行的机会。
在注入之前,攻击者会先做一次试探:向每个目标仓库提交标题为 dependency audit notes 的拉取请求,内容本身不产生任何作用,只是用来确认该令牌是否具备写入仓库的权限。StepSecurity 的研究人员指出,这类拉取请求对每个目标仓库都完全相同,一旦出现,就说明发起它的账号已被攻陷,即使后续没有其他动作。
只有在令牌权限足够、且仓库配置允许工作流运行时,僵尸网络才会继续推送恶意工作流。Aikido Security 表示,约六分之一的试探请求发往账号本身并不拥有的仓库,说明令牌持有者拥有协作者或组织层面的访问权限。
确认外泄与波及范围
攻击仍在持续,攻击者至少动用了 4,800 个被劫持的 GitHub 账号,向超过 6.6 万个公开仓库推送窃密工作流。
被攻陷的账号中,有用户隶属于《财富》100 强中的大型机构,也有用户拥有对 Nextcloud、WebdriverIO、美国总务管理局以及法国 beta.gouv.fr 相关仓库的访问权限。研究人员说明,这些账号具备向上述组织仓库推送代码的权限,但这并不必然意味着恶意工作流已在这些仓库中运行。私有仓库同样受到影响,企业应检查 .github/workflows/ 目录下是否出现异常的工作流文件。
StepSecurity 在 nextcloud/docker、webdriverio/webdriverio、juejin-cn/repo-data、ipfs-shipyard/js-ipld-fixtures 等多个仓库中发现了恶意提交。Aikido 还提到,约 92% 的试探性拉取请求仍处于打开状态,说明多数仓库所有者尚未察觉。
WFX脚本窃取什么
WFX 是一个约 1,500 行的单一 shell 脚本,目标是构建机器上能找到的一切凭据:GitHub 密钥与令牌,AWS、Azure、Google Cloud 等云服务以及 OpenAI、Anthropic 等 AI 服务的密钥,shell 历史记录,以及各类 .env、.pem、.p12、.jks、.kdbx 和 kubeconfig 文件,还包括位于常见路径下的其他凭据文件。
除凭据外,脚本还会复制项目源代码、最新提交记录和近期的工作流产物。收集到的数据被打包成单个 gzip 压缩包外传。Aikido 指出,该恶意软件不只是抓取 CI 密钥,而是被设计用于横向转移:铸造云令牌、改写信任策略、创建联邦访问,使一份泄露的 GitHub 凭据变成进入受害者云环境的立足点。
攻击范围之广已波及软件供应链。恶意脚本已经出现在软件包中,数十个被攻陷的用户似乎在其他生态系统中发布软件包。
隐蔽与持久化手法
WFX 有多种部署方式:最常见的是修改已有工作流,也可以向工作流调用的现有 shell 脚本追加内容、新增工作流,或添加隐藏的辅助脚本。GitHub 搜索显示,带有 ci: refresh build cache 提交信息的提交已超过 28,000 个,攻击者用这条信息来更新已有工作流。以 nextcloud/docker 仓库为例,窃密代码被追加到该仓库自身工作流所调用的 update.sh 脚本中。
为掩盖痕迹,工作流一旦启动,攻击者就会推送一次回滚提交(信息为 ci: restore,有时随后还有 ci: cleanup),并删除工作流运行记录及其日志。
在持久化方面,该恶意软件具备三种机制。攻击者还在不断调整工具,较新版本已开始通过 Telegram 而非攻击者控制的 IP 地址回传窃得的数据。StepSecurity 还发现,部分用于攻击的失窃令牌是签发给 Fly.io GitHub App 的。研究人员解释,当用户把 GitHub 账号连接到 Fly.io 时,GitHub 会向该应用签发令牌,攻击者利用这些令牌,就能以该应用乃至该用户的身份行事。
开发者应如何应对
研究人员建议开发者排查失陷迹象:检查仓库工作流是否被改动或新增,留意标题为 dependency audit notes 的拉取请求,以及 ci: refresh build cache、ci: restore、ci: cleanup 等提交信息。发现异常后应保护受影响账号,并撤销任何可能已泄露的凭据和密钥。
StepSecurity 已在其公告中发布详细处置指引。由于私有仓库同样在受影响范围内,企业需要主动检查 .github/workflows/ 目录,而不能只依赖公开可见的统计数字来判断自身是否被波及。
要点
- 攻击者使用至少4800个被劫持的GitHub账号
- 恶意工作流被推送至超过6.6万个公开仓库
- 已确认约1970起凭据外泄的公开案例
- WFX脚本约1500行,可窃取云与AI服务密钥
- 部分被盗令牌由Fly.io GitHub App签发

正在读取登录状态…
暂无讨论,说说你的看法吧