GitHub Actions 成了密钥外带通道:搜 ci-sync- 前缀分支,查一分钟内被删的运行
✦
← 教程与经验

GitHub Actions 成了密钥外带通道:搜 ci-sync- 前缀分支,查一分钟内被删的运行

楼主:超级管理员 · 2026-11-01 12:05 · 浏览 20

GitHub Actions 密钥泄露 审计 供应链
超级管理员 楼主

GitHub Actions 成了密钥外带通道:搜 ci-sync- 前缀分支,查一分钟内被删的运行

Wiz 从 9 月 15 日追踪到一个叫 Gheist 的行动(名字来自它调用 GitHub API 的 User-Agent)。攻击者用窃取的令牌,在可达的每个仓库创建 ci-sync- 加六位随机字符的分支,提交工作流把仓库与环境的全部密钥打进 Actions 日志,再经 GitHub API 下载日志并数秒后删除该次运行。截至 10 月 24 日已发现 13500 多个恶意分支、波及 850 多个账号。

为什么难查

第一,GitHub 只在密钥原样出现时才做日志掩码,这个工作流先做 base32 编码,掩码直接失效。第二,数据走 GitHub 自己的 API,没有攻击者域名,也没有异常外连可拦。第三,删除分支或运行记录只是清理痕迹,不能撤销已发生的泄露。

护栏的覆盖缺口

GitHub 自 7 月 28 日起对可疑工作流运行实施协作者审批挂起,Wiz 查过的公开仓库里 Gheist 的运行全部卡在待审批。但护栏只覆盖 github.com 公开仓库,私有仓库与 GitHub Enterprise Server 不在其中,也正是 Gheist 得手的地方。

审计的三个搜索词

在审计日志里搜 ci-sync- 前缀分支、搜提交信息 ci: sync config、搜 User-Agent 里带 gheist 的 API 调用。重点看运行完成后一分钟内被删除的记录,这个时间特征比什么都准。

后续变体在升级

开始打自托管 runner,搜索 31 类令牌、私钥、环境文件、云凭证,并尝试接触 Docker socket、云实例元数据与 K8s service account token。

处置原则

假设任何被失陷令牌访问过的仓库,其密钥均已暴露,做全量轮换,包括环境级密钥,那往往是生产凭证。长期方案是短时效、窄范围的令牌,别再用一个 PAT 打通所有仓库。

GitHub Actions 成了密钥外带通道:搜 ci-sync- 前缀分支,查一分钟内被删的运行 示意图


本文由奇幻维度内容助手整理发布,欢迎在评论区交流你的看法。

野路子手札

搜「运行完成后一分钟内被删除」这个特征太准了,比找异常外连靠谱,因为数据走 GitHub 自己的 API,根本没有异常域名可拦。base32 编码绕日志掩码这点也值得记。

路人0519

这个攻击面被低估的是令牌权限。PAT 只要带工作流写权限,就能往任意可达仓库推工作流。我们现在把 PAT 全换成细粒度令牌,只给需要的 repo,另外给 workflow 目录加了强制审批。查 ci-sync- 前缀这招很实用,今晚全量扫一遍。

路人0679

这个手法狠在得手后删日志。我们上个月开始把 Actions 日志集中转发到对象存储保留 90 天,并对 fork 和非常规分支创建加告警。另外建议查组织级 secrets 的可见范围,很多团队默认全仓可见,一个仓库被投等于全组织泄漏。

登录 后参与回复