一、事件概述:当安全工具变成武器
2026 年 3 月至 5 月,一个名为 TeamPCP (又称 DeadCatx3、PCPcat、ShellForce、CanisterWorm)的威胁组织执行了最具破坏性的软件供应链攻击。这场攻击从 Aqua Security 的 Trivy 安全扫描工具开始,蔓延到 Checkmarx 的 CI/CD 插件、LiteLLM 代理框架、Telnyx 通信 SDK,最终在 5 月通过 Nx Console VS Code 扩展(220 万安装量)直接入侵了 GitHub 的内部基础设施,导致约 3800 个内部仓库被未授权访问。
关键时间线:
- 3 月 19 日:TeamPCP 通过泄露的 GitHub PAT(个人访问令牌)强制推送了 Trivy GitHub Action 的 75 个标签(CVE-2026-33634,CVSS 9.4)
- 3 月 23 日:Checkmarx AST 插件、KICS Action 等多个 CI/CD 组件被投毒
- 3 月 27 日:telnyx Python SDK(月下载 67 万次)在 PyPI 被投毒
- 5 月 18 日:Nx Console v18.95.0 在 VS Code Marketplace 发布恶意版本
- 5 月 20 日:GitHub 确认内部仓库被入侵
这不是一个孤立事件,而是一场持续两个月的级联供应链攻击。攻击者通过一个泄露的令牌,渗透了整个安全工具生态。
如果你的团队使用了 Trivy、Checkmarx、LiteLLM 或 Nx Console,立即按照文末的检测清单进行排查。
TeamPCP 攻击链已经扩散到 5 个以上的生态系统和 66+ 个 npm 包。不要只检查已知 IOC——你的环境可能已经被未知变种感染。
二、攻击技术分析:从令牌泄露到级联传播
TeamPCP 的攻击链展现了供应链攻击的「多米诺效应」——攻击者不需要直接入侵目标,而是通过破坏目标信任的工具链来间接渗透。
2.1 第一击:Trivy 行动投毒
3 月 19 日,TeamPCP 使用泄露的 aqua-bot 服务账户 的 GitHub PAT,对 aquasecurity/trivy-action 和 setup-trivy 仓库执行了强制推送(force-push),将 75/76 个标签替换为恶意版本。
恶意载荷:在 Action 的工作流中注入了一个窃取 CI/CD 环境凭证的后门,通过 runner 的内存和文件系统路径收集 GitHub 令牌、AWS 密钥等敏感信息。
2.2 级联扩散:CI/CD 生态链式反应
TeamPCP 利用从 Trivy 获取的凭证,继续入侵了:
- Checkmarx AST 插件(Jenkins Marketplace):v2026.5.09 版本注入恶意代码
- Checkmarx KICS Action:35 个标签全部被强制推送
- Checkmarx ast-github-action:v2.3.28 被投毒
- OpenVSX 扩展:ast-results v2.53.0 和 cx-dev-assist v1.7.0 被发布
2.3 VS Code 扩展攻击面
5 月 18 日,TeamPCP 发布了 Nx Console v18.95.0 的恶意版本到 VS Code Marketplace。该扩展有超过 220 万次安装,是 Nx 框架的官方开发工具。
恶意代码执行机制:
- 在 main.js 中注入混淆代码
- 每次工作区启动时执行:npx -y github:nrwl/nx#558b09d7...
- 这个命令从官方 nrwl/nx 仓库的一个孤立提交中下载并执行隐藏包 nx-next
- nx-next 的真实任务是凭证窃取,包括 GitHub 令牌、AWS 密钥等
这为什么有效:VS Code 扩展在开发者的工作环境中运行,拥有完整的文件系统和网络访问权限。开发者的电脑就是企业内网的入口。
定期轮换所有 CI/CD 服务的个人访问令牌(PAT),特别是服务账户的令牌。TeamPCP 的起点就是一个未轮换的 aqua-bot PAT。
VS Code 扩展拥有完整的本地系统权限。安装任何扩展前,检查其发布者是否验证、安装量是否合理、是否有社区审核。
三、CVE-2026-33634 技术深潜
CVE-2026-33634(CVSS 9.4)是本次攻击链的起点,也是 2026 年最严重的 CI/CD 供应链漏洞之一。
3.1 漏洞机制
Trivy 是一个广泛使用的容器安全扫描器,其 GitHub Action 版本被投毒后,任何使用 trivy-action 的 CI/CD 流水线都会自动执行恶意代码。
攻击路径:
- 攻击者通过泄露的 PAT 获得 trivy-action 仓库的写入权限
- 强制推送(force-push)替换了所有历史标签的 commit
- 新的 commit 包含恶意 Action 代码,在 CI runner 环境中执行
- 恶意代码从 runner 的环境变量、配置文件和内存中窃取凭证
- 窃取的数据被发送到攻击者控制的 C2 服务器
3.2 影响范围
受影响的仓库包括:
- aquasecurity/trivy-action:75/76 个标签被替换
- aquasecurity/setup-trivy:全部 7 个标签被替换
- Checkmarx/kics-github-action:35 个标签被替换
- Checkmarx/ast-github-action:v2.3.28 被投毒
- @antv npm 命名空间:多个包被投毒
- actions-cool/issues-helper:GitHub Action 被投毒
总计影响 66+ 个 npm 包、5 个以上的生态系统。
3.3 攻击者的持久化策略
TeamPCP 展示了一种「最小痕迹」持久化策略:
- 利用已有的发布基础设施(而非创建新的恶意仓库)
- 在合法的仓库中注入恶意 commit,外观上难以察觉
- 通过 npm lifecycle scripts 和 VS Code tasks.json 自动运行机制执行载荷
- 使用孤立 commit(orphan commit)隐藏恶意代码的下载源
这种策略使得传统的供应链安全检查(如检查新发布的包)难以检测到攻击。
启用 GitHub 的分支保护规则和标签保护,禁止 force-push。设置 CODEOWNERS 文件要求关键文件的变更需要多人审查。
CVE-2026-33634 的 CVSS 评分为 9.4(接近最高),但实际影响取决于你使用的具体版本和 CI/CD 配置。即使你的 Trivy 版本不在已知受影响的标签列表中,也要检查你的 CI runner 日志中是否有可疑的网络请求。
四、对比:主流供应链攻击模式
TeamPCP 的攻击模式在供应链攻击史上具有里程碑意义,它与历史上的重大供应链攻击有显著差异。
4.1 与传统供应链攻击的对比
SolarWinds(2020):国家支持的攻击者入侵了软件构建系统,在合法软件更新中植入后门。影响约 18000 个组织,但需要受害者安装软件更新才会感染。
Log4Shell(2021):是一个漏洞而非供应链攻击。Log4j 中的远程代码执行漏洞影响了全球数以百万计的 Java 应用。
XZ Utils(2024):攻击者通过社交工程获得了一个广泛使用的压缩库的维护者权限,植入了极其隐蔽的后门。几乎影响所有 Linux 发行版。
TeamPCP(2026):独特之处在于级联扩散模式——攻击者不是单一入侵一个软件,而是通过一个泄露的令牌,像病毒一样在 CI/CD 生态系统中传播,从一个工具跳到另一个工具。
4.2 攻击复杂度与影响的对比
| 维度 | SolarWinds | XZ Utils | TeamPCP |
|---|---|---|---|
| 攻击起点 | 构建系统入侵 | 社交工程 | 泄露的 PAT |
| 扩散方式 | 软件更新分发 | 预编译库植入 | CI/CD 级联 |
| 受害者数量 | ~18,000 | 潜在数亿 | 66+ 生态包 |
| 持续时间 | 数月 | 数年 | 2 个月 |
| 检测难度 | 极高(代码签名合法) | 极高(仅预编译包含) | 高(在合法流程中) |
| 级联效应 | 无 | 无 | 有(5+ 生态) |
4.3 TeamPCP 的创新之处
- 最小权限持久化:不创建新仓库,利用已有基础设施
- 跨生态传播:从 GitHub Actions 到 npm 到 PyPI 到 VS Code
- 自动化执行链:利用 npm lifecycle scripts、VS Code tasks.json 自动执行
- 开发者信任攻击面:将开发者的本地开发环境作为入侵企业内网的跳板
这些创新使得 TeamPCP 成为供应链攻击的一个新范式。
了解供应链攻击的演变有助于建立纵深防御。不要只防御一个攻击面——TeamPCP 证明了攻击者可以从任何一个入口点扩散到整个生态。
不要认为你的组织「没有使用 Trivy 所以安全」。TeamPCP 的攻击链已经扩散到 npm、PyPI、VS Code Marketplace 等多个平台,影响范围远超最初的 CI/CD 工具。
五、防御策略:构建供应链纵深防御体系
面对 TeamPCP 级别的供应链攻击,单一的防御措施远远不够。需要构建纵深防御体系。
5.1 第一层:令牌与凭证管理
- 轮换所有 CI/CD 服务账户的个人访问令牌(PAT)
- 启用 GitHub 的细粒度令牌(fine-grained PAT),限制权限范围
- 使用 OIDC 或短期令牌替代长期 PAT
- 审计所有服务账户的令牌创建时间和最后使用时间
5.2 第二层:依赖完整性验证
- 对所有第三方依赖执行 Software Bill of Materials(SBOM) 生成
- 启用 GitHub 的 Dependabot alerts 和 security updates
- 使用 Sigstore/cosign 对 CI/CD 工件进行签名和验证
- 在 CI 流水线中集成依赖扫描(但注意:Trivy 本身已被攻击,需要多个工具交叉验证)
5.3 第三层:CI/CD 管道安全
- 启用分支保护和标签保护:禁止 force-push 到生产分支
- 实施 CODEOWNERS 策略:关键文件变更需要多人审批
- 隔离 CI runner 环境:使用一次性 runner,执行后销毁
- 监控 CI runner 的网络请求:检测异常的外联行为
5.4 第四层:开发者环境安全
- VS Code 扩展审核:只安装已验证发布者的扩展
- 监控扩展的权限请求:注意需要文件系统或网络访问的扩展
- 启用 npm audit 和 pip-audit:在安装新包前检查已知漏洞
- 考虑使用 企业私有 npm registry:对所有第三方包进行代理和扫描
5.5 第五层:检测与响应
- 建立供应链安全监控:订阅安全公告(CVE、GitHub advisories、npm advisories)
- 部署运行时检测:使用 eBPF 或类似的运行时安全工具监控异常行为
- 制定供应链事件响应计划:当发现投毒包时,如何在最短时间内隔离和修复
- 定期红队演练:模拟供应链攻击场景,测试检测和响应能力
最优先的行动:立即轮换所有 CI/CD 服务账户的 PAT,并启用 GitHub 的细粒度令牌。这是 TeamPCP 攻击链的起点,也是你最容易被攻击的入口。
不要只依赖单一安全工具。TeamPCP 攻击的正是安全工具本身(Trivy、Checkmarx)。使用多种工具交叉验证,并定期检查这些工具本身的完整性。
六、实战:检测清单与修复指南
如果你怀疑你的环境可能受到 TeamPCP 攻击的影响,以下是立即执行的检测清单。
6.1 立即执行的检查项
- 检查 Trivy Action 版本:确认你使用的 trivy-action 和 setup-trivy 标签未被强制推送
- 检查 Checkmarx 组件:确认 AST 插件、KICS Action 等组件的完整性
- 检查 Nx Console 版本:确认没有安装 v18.95.0
- 检查 CI runner 日志:查找异常的网络请求或凭证访问
- 检查 npm/PyPI 包:运行 npm audit 和 pip audit 检查已知投毒包
6.2 凭证轮换清单
- 所有 GitHub PAT(特别是服务账户的 PAT)
- 所有 CI/CD 环境变量中的令牌和密钥
- 所有 npm registry 的认证令牌
- 所有 PyPI 的 API 令牌
- 所有云服务商(AWS、GCP、Azure)的访问密钥
6.3 长期改进建议
- 建立 依赖关系图谱:追踪所有第三方依赖的来源和版本
- 实施 供应链风险管理流程:定期评估第三方组件的安全状态
- 参与 开源安全社区:及时了解新的供应链攻击模式和防御策略
- 考虑 构建内部安全工具:减少对第三方安全工具的依赖
将检测清单自动化。编写 CI 脚本定期执行这些检查,而不是手动操作。自动化是应对供应链攻击的最佳方式。
凭证轮换后,确保更新了所有使用旧凭证的服务和配置。遗漏的旧凭证可能成为新的安全漏洞。
七、总结与趋势预判
TeamPCP 供应链攻击标志着软件供应链安全进入了一个新阶段。 攻击者不再满足于入侵单一软件,而是利用 CI/CD 生态系统的相互依赖性,从一个入口点扩散到整个工具链。
7.1 关键教训
- 安全工具本身可能成为攻击面——不要假设安全工具是绝对可信的
- 令牌管理是第一道防线——泄露的 PAT 是 TeamPCP 攻击链的唯一起点
- 级联扩散是新的威胁模式——一个工具的沦陷可能导致整个生态的沦陷
- 开发者环境是企业内网的入口——VS Code 扩展攻击证明本地开发环境同样需要保护
7.2 趋势预判
- 2026 下半年:预计会出现更多针对 CI/CD 生态系统的级联供应链攻击
- 2027 年:SBOM 和签名验证将成为 CI/CD 管道的标配,但攻击者会寻找绕过签名的方法
- 长期:供应链安全将从「检测已知威胁」转向「验证完整性和信任链」
7.3 对 AI Master 读者的建议
如果你正在构建 AI 驱动的 CI/CD 系统或使用 AI 代码生成工具(如 Copilot、Codeium),这些工具本身也是供应链的一部分。AI 模型生成的代码可能包含供应链攻击的隐蔽后门——这是下一个值得关注的安全前沿。
持续关注 SLSA(Supply chain Levels for Software Artifacts)框架的进展。这是目前最全面的软件供应链安全标准框架。
不要等待下一次攻击。TeamPCP 证明了供应链攻击的扩散速度远超大多数组织的响应能力。现在就构建纵深防御体系。