黑客入侵 4,800 个 GitHub 账户窃取云凭据
- 浏览次数 262
- 喜欢 0
在这场被称为 'wfx-loot' 的攻击活动中,数万个 GitHub 仓库成为攻击目标,攻击者利用恶意工作流窃取 GitHub Actions 密钥和云凭据。
尽管并非所有仓库都运行了载荷,研究人员确认该威胁行为体从至少 1,835 个目标窃取了密钥。
该威胁行为体利用数千个被入侵的 GitHub 账户,对这些账户有权访问的仓库发起 pull request,测试它们是否拥有足够的写权限来注入恶意代码。
部分被入侵的账户属于 Fortune 100 组织、美国总务管理局、法国政府、Nextcloud 和 WebdriverIO。
据应用安全公司 Aikido 的研究人员称,其中约 50 个账户似乎在其他开源软件生态系统和包索引(如 npm、PyPI、Go、crates 和 Packagist)上拥有发布权限。
攻击细节
Aikido 表示,wfx-loot 攻击活动始于 11 月 10 日约 12:45 UTC,当时攻击者使用来自 4,837 个被入侵账户的被盗 GitHub 凭据探测了 61,764 个仓库的写权限。
该威胁行为体发起了标题为 'docs: dependency audit notes' 的 pull request,伪装成依赖审计笔记。
Aikido 报告称,这些 pull request 中有 92% 至今仍处于打开状态,这表明合法的仓库所有者并未注意到该活动。
随后,他们通过修改现有的 GitHub Actions 工作流、在短生命周期分支上添加新工作流,或植入 npm install 钩子,投递了一个 1,500 行的凭据窃取 shell 脚本。
该脚本试图收集以下数据:
- GitHub Actions 和变量、工作流的 GITHUB_TOKEN、OIDC 以及 Actions runtime 令牌。
- AWS、Azure 和 Google Cloud 的云凭据,包括通过自托管 runner 上的实例元数据暴露的凭据。
- 来自 Git、SSH、GPG、Docker、Kubernetes、npm、PyPI、Vault 和 Terraform 的开发者和基础设施凭据。
- OpenAI、Anthropic、Gemini、Hugging Face、Cursor 和 GitHub Copilot 的 AI 服务与开发者工具凭据。
- 其他密钥来源包括环境变量、.env 文件、私钥、keystore、shell 历史、进程内存、仓库文件和最近提交,以及工作流 artifact。
该脚本还支持云权限提升,通过将 GitHub OIDC 令牌交换为临时的 AWS、Azure 和 GCP 云会话。
在 AWS 中,它可以进一步链接仓库中存在的其他 IAM(身份与访问管理)角色,"以为 IAM 用户创建长期凭据"。它还使用收集到的服务账户凭据在 GCP 中冒充身份。
Aikido 指出,其能力还包括在权限允许的情况下建立持久访问,例如创建长期凭据或修改云身份与信任策略。
该脚本将收集到的数据压缩成 tarball,并通过 HTTP POST 外传至攻击者控制的两个端点之一。
在最后阶段,攻击者迅速还原了他们的更改,并删除了工作流运行记录和日志。Aikido 表示,这一切在不到一分钟内完成。
自动化发布将载荷带入了 Packagist 的 digitalelvis/neuronai-studio 3.14.3,以及 Go 模块 github.com/onuragtas/docker-env 的两个版本(v1.0.278 和 v1.0.280)。
研究人员认为,该威胁行为体的主要目标是窃取 CI 密钥,而软件包发布只是自动化发布的副产品。
研究人员还发现了与 2025 年 GhostAction 攻击活动的某些重叠之处。
建议仓库所有者查找 'wfx-docs' 分支、探测性 pull request,以及工作流运行编号中的缺口。
在确认载荷已执行的情况下,受影响工作流可用的所有密钥和云角色均应视为已泄露,并立即进行轮换。