No. 3 10 分钟阅读
GhostAction 软件供应链攻击:从“包分发窃密”到“云原生资产全域收割”的范式跃迁与防御启示
一、 引言与事件概述
近年来,随着云原生开发生态和自动化 CI/CD 管道的高度普及,软件供应链安全已成为企业安全架构中最薄弱也最关键的突破口。作为针对开源社区与自动化管道的大规模自动化软件供应链攻击活动,GhostAction 自 2025 年首次曝光以来,在 2026 年 8 月至 10 月期间经历了数轮快速演进与爆发。
时间节点与发现机构 | 受影响账号与仓库规模 | 目标凭证类型与基础设施 / 外泄端点 |
|---|---|---|
首次曝光(2025年9月)<br>发现机构:GitGuardian | 受影响规模:<br>• 327 个 GitHub 用户账号<br>• 817 个开源仓库<br>• 泄露 3,325 个 Secrets | 【目标凭证】<br>主要为构建与发布令牌,包括 PyPI API Token、npm Token、DockerHub 凭证、GitHub PAT 以及 AWS 访问密钥等。<br>【C2/基础设施】<br>• 45.139.104.115(托管于 493networking.cc)<br>• hxxps://bold-dhawan.45-139-104-115.plesk.page |
第二波活动(2026年8月–9月)<br>发现机构:GitGuardian | 受影响规模:<br>• 373 个用户及组织账号<br>• 772 个公共仓库(9月15日追踪到新增波次涉及 500 个 Commit 及 14 个新仓库) | 【目标凭证】<br>目标扩展至 2,577 个凭证,包含 SSH 私钥、Azure 凭证、DockerHub/GHCR 容器镜像仓库凭证、数据库凭证、AWS 密钥、FTP 凭证、GCP/Firebase 凭证、Cloudflare 密钥以及 Telegram/Slack/Discord Bot 令牌等。<br>【C2/基础设施】<br>• hxxps://carte-avantage.com<br>• hxxps://objective-hopper.45-139-104-115.plesk.page |
大规模爆发(2026年10月初)<br>发现机构:Socket / StepSecurity | 受影响规模:<br>• 500+ GitHub 账号<br>• 数万个仓库(10月8日突发波次中单次处理 346 个仓库) | 【目标凭证】<br>融合 Actions Secrets 提取与全历史 Git 正则扫描,涵盖 AWS 密钥对、AI API Keys(Anthropic、OpenAI、OpenRouter)、SaaS 凭证及源代码托管 Token。<br>【C2/基础设施】<br>• 硬编码 IP: 193.32.204[.]199<br>• 请求路径:hxxp://193.32.204[.]199/?c=monami |
根据 Socket、GitGuardian、StepSecurity 及主流安全情报机构的联合披露,GhostAction 在 2026 年 10 月初的波次中达到了前所未有的规模:攻击者通过接管超 500 个高权限 GitHub 维护者账号(如著名 Rust/Python 游戏引擎 kitao/pyxel 作者 Takashi Kitao 及 Uber athenadriver 原作者 Henry Wu 等),向数万个公共及私有仓库批量注入了伪装成“安全审计”的恶意 GitHub Actions 工作流(security-audit.yml)。
这场攻击标志着软件供应链威胁模型的根本转变——攻击目标已从早期的单一包分发令牌(PyPI/npm Token)演变为对云基础设施访问密钥(AWS/Azure/GCP)、生成式人工智能(AI)API 密钥(Anthropic、OpenAI、OpenRouter)以及全历史 Git 提交记录的全域收割。
二、 核心技术机制剖析:高度工程化与自动化
GhostAction 的杀伤链展现出了极高的工业化和自动化水平,其核心技术创新点主要体现在以下几个维度:
- 维护者身份的高效劫持与模板渲染:
攻击者利用从窃密木马日志或地下凭证数据库中流出的长期个人访问令牌(PAT),以合法维护者身份登录 GitHub。在注入工作流前,其自动化脚本会动态解析目标仓库现有的工作流文件,精准提炼出内部引用的 Secrets 变量名(如PYPI_PASSWORD等),将其动态渲染进硬编码的恶意模板中,确保极高的伪装度。 - 从“浅层检出”到“全历史深度提纯”(
fetch-depth: 0):
这是 GhostAction 演进中最具杀伤力的技术突破。传统恶意脚本通常只读取当前分支的工作区文件,而 GhostAction 显式配置了fetch-depth: 0,强制拉取所有分支、标签及完整的历史提交记录。通过结合git log -p --all(上限 200,000 行),攻击者能够提取历史上虽已被开发者从当前代码树中删除,但仍残留于 Git 历史 Patch 中的敏感凭证。 - 13 种正则模式与 AWS 上下文拼凑算法:
脚本通过 13 种严密的正则表达式全域匹配 AWS、AI 服务、代码托管平台及 SaaS 凭证。特别是针对 AWS 长期/临时密钥(AKIA.../ASIA...),脚本运用了带-B2 -A2参数的上下文抓取逻辑,精准捕获密钥前后的邻近文本。由于开发者经常将Secret Access Key与Access Key ID紧邻放置于.env或配置文件中,这一设计使得攻击者能够直接重构出完整、可用的 AWS 密钥对,而非只能拿到无法单独认证的孤立 ID。 - 明文外泄与基础设施隐蔽性:
提取出的所有凭证、正则匹配项及仓库标识符(REPO=$GITHUB_REPOSITORY),统一通过明文 HTTP POST 实时发送至硬编码的 C2 服务器(如193.32.204[.]199)。这种不加加密混淆的传输方式暴露出攻击者对 CI/CD 环境缺乏出站监控的极度自信。
从 DevSecOps 与云安全架构视角来看,GhostAction 攻击链展现出了极高的自动化与工业化水平。攻击者抛弃了低效的人工渗透路径,转而构建了包含自动化侦察(Reconnaissance)、模板渲染(Weaponization)、批量注入(Injection)与历史深度提纯(Extraction)的完整杀伤链。
[初始入侵] 窃密木马日志 / 凭证转储 -> 泄露的 GitHub PAT
│
▼
[动态侦察] 解析目标仓库现有 Workflow -> 提取 Secrets 变量名 (如 PYPI_PASSWORD)
│
▼
[载荷生成] 将 Secrets 变量名注入硬编码模板 -> 生成 security-audit.yml
│
▼
[批量注入] 使用 PAT 提交至默认分支 -> 触发条件: push (无路径限制) / workflow_dispatch
│
├─► 1. 提取 Actions Secrets (CI/CD 及包发布令牌)
├─► 2. checkout (fetch-depth: 0) -> 强制拉取全量 Git 历史
├─► 3. 扫描工作区与 git log -p --all (13 种正则模式)
└─► 4. 抓取 AKIA/ASIA 上下文 (前后 2 行) -> 组合拼凑完整 AWS 密钥对
│
▼
[数据外泄] 明文 HTTP POST -> hxxp://193.32.204[.]199/?c=monami (带 REPO 标识符)三、 威胁辐射与多维扩散效应
GhostAction 的破坏力绝不仅限于单点账号失窃,其威胁在开源生态中呈现出明显的“面状辐射”特征:
- 组织级仓库与横向渗透:当个人维护者对企业组织仓库(Organization Repos)拥有写入权限时(如 Henry Wu 对
uber/athenadriver的权限),攻击者能瞬间打破个人与企业的安全边界,直接向企业核心资产库注入恶意逻辑。 - 下游 Fork 的二次收割与隐患:以
henrywoo命名空间下的 279 个 Fork 仓库为例,这些 Fork 均继承了恶意工作流。无论其后续公开或私有推送,只要触发 Actions,便会启动凭证收割。特别是私有 Fork 与镜像,往往沉淀了企业更敏感的云凭证。 - 拓扑图资产情报收集:即使部分仓库未配置任何明文 Secrets,每次运行也会将全局仓库标识符回传 C2。攻击者借此构建了整个开源与企业私有资产中“可成功执行恶意代码的流水线拓扑图”,为其后续实施精准钓鱼或 0-day 漏洞利用提供了完美的地图。
四、 企业级防御加固与应急响应建议
面对此类深度管道供应链攻击,传统的“清理当前分支即算修复”策略已完全失效。安全团队必须采取纵深防御(Defense-in-Depth)策略:
1. 应急响应与彻底排查
- 分类轮换(Set A vs. Set B):若 Actions Secrets 泄露(Set A),必须立即作废并轮换 PyPI、npm、crates.io 及相关 PAT;若 Git 历史被扫描(Set B),必须对历史上曾出现过的所有云凭证(AWS/Azure/GCP)、AI API Key 及 SaaS 密钥执行强制强行轮换,绝不能抱有“HEAD 分支已删除即安全”的侥幸心理。
- 全历史检索与分支清扫:使用
git log -p --all递归排查所有仓库,清除恶意工作流文件(如security-audit.yml),并在所有分支强制推送覆盖。
2. 管道与云原生架构加固
- 身份与权限解耦:全面废除长期 PAT,强制推行 FIDO2/WebAuthn 抗钓鱼 MFA;实现“代码提交权限”与“流水线定义(
.github/workflows/)修改权限”的彻底解耦。 - 网络出站微隔离(Egress Filtering):将 CI/CD Runner 视为不可信环境,严禁其向非受信外部 IP 发起明文 HTTP 通信,在网关层全面阻断已知 C2 节点(如
193.32.204.199)。 - 分支保护与强代码审查:通过
CODEOWNERS将工作流文件的变更强制交由安全团队独立审批;启用 GitHub Secret Scanning 与 Push Protection,在入口侧拦截凭证入库。
CI/CD 管道与云原生安全加固方案防御复杂的自动化供应链攻击,必须摒弃单一安全工具的依赖,建立覆盖“身份与访问控制”、“网络出站过滤”与“GitHub 管道防护”的三层纵深防御(Defense-in-Depth)架构。
│ 身份与访问控制加固 (IAM Layer) │
│ • 废除长期 PAT / 推行 FIDO2 MFA │
│ • 解耦代码提交权与工作流定义权 │
│
▼
┌─────────────────────────────────────────┐
│ 管道与代码安全防护 (Pipeline Layer) │
│ • CODEOWNERS 强审查工作流 YAML │
│ • Secret Scanning + Push Protection │
│ • 限制 Fork / 外部贡献者 Actions 触发 │
└────────────────────┬────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ 网络出站微隔离与 C2 阻断 (Egress) │
│ • 阻断 193.32.204[.]199 等恶性 IP/域名 │
│ • 禁用 Runner 明文 HTTP 外泄通信 │
└─────────────────────────────────────────┘五、 结语
GhostAction 的演进给全球云原生生态敲响了警钟:在生成式 AI 与高度自动化 CI/CD 深度交织的今天,研发流水线已成为网络攻防对抗的前沿阵地。持续性的凭证治理、严格的流水线变更审查以及坚固的网络出站控制,是保障企业软件供应链安全不容动摇的根本基石。