文章总结: 本文深度剖析了针对CheckmarxKICS的供应链攻击事件。攻击者TeamPCP通过覆写DockerHub官方镜像标签并在VSCode扩展仓库注入伪造历史的恶意提交,利用Bun运行时静默执行窃密载荷,实现凭证收割与CI/CD流水线劫持,形成具备自传播能力的蠕虫式投毒网络。建议企业立即隔离受影响镜像与扩展,全面轮换云凭证,并在架构层面引入SLSA构建标准与镜像签名验证以构建零信任软件供应链体系。 综合评分: 95 文章分类: 供应链安全,威胁情报,漏洞分析,应急响应,漏洞预警
深度分析 | 在官方 KICS Docker 中发现恶意 Checkmarx 构件
奇安信 CERT
2026年4月23日 16:45 北京
在小说阅读器读本章
去阅读
一、事件概述
2026年4月22日,安全研究机构 Socket 与 Docker 联合披露了一起针对 Checkmarx KICS 的重大供应链攻击。攻击者(高度疑似威胁组织 TeamPCP)通过覆写 Docker Hub 官方镜像标签(v2.1.20、alpine、latest 等)及注入虚假标签 v2.1.21,分发被植入数据窃取与外传功能的恶意 KICS 二进制文件。
同时,攻击者利用 Git 历史操作技巧,在 Checkmarx 官方 VS Code / Open VSX 扩展仓库中植入倒填日期的恶意提交,通过 Bun 运行时静默下载并执行多阶段载荷 mcpAddon.js,实现凭证收割、CI/CD 流水线劫持与 NPM 下游投毒,形成”蠕虫式”供应链横向传播。综合外部情报,该事件威胁等级评定为 Critical,标志着针对现代 SDLC 工具链的攻击已进入“寄生式、自传播、高隐蔽”的新阶段。
二、技术细节分析
1. Docker 镜像标签覆写与二进制劫持
攻击者未采用传统的”新建恶意镜像”策略,而是直接覆写了官方仓库中高频使用的受信任标签。被篡改的 KICS 二进制文件在原有 IaC 扫描逻辑外围包裹了未授权的遥测与数据外传模块。该模块会在扫描 Terraform、CloudFormation 或 Kubernetes 配置文件时,动态生成包含敏感配置的”无过滤扫描报告”,经压缩与加密后发送至外部 C2 端点。此手法直接绕过了容器安全扫描的静态特征检测。
受影响镜像标签:
checkmarx/kics:v2.1.20``checkmarx/kics:alpine``checkmarx/kics:latest``checkmarx/kics:v2.1.21
2. Git 历史操纵与隐蔽载荷投递
在 VS Code 扩展侧,攻击者展示了极高的 Git 滥用能力:
-
时间戳伪造与父节点绑定:
在
checkmarx/ast-vscode-extension仓库中注入提交68ed490b,伪造时间为 2022 年,并绑定至真实历史提交作为父节点。 -
分支隔离(Orphaned Commit):
该提交未合并至主分支,处于”孤儿”状态。常规 CI/CD 流水线与依赖扫描工具默认只跟踪活跃分支,成功规避自动化检测。
-
Raw URL 动态拉取:
扩展激活时,通过
raw.githubusercontent.com/.../68ed490b/...拉取约 10MB 的mcpAddon.js。载荷托管于 Checkmarx 官方域名,网络层极难将其判定为恶意流量。
3. Bun 运行时利用与无感知执行
载荷下载至 ~/.checkmarx/mcp/mcpAddon.js 后,直接调用 Bun 运行时执行。Bun 原生 C++ 绑定使得内存操作、进程注入与网络请求更为底层化,可绕过 Node.js 生态中常见的审计钩子,实现静默执行,无需用户交互,未触发代码签名校验。
4. 凭证收割与供应链蠕虫传播
mcpAddon.js 具备完整的”采集-加密-外传-再利用”能力栈:
-
目标凭证:
GitHub PAT、Azure CLI 令牌、Google Cloud (
gcloud) 凭据、AWS 访问密钥。 -
外传双通道:
加密数据直发外部 C2,并通过窃取的 GitHub 令牌在受害者账号下创建公开仓库,以受害者身份托管窃取数据。
-
CI/CD 滥用:
利用窃取的 GitHub Token 创建恶意 GitHub Actions 工作流,劫持流水线环境变量中的 CI/CD Secrets。
-
NPM 供应链投毒:
解析
~/.npmrc进行下游包重发布,植入相同传播逻辑,形成 Canister Worm 式自我复制网络。
三、攻击链还原(MITRE ATT&CK)
| 攻击阶段 | ATT&CK 战术 | 技术编号 | 技术描述 | 事件映射 |
| — | — | — | — | — |
| 初始访问 | Supply Chain Compromise | T1195.001/002 | 软件依赖/第三方软件供应链投毒 | 覆写 Docker Hub 标签;Git 仓库注入恶意提交 |
| 执行 | Command and Scripting Interpreter | T1059 | JavaScript / Bun 运行时执行 | 扩展激活后调用 Bun 执行 mcpAddon.js |
| 持久化/防御规避 | Masquerading / Indicator Removal | T1036/T1070 | 伪装合法服务;痕迹清理 | 倒填日期 Git 提交;孤儿提交;利用官方域名托管载荷 |
| 凭证访问 | Unsecured Credentials | T1552/T1528 | 窃取应用访问令牌 | 提取 GitHub/Azure/GCP 令牌;扫描 IaC 配置文件中的硬编码密钥 |
| 收集/外传 | Data Compressed & Exfiltrated | T1560/T1567 | 数据压缩加密;通过 Web 服务外传 | 报告加密发送 C2;在受害者 GitHub 创建公开仓落盘 |
| 横向移动/影响 | Account Manipulation / Resource Hijacking | T1098/T1496 | 滥用合法账户;CI/CD 工作流劫持 | 恶意 GitHub Actions 抓取 Secret;NPM 包重发布传播 |
四、威胁行为体画像
组织名称:TeamPCP(别名:Team PCP, PCP inc.)
活动轨迹:2026年3月已针对 Checkmarx GitHub Actions、OpenVSX、Trivy、LiteLLM 发起过同类供应链攻击。2026年4月22日通过 Twitter 账号 @pcpcats 公开认领并嘲讽 OSS 生态(”Thank you OSS distribution for another very successful day at PCP inc.”)。
能力评级:高阶/国家级或高度组织化犯罪团伙
- 精通现代开发者生态(Git 底层操作、Docker 注册表权限滥用、CI/CD 流水线劫持)。
- 熟练使用新兴运行时(Bun)规避传统 Node.js 安全审计。
- 具备自动化供应链蠕虫工程能力(Canister Worm 风格),实现”凭证窃取 – 权限提升 – 下游投毒”的闭环。
动机研判:兼具战略情报收集与供应链瘫痪双重目标。针对云基础设施凭证的定向收集表明其意图渗透企业生产环境;而自动化 NPM/Docker 重发布则表明其具备大规模破坏或经济勒索潜力。
战术特征:偏好”寄生式”攻击(不直接部署独立恶意软件,而是劫持合法工具流);强调整体隐蔽性(利用官方域名、历史提交混淆);具备强烈的心理战/宣传倾向(公开认领与嘲讽)。
五、威胁指标(IOC)
| 指标类型 | 值 | 富化分析 |
| — | — | — |
| 恶意 IP | 94.154.172.43 | ASN 209101 (IP Vendetta Inc.) – 荷兰阿姆斯特丹 – OSINT: scanner/bruteforce (活跃 2026-03-31 至 04-23) |
| 恶意域名 | audit.checkmarx.cx | 注册 2026-03-31 – 到期 2027-03-31 – NS: dnsowl.com – 解析: 94.154.172.43 – 高度伪装 C2 域名 |
| 恶意提交 | 68ed490b | 位于 checkmarx/ast-vscode-extension – 时间戳伪造为 2022 年 – 未合并主分支 – ~10MB mcpAddon.js 载荷 |
| 恶意文件路径 | ~/.checkmarx/mcp/mcpAddon.js | 运行时由扩展自动下载并写入开发者家目录 – 利用默认配置目录实现持久化 |
| 文件哈希 | e1023db2... / d47de377... / bbbca2dd... | SHA-1/SHA-256 – 涵盖被篡改 KICS Docker 层、修改后二进制、mcpAddon.js 混淆代码段 |
六、影响评估
受威胁行业与组织:
- 云原生与 DevOps 团队:所有依赖 KICS 进行 IaC 安全扫描的企业。
- SaaS/金融科技/政企:高度依赖 GitHub Actions、Azure、GCP 进行 CI/CD 部署的组织。
- 开源贡献者与内部开发者:安装受影响 VS Code/Open VSX 扩展的个人或团队。
数据泄露风险:
- 直接暴露 IaC 文件中的云凭证、数据库连接串、私有密钥。
- GitHub Token 与 npm 凭据泄露可导致代码库被克隆、恶意包被推送至生产注册表。
- CI/CD Secret 被劫持将直接威胁生产环境配置,可能引发云资源滥用或数据勒索。
供应链级联效应:攻击具备自传播特性。一旦受害者的 npm 包或 Docker 基础镜像被重发布投毒,下游引用方将在无感知中感染,形成指数级扩散的 Canister Worm 网络。传统基于边界的防御模型在此类”信任链内部”攻击中完全失效。
七、检测与响应建议
检测规则建议
终端与运行时监控(Sigma/YARA):
- 监控
bun进程执行来自~/.checkmarx/或临时目录的.js文件。 - 检测向
audit.checkmarx.cx或raw.githubusercontent.com/.../68ed490b/...发起的 HTTPS POST 请求。 - YARA 扫描
mcpAddon.js特征字符串(GitHub Raw URL、Bun require() 调用链、凭证正则匹配模式)。 - CI/CD 流水线增加
git fsck与分支一致性校验,检测孤儿提交与异常时间戳回退。
网络与云环境监控:
- DNS/HTTP 日志:告警内部主机解析
*.checkmarx.cx或连接94.154.172.43 - GitHub API 监控:检测异常 Workflow 创建、非授权分支推送、公开仓库创建(含
mcpAddon或加密压缩包)。
容器与制品库防护:
- 强制实施镜像签名验证(Cosign/Notary),拒绝无签名或 Digest 不匹配的 checkmarx/kics 拉取请求。
- 启用 SBOM 生成与依赖漏洞扫描,结合哈希 IOC 进行制品库准入拦截。
应急响应措施
立即隔离:删除/隔离所有已拉取 checkmarx/kics:v2.1.20*、alpine、latest、v2.1.21 的容器实例;卸载并回滚受影响的 VS Code/Open VSX 扩展;网络层封禁 audit.checkmarx.cx 及 94.154.172.43。
凭证全面轮换:立即撤销所有在受影响环境使用过的 GitHub PAT、Azure/GCP/AWS 凭证、npm ~/.npmrc 令牌;轮换 CI/CD Secrets;审查近期 GitHub Actions 运行记录。
取证清理:检查 ~/.checkmarx/mcp/ 目录,清除 mcpAddon.js 及相关日志;审查 GitHub 账号下公开仓库、Docker Hub 发布记录。
架构加固:实施 OIDC 短时效令牌替代长期 PAT;启用 GitHub Advanced Security 的 Secret Scanning 与 Push Protection;推行 SLSA Level 3+ 构建标准,强制 Provenance 验证。
八、未来趋势研判
-
“寄生型”供应链攻击成为主流:
攻击者深度绑定开发者工作流(IDE 插件、CLI 工具、CI Runner),实现”无文件、无特征”驻留。
-
Git 历史操纵与运行时逃逸标准化:
倒填日期、孤儿提交、Raw URL 动态加载将成为 APT 标准 TTP;针对 Bun、Deno 原生插件滥用将激增。
-
自动化供应链蠕虫普及:
凭证窃取 – CI/CD 劫持 – 下游包重发布 – 环境感染的闭环将大幅降低攻击门槛。
-
防御范式向左移:
企业必须转向 SLSA、Sigstore、in-toto、OIDC 联邦认证、Git 提交签名等构建时信任体系,建立”零信任 SDLC”架构。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:奇安信 CERT 《深度分析 | 在官方 KICS Docker 中发现恶意 Checkmarx 构件》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论