窃取凭据的 GitHub Actions 工作流被植入数万个仓库
- 浏览次数 238
- 喜欢 0
网络安全研究人员披露了一场持续进行的凭据窃取活动的细节,该活动已入侵两个知名开源维护者账户,将一个恶意工作流推送到超过 340 个仓库。
"攻击者利用 18,400 星游戏引擎 pyxel 的作者 Takashi Kitao 的账户,从 UTC 时间 13:20 开始将一个恶意工作流推送到 27 个仓库," StepSecurity 表示,"八小时后,Uber 的 athenadriver 原作者 Henry Wu(henrywoo)的账户被用来在 16 分钟的时间窗口(UTC 时间 21:10–21:26)内将同一工作流推送到 318 个仓库。"
截至 2026 年 10 月 9 日,Socket 表示已识别出超过 500 个 GitHub 账户,它们自 2026 年 10 月 7 日以来将恶意工作流提交到了数万个仓库。
该活动被归因于 GhostAction,这是一场于 2025 年 9 月首次曝光的大规模供应链攻击活动。该活动影响了 327 个 GitHub 用户的 817 个仓库,导致 3,325 个机密被外泄,其中包括通过被入侵的开发者账户窃取的 PyPI、npm 和 DockerHub 令牌。
与之前一样,这两个账户都被发现推送了一个名为 Security Audit("security-audit.yml")或 GitHub Actions Security("github_actions_security.yml")的工作流,它们被设计为通过纯 HTTP 将敏感数据外泄到一个硬编码的 IP 地址("193.32.204[.]199")。
被捕获的数据包含该仓库的命名 GitHub Actions 机密,包括 CI/CD 机密,以及存在于工作树和整个 git 历史中的云、AI 和 SaaS 凭据,例如 AWS 密钥、Anthropic、OpenAI 和 OpenRouter API 密钥,以及 GitHub 和 GitLab 令牌。
整个攻击链的展开过程如下:
- 攻击者获取一名维护者的 GitHub 凭据,最可能是从 infostealer 日志或凭据转储中泄露的个人访问令牌(PAT)。
- 作为侦察步骤的一部分,扫描该仓库的工作流文件以寻找机密。
- 以受害者自己的身份将一个伪装成安全审计的工作流注入默认分支。
- 嵌入的载荷提取数据,并通过 curl 将其发送到攻击者控制的端点。
"它由 workflow_dispatch 和未过滤的 push(任何分支、任何标签)触发,以 fetch-depth: 0 进行检出,并运行一个执行四件事的单一 'Audit' 步骤," StepSecurity 补充道。这包括:
- 追加在侦察期间发现的该仓库的命名机密
- 在工作树中扫描与 AWS 密钥、AI 服务、源代码控制服务以及 SaaS 和云 API 密钥相关的 13 种凭据模式
- 在整个 git 历史中检查同样的 13 种模式,以收割可能被无意提交到仓库并随后删除的凭据
- 将 AWS 访问密钥 ID 与其匹配的秘密访问密钥配对
本周早些时候,GitGuardian 报告称,GhostAction 活动在 2026 年 8 月 31 日至 9 月 30 日期间,将恶意工作流推送到了属于 373 个 GitHub 用户和组织的 772 个公开仓库。
被注入的工作流针对 2,577 个机密,包括 SSH 私钥、Azure 凭据、DockerHub 和 GHCR 容器注册表凭据、数据库凭据、AWS 访问密钥、FTP 凭据、Google Cloud 和 Firebase 凭据、GitHub 令牌、Telegram、Slack 和 Discord 机器人令牌,以及与 Cloudflare、npm、PyPI 和 AI 提供商关联的密钥。
在 2026 年 8 月 30 日观察到的至少一起案例中,威胁行为者篡改了 "kuafuai/DevOpsGPT" 仓库,在该项目的 Docker 镜像中嵌入了一个 XMRig 加密货币挖矿程序。截至撰写时,尚未发现使用被入侵的发布凭据发布的恶意包版本。
建议开发者检查其仓库自 2026 年 8 月 31 日以来是否存在这两个 GitHub 工作流中的任何一个,如果存在,应假定已失陷。建议撤销被入侵的 GitHub 凭据、轮换凭据、从所有分支中删除恶意工作流,并检查受感染仓库的 fork。
"henrywoo 命名空间中的 279 个 fork 每个都携带该工作流文件。如果 Actions 被启用,后续的推送可以触发凭据收集," Socket 表示,"下游 fork 如果继承了恶意工作流,无论是新创建的还是与受影响的上游仓库同步时,也面临风险。"
"私有 fork 和下游镜像暴露程度最高,因为私有仓库才是实际能找到已提交凭据的地方。在这两个账户中,每次运行无论是否发现凭据都会返回一个仓库标识符,因此操作者掌握着一张可达执行环境的地图,独立于任何凭据窃取。"