Wiz披露Gheist攻击 850个账号被植入泄密工作流
时间:2026年9月15日 Wiz Research 开始跟踪该活动,2026年10月25日 Wiz 官方博客发布完整分析报告(页面标注 October 25, 2026),同日 Threadlinqs 发布威胁情报条目、Security News Live 等媒体跟进
地点:全球范围;攻击目标是 GitHub 托管的公开与私有代码仓库,受害者从个人项目到企业私有仓库;报告由安全厂商 Wiz Research 发布
人物:Wiz Research 威胁研究团队;GitHub 平台方;受影响的企业 DevOps 与安全团队;与该批账号重叠的其他攻击组织,包括使用 Lure 仓库的投放者、挖矿团伙、朝鲜关联的 PolinRider 运营者
事件详情:Wiz Research 披露了一个名为 Gheist 的自动化攻击活动,自 2026 年 9 月 15 日起持续跟踪。该活动利用被盗的 GitHub 令牌(token),向每一个令牌有权限访问的仓库植入名为 sync-check 的 GitHub Actions 工作流,把仓库密钥打印进工作流日志,再通过 GitHub API 把日志下载走,几秒后删除运行记录。工具发出的 API 请求带有 user agent gheist,活动名称由此而来。
攻击手法有三个关键设计。第一,GitHub 只在密钥原样出现时才对日志做脱敏掩码,而 base32 编码后的密钥不匹配脱敏规则,因此会被完整打印出来。第二,工作流里写 permissions: {} 收紧了作业的 GITHUB_TOKEN 权限,但攻击者本就不需要这个令牌,而这一限制管不到 secrets 上下文。第三,如果仓库配置了部署环境(deployment environments),工具会把这些环境列进 job matrix,通过 environment: ${{ matrix.environment }} 逐个触发,从而连同环境级的生产凭证一起打印。由于密钥是通过 GitHub 自己的 API 流出,攻击者没有自己的域名或外连通道可以封堵。
Wiz 共追回 13500 多个被植入的分支,来自 850 多个被盗账号,范围从个人项目一直到企业组织的私有仓库。截至 10 月 24 日,攻击仍在持续演进,且约三分之二的相关账号已在 GitHub 上不可用,Wiz 认为这很可能是处置动作的结果,因为该活动已向 GitHub 报告。
GitHub 自 2026 年 7 月 28 日起启用了审批保持机制,公共仓库中疑似恶意的 workflow 运行需要协作者批准才会执行。Wiz 检查的每一个公共仓库 Gheist 运行都停留在 action_required 状态,恶意载荷从未真正运行。但该机制不覆盖私有仓库和 GitHub Enterprise Server。在这两类环境中,审计日志显示 ci-sync-* 分支上的运行完成后被 gheist user agent 删除,CloudTrail 记录显示组织自己的工作流在攻击者分支上运行并承担了 AWS 角色,证明 Actions 在未经批准的情况下执行了。
攻击分两个并行变体,可通过分支名后缀区分:Tool A 使用十六进制后缀和原始载荷;Tool B 使用 base36 后缀,在 9 月 28 日首次运行数小时内加入了 timeout-minutes: 6 和环境矩阵,并针对每个仓库修改载荷。10 月 19 日,Tool B 在转储之间加入 echo X | base32 -w 120,输出 LAFA==== 作为分隔符,很可能是给操作方的日志解析器用的。数小时后,Tool B 又推入第二个作业 sync-host,runs-on 为 self-hosted,只针对注册了自托管 runner 的仓库。
这个 sync-host 作业会写入三个辅助文件 .gdmp_pat、.gdmp_patg、.gdmp_sweep,并以 ===== gdmp-pivot: ===== 为标题记录各阶段:主机信息与 crontab;递归搜索家目录、工作区和系统路径下的 31 种令牌格式,其中包括 Anthropic、Hugging Face、Groq、NVIDIA 等 AI 厂商的密钥,还包括私钥、.env 文件、Terraform state 和 shell 历史;读取 /proc/*/environ 获取所有进程的环境变量;通过 Docker socket 挂载宿主机根文件系统进容器以重复搜索;获取 AWS 实例角色凭证以及 GCP、Azure 元数据;收集 GitHub Actions 与 GitLab runner 凭证文件;以及 Kubernetes service account token。Wiz 指出这个作业本身有缺陷,找错了 runner key 文件路径,URL 凭证正则表达式是坏的,也没有真正收集到 GCP 和 Azure 令牌。
背景:同一批账号还被其他组织利用。10 月 6 日有 391 个账号把约 1461 个仓库改名成 fl-studio-crack、solana-sniper-lite 这类破解软件诱饵,重命名顺带抹掉了 610 个 ci-sync 分支,其中 166 个账号从未出现在 Gheist 活动中,说明账号池比 Gheist 本身覆盖的更大。10 月 18 日,25 个 Gheist 账号在九分钟内各建了一个 "Windows RDP Runner" 仓库,试图滥用 GitHub Actions 免费算力。10 月 19 日和 20 日,三名受害者把 Gheist 提交重新推送,末尾追加了藏在 vite.config.js 数百个空白字符后的 PolinRider JavaScript 加载器,其中两例还有 package.json 在每次 dev 和 build 之前执行的 api.js。Gheist 第一阶段的 57 个账号在 5 月也同时是 Megalodon 活动的受害者。
可追溯的凭证来源包括信息窃取木马(infostealer)日志,以及此前供应链入侵中暴露的令牌,例如 3 月的 Trivy 入侵事件。Wiz 强调 Gheist 与 GhostAction 是不同活动,后者使用不同的工作流文件,并把密钥外传到 193.32.204.199 这一固定地址。
影响:这是一起典型的以 CI/CD 流水线为入口的凭证收割案例,攻击面从"代码本身"转向了"代码的构建环境"。Wiz 给出的狩猎线索很具体:查找名为 ci-sync- 加六个随机字符、且唯一改动是新增 .github/workflows/sync-check.yml(提交信息为 ci: sync config)的分支;在审计日志里查找在 ci-sync-* 分支上运行后一分钟内被删除的运行记录,以及 user agent 为 gheist 的活动;使用 OIDC 的团队应检查云审计日志中 subject 包含 ci-sync- 分支的角色扮演或令牌交换;自托管 runner 上则应查找 .gdmp_pat、.gdmp_patg、.gdmp_sweep 三个文件以及日志中的 gdmp-pivot 字符串。
处置建议的核心是承认"删除运行记录或分支无法撤销已经发生的泄露",必须轮换受影响仓库、组织和环境上的全部密钥,吊销推送令牌并检查令牌所有者的设备是否存在窃密木马;一旦 ci-sync 分支在自托管 runner 上运行过,就应视该主机及其实例角色为已被攻陷;切勿批准被保持的 sync-check 运行。加固方向包括为带生产密钥的环境要求审阅者、把 OIDC 信任策略限定到受保护分支或环境、用 GitHub App 或短期细粒度令牌替代个人访问令牌,以及把自托管 runner 作为临时主机运行,不挂载 Docker socket、不开放元数据访问。
总结:Gheist 展示了攻击者正在把 GitHub Actions 从"可选的自动化工具"变成"可批量利用的凭证分发管道"——通过 base32 编码绕过日志脱敏、通过部署环境矩阵拿到生产级密钥、通过借用平台自身 API 实现无外连地址的数据外传,甚至进一步把触角伸向自托管 runner 上的 Anthropic、NVIDIA 等 AI 厂商密钥。GitHub 7 月 28 日上线的审批保持机制在公共仓库上确实拦住了全部恶意载荷,但由于不覆盖私有仓库和 GitHub Enterprise Server,企业内网环境依然是敞开的。这一事件的实际风险不在于单个账号失窃,而在于 CI/CD 凭证一旦被批量收割即形成跨组织的横向移动通道。
参考来源:
Wiz Research 官方完整报告:https://www.wiz.io/blog/gheist-attempted-scaled-abuse-of-stolen-github-tokens-stumbles
Threadlinqs 威胁情报条目(含 MITRE ATT&CK 技术映射):https://intel.threadlinqs.com/threat/TL-2026-4423
Security News Live 报道:https://snslive.uk/article/2817920
Deniz.in 技术拆解:https://deniz.in/gheist-campaign-used-stolen-github-tokens-to-plant-secret-stealing-workflows-in
Runtime Wire 报道:https://runtimewire.com/article/wiz-gheist-stolen-github-tokens-actions-secrets
PAN 汇编报道:https://pan.parallax.kr/article/recent-cybersecurity-incidents-involving-github-dreamhost-and-iot-devices
Machu Valley 对比 GhostAction 的分析:https://www.machucavalley.tech/blog/gheist-ghostaction-github-workflow-attacks
GitHub 官方变更日志(2026-07-28 审批保持机制):https://github.blog/changelog/2026-07-28-github-actions-holds-potentially-malicious-workflows-for-approval/







