内容提要
GitHub遭遇“GhostAction”攻击,约1900个账户被盗,攻击者利用窃取的开发者凭证向3万余仓库植入恶意工作流,窃取CI/CD密钥、云凭证及AI API密钥。攻击高峰在10月8日至9日,波及约3000用户,目标为3174个密钥。此次攻击并非利用GitHub Actions漏洞,多数受影响仓库未清理,凭证泄露数量不明。
延伸解读
攻击手法与目标
GhostAction攻击并非利用GitHub Actions漏洞,而是通过窃取的开发者凭证直接修改工作流。攻击者将恶意工作流伪装成安全审计任务,如security-audit.yml,利用合法构建已引用的密钥,在运行时收集凭证并发送至攻击者控制的服务器。目标包括CI/CD密钥、云访问密钥和AI提供商API密钥。
攻击规模与时间线
攻击在10月8日至9日达到高峰,波及约3000用户和组织,针对3174个密钥。GitGuardian追踪显示,攻击分阶段部署:先针对约160个先前目标,20分钟后大规模部署到28000个新仓库。总被盗凭证数量未知,但确认部分数据外泄。
清理与响应不足
截至10月5日,仅16%的受影响仓库(124/772)进行了清理。GitHub的审批控制阻止了多数恶意工作流,但攻击者回收了92个旧工作流,包括自2025年9月活跃的基础设施。这凸显了持续监控和及时清理的重要性。
凭证泄露风险与应对
攻击者使用actions/checkout@v4 with fetch-depth: 0扫描工作树和Git历史,寻找AWS密钥、GitHub/GitLab PAT、Google/Firebase密钥及AI API令牌,甚至包括已从代码库删除但仍有效的密钥。建议撤销任何仍具写权限的受损账户凭证,并轮换可能暴露的云密钥、部署凭证和AI API密钥。
Q&A
GhostAction攻击是如何入侵GitHub账户并植入恶意工作流的?
攻击者利用窃取的开发者凭证(可能是从凭证转储中获取的个人访问令牌)直接修改仓库的工作流文件,添加伪装成安全审计的恶意工作流,如security-audit.yml或github_actions_security.yml。这些工作流在运行时收集CI/CD密钥、云凭证和AI API密钥,并发送到攻击者控制的服务器。
GhostAction攻击主要针对哪些类型的敏感信息?
攻击主要针对CI/CD密钥、云访问密钥(如AWS密钥)、AI提供商API密钥(如Anthropic、OpenAI、OpenRouter),以及GitHub和GitLab的个人访问令牌、Google和Firebase密钥等。攻击者还通过扫描工作树和Git历史来获取已从代码库中删除但仍有效的凭证。
GhostAction攻击的规模有多大?影响了多少账户和仓库?
攻击者访问了约1900个GitHub账户,并向超过3万个仓库植入了恶意工作流。攻击高峰在10月8日至9日,影响了约3000个用户和组织,试图提取3174个密钥。在8月和9月的活动中,恶意工作流出现在772个公共仓库中,涉及373个用户和组织。
GitHub Actions本身存在漏洞吗?GhostAction是否利用了漏洞?
没有。GhostAction攻击并未利用GitHub Actions的任何漏洞,而是通过窃取的开发者凭证直接修改工作流。与tj-actions/changed-files攻击污染共享Action不同,GhostAction采用了不同的路径。
攻击者如何绕过GitHub的审批控制?
GitHub的审批控制阻止了大多数恶意工作流,但攻击者回收了之前攻击中留下的92个旧工作流,这些基础设施自2025年9月起就活跃,从而绕过了审批。
GhostAction攻击后,受影响仓库的清理情况如何?
清理情况不理想。截至10月5日,在772个受影响的仓库中,只有16%(124个)被清理。大多数受影响仓库未清理,凭证泄露数量不明。
如果我的GitHub账户可能受到GhostAction影响,应该采取哪些补救措施?
应立即撤销任何仍具有写权限的受损账户的凭证,即使恶意工作流已被移除。同时,撤销或轮换可能暴露的云密钥、部署凭证、注册表令牌和AI提供商API密钥,包括那些几个月前从代码库中删除但仍有效的凭证。利用GitHub审计记录和PAT活动识别修改过.github/workflows/的账户,并检查Actions运行历史以确定哪些作业执行并可能访问了哪些密钥。