课题研究 云安全与容器安全 子课题03 · 第02页 / 共8页
03子课题 · 云原生软件供应链与镜像安全

云原生软件供应链与镜像安全第02页:供应链攻击谱系与威胁模型

供应链攻击不是单点漏洞问题,而是沿“源码—依赖—构建—分发—运行”五环节系统性渗透的信任劫持问题。本页建立供应链攻击谱系分类学(维护权劫持、依赖投毒、构建系统入侵、更新通道滥用、凭证泄露、恶意镜像六大谱系),以15起公开披露事件(event-stream、SolarWinds、Log4Shell、3CX、MOVEit、XZ Utils、tj-actions、trivy-action等)构建事件档案库,映射MITRE ATT&CK T1195系列子技术,并给出可复用的攻击树威胁建模模板。所有事件事实均以官方披露、司法文件与权威研究机构报告为准。

攻击谱系事件档案MITRE ATT&CK T1195威胁建模攻击树15起事件研究状态:研究中
本页定位威胁认知层:建立攻击分类学、事件档案与威胁建模方法
事件样本2018—2025年14起公开披露事件,均附可查来源
输出物攻击谱系表、ATT&CK映射表、攻击树模板、检测启示矩阵

01 · 供应链攻击的本质与生命周期映射

1.1 定义与判定标准

软件供应链攻击是指攻击者在软件的生产、交付或更新链路中植入恶意代码、篡改制品或劫持可信分发通道,使恶意内容随合法软件进入下游环境的攻击形态。MITRE ATT&CK将其归入战术T1195(Supply Chain Compromise),并按侵入点细分为T1195.001(软件依赖与开发工具)、T1195.002(硬件/软件附加组件)、T1195.003(产品采购与交付渠道)三个子技术。判定一起事件是否属于供应链攻击的核心标准是:恶意或有害内容的引入点位于受害者组织的安全边界之外、且借助了既有的信任关系(上游维护者、官方构建系统、签名发布包等)。

1.2 生命周期五环节映射

环节典型攻击手法代表性事件
源代码维护者账号劫持(凭证钓鱼、弱口令)、长期“养号”骗取提交权限、恶意PR合并event-stream(2018)、XZ Utils后门(2024)
依赖恶意包/仿冒包投毒、依赖混淆、命名空间抢注(typosquatting)eslint-scope(2018)、ua-parser-js(2021)、ctx(2022)、Cicada3301系列npm包(2024)
构建构建服务器入侵、构建脚本投毒、编译器/工具链污染、PPE毒化流水线执行SolarWinds SUNBURST(2020)、Codecov(2021)、tj-actions(2025)
分发下载站点/镜像源劫持、包注册中心账户接管、更新通道篡改3CX桌面客户端(2023)、MOVEit(2023,利用SQL注入污染更新链)、Octopus Scanner(2020,借IDE构建产物扩散)
运行恶意镜像投毒(挖矿/后门)、镜像层篡改、运行时依赖拉取Docker Hub恶意镜像系列、Docker Hub账户泄露(2019)

纵深防御含义:五环节中任何单点防护都无法根除风险——对“依赖”环节的漏洞扫描无法发现“构建”环节被篡改的构建脚本(SolarWinds形态),对“分发”环节的签名验证也无法覆盖“源代码”环节的恶意提交(XZ形态)。这正是后续第3—7页按“透明—证明—验证—治理”分层布防的根本原因。

02 · 攻击谱系分类学与事件档案

2.1 攻击谱系分类学(按初始侵入点)

谱系机制攻击成本与潜伏周期核心缓解措施
A. 维护权劫持钓鱼窃取维护者凭证;长期贡献博取信任后取得发布权低—中成本;潜伏周期可数周(event-stream)至数年(XZ)维护者2FA强制(PyPI关键项目2022年7月起强制)、发布双人复核、Sigstore密钥绑定身份
B. 依赖投毒向npm/PyPI等上传恶意包或仿冒包;利用依赖混淆覆盖私有包名极低成本;潜伏周期短(数小时—数天),依靠下载量快速扩散私有源隔离与命名空间保留、锁文件+哈希校验、依赖来源固定、OpenSSF Scorecard评估
C. 构建系统入侵攻陷构建服务器或篡改构建流程,在官方制品中植入后门高成本(目标价值高);潜伏周期可达数月(SUNBURST约14个月)SLSA L3隔离构建、构建provenance验证、制品哈希与来源交叉核对
D. 更新通道滥用污染自动更新机制或托管下载页面,下发篡改安装包中—高成本;依赖供应链上游单点签名安装包验证(如cosign签名的发布物)、更新通道HTTPS+签名双重校验
E. 分发端账户/仓库泄露凭证泄露导致仓库内容或令牌被盗用低成本;影响面取决于泄露令牌权限范围令牌最小权限+短期化(OIDC)、Secret Scanning、泄露后快速轮换
F. 恶意镜像投毒在公共镜像仓库发布带挖矿/后门程序的热门镜像或名称仿冒镜像低成本;依赖用户误拉取仅允许私有镜像仓库、digest固定、来源签名验证、镜像扫描+运行时行为检测

2.2 事件档案(本页收录15起公开披露事件)

档案事件年度分布(2018—2026,样本为本页收录的15起事件)
按首次公开披露年份统计;2021与2024年为两次高峰,分别对应SolarWinds后的“余震扩散”与XZ Utils事件;2026年3月trivy-action事件印证同类手法的持续演进
数据来源:各事件官方披露文件与权威研究机构的首次公开披露日期整理(详见下表“首次披露”列)。本图为档案样本统计,不代表全行业事件总量。
首次披露事件谱系关键事实(以官方披露/权威研究为准)
2018.11event-stream / flatmap-streamA 维护权劫持原维护者将包转让给攻击者控制账号,后者在依赖flatmap-stream中植入针对Copay比特币钱包的窃取代码。npm随后删除相关恶意版本;GitHub报告确认事件由比特币钱包定向攻击驱动。
2019.4Docker Hub数据泄露E 凭证泄露Docker官方通报数据库未授权访问,涉及约19万个账户的用户名、哈希密码,以及部分自动化构建用户的GitHub/Bitbucket令牌,迫使相关流水线凭证全面轮换。
2020.5Octopus ScannerD 更新通道滥用GitHub Security Lab披露:攻击者诱导开发者下载带毒NetBeans项目构建脚本,项目被构建后植入后门并回传构建产物,形成自传播循环;26个开源仓库被感染。
2020.12SolarWinds SUNBURSTC 构建系统入侵FireEye(现Mandiant)2020年12月8日披露其被入侵并归因于APT组织;SolarWinds于12月14日向SEC披露其Orion平台构建系统被入侵,约1.8万客户收到含SUNBURST后门的更新。攻击者在构建环境中植入恶意代码,经正规签名与更新通道分发。
2021.2依赖混淆研究B 依赖投毒安全研究员Alex Birsan公开研究:向npm/PyPI/RubyGems上传与多家公司私有包同名的公开包,成功在35家以上企业内部解析执行,获得超过13万美元漏洞赏金(各公司致谢记录可查)。该研究直接推动“命名空间保留/私有源隔离”成为行业基线。
2021.4CodecovC 构建系统入侵攻击者通过修改Codecov的Docker镜像创建脚本获取其bash uploader的导出凭证,进而窃取使用CI环境变量的客户机密。Codecov于2021年4月15日披露,影响其Bash Uploader用户。
2021.10ua-parser-jsB 依赖投毒npm流行UA解析库ua-parser-js的0.7.29/0.8.0/1.0.0版本被植入窃取密码与安装挖矿程序的恶意代码;维护者账号遭钓鱼接管,npm下架恶意版本并建议用户轮换凭证。
2021.12Log4Shell(CVE-2021-44228)B 依赖投毒(非恶意投毒,属“脆弱依赖放大”)阿里云安全工程师Chen Zhaojun于2021年11月24日向Apache报告,12月9—10日公开。Log4j2 2.0-beta9—2.14.1受影响,CVSS 10.0;JNDI查找功能允许攻击者加载远程代码。Apache连续发布2.15.0、2.16.0、2.17.0、2.17.1修复,成为各国监管机构紧急通报的标志性事件。
2022.5PyPI ctx与phpassB 依赖投毒ctx维护者邮箱过期后被接管,新版本加入环境变量窃取代码;同类手法波及PHP库phpass。事件显示“邮箱域名过期→包所有权转移→投毒”的低成本接管链。
2023.33CX桌面客户端D 更新通道滥用Mandiant(2023年3月29日报告)披露:3CX桌面客户端的合法更新被注入恶意代码,进一步归因于朝鲜相关攻击者利用Trading Technologies的X_Trader软件先前入侵(UNC4736)。这是“供应链中的供应链”级联攻击样本。
2023.5MOVEit Transfer(CVE-2023-34362)D 更新通道滥用(漏洞滥用型)Progress MOVEit Transfer的SQL注入漏洞被Cl0p勒索组织大规模利用,波及全球数千家机构、数千万级个人数据(多家监管机构通报口径合计)。属“软件漏洞+供应链批量利用”的混合型事件。
2024.3XZ Utils后门(CVE-2024-3094)A 维护权劫持微软工程师Andres Freund于2024年3月29日披露:xz 5.6.0/5.6.1的发布压缩包中,构建脚本经多层混淆(IFUNC重定向+RSA公钥校验)在liblzma中植入后门,可通过sshd经systemd链路触发(条件苛刻)。攻击者“Jia Tan”以数年贡献取得维护权。CVSS 10.0,CWE-506(嵌入恶意代码)。
2024.9Cicada3301系列npm包B 依赖投毒Check Point Research披露:攻击者在npm发布约30个携带执行器与勒索组件的包,伪装成常见工具(如json-web-token等仿冒名),通过preinstall脚本执行,Windows/Linux双平台投递。
2025.3tj-actions/changed-files(CVE-2025-30066)C 构建系统入侵(第三方Action)2025年3月14—15日,该Action的v1—v45.0.7标签被重指向含恶意提交的提交(哈希0e58ed8),在开启debug日志的流水线中将密钥等敏感值打印进可公开访问的运行日志;约2.3万个仓库使用该Action。CISA于3月18日将其纳入KEV目录;关联事件reviewdog/action-setup(CVE-2025-30154)采用同手法。
2026.3aquasecurity/trivy-action标签劫持C 构建系统入侵(第三方Action)安全社区归因于TeamPCP攻击活动:公开记录显示该Action的77个版本标签中76个被强制指向恶意提交(GitHub安全公告GHSA-69fq-xp46-6x23跟踪),恶意代码读取运行进程内存(/proc/PID/mem)并将CI密钥经多层base64编码后写入日志。这是tj-actions手法在一年后的同构再现,印证“固定commit SHA+运行内存防护”基线的持续有效性。
档案使用说明:①Log4Shell属“上游组件存在严重漏洞”而非“恶意投毒”,但其在组织内的影响面排查、修复优先级与沟通机制与投毒事件高度同构,故纳入谱系作为“脆弱依赖放大”子类;②“受影响规模”数据均来自事件官方披露、监管通报或权威研究机构报告,口径各异,引用时已注明来源属性;③MOVEit个人影响数以各国监管机构通报累计计,非单一机构口径。

03 · MITRE ATT&CK 战术映射

供应链攻击在ATT&CK中的主线归属为TA0043(Reconnaissance,侦察)→ TA0001(Initial Access,初始访问)阶段,核心子技术是T1195系列。将其映射到战术框架的价值在于:把“供应链”从抽象风险转化为可检测、可编排防御的战术阶段,并与T1059(命令与脚本解释器)、T1078(有效账户)、T1525(植入内部镜像/根镜像)等后续战术串联成完整攻击链。

ATT&CK子技术名称供应链语境对应防御层(本子课题)
T1195.001Compromise Software Dependencies and Development Tools依赖投毒、仿冒包、依赖混淆、构建工具污染(SolarWinds、Codecov、tj-actions)第3页SBOM成分审计、第7页流水线第三方Action管控、锁定依赖版本与来源
T1195.002Compromise Software Supply Chain软件附加组件与升级机制的篡改(3CX、MOVEit更新链)第5页签名验证、更新通道完整性校验
T1195.003Compromise Hardware Supply Chain硬件/固件供应链(本子课题不展开,保留映射完整性)—
T1525Implant Internal Image向私有镜像仓库/基础镜像注入后门,随CI构建扩散第6页私有仓库治理、准入扫描+digest固定
T1078 / T1550Valid Accounts / Use Alternate Authentication Material窃取的CI/CD令牌、云凭证被用于后续横向移动(Docker Hub 2019、Codecov)第7页OIDC短期凭证、泄露检测与轮换
T1059Command and Scripting Interpreter恶意包preinstall脚本、构建脚本、Action注入代码执行脚本执行审计、沙箱化构建(第4、6、7页)

注:子技术编号与描述以MITRE ATT&CK官方知识库为准(attack.mitre.org),不同版本间名称可能微调,引用时以访问日期版本为准。

04 · 威胁建模方法与攻击树示例

4.1 建模方法选择

  • 攻击树(Attack Tree):以“在下游环境执行恶意代码”为根节点,逐层展开侵入路径,适合对单一制品做穷尽式路径分析(如下例)。
  • STRIDE-LM映射:将供应链各环节资产映射至Spoofing/Tampering/Repudiation/Information Disclosure/Denial of Service/Elevation of Privilege六类威胁,适合流水线级架构评审。
  • 威胁情报驱动的画像:对XZ式“长期养号”与tj-actions式“标签劫持”分别建立攻击者行为指标(时间投入、身份一致性、发布模式突变),纳入供应商准入评估。

4.2 攻击树示例:恶意的容器镜像如何进入生产集群(简化)

层级节点对应真实事件锚点
根生产集群运行攻击者控制的容器镜像—
L1A. 镜像来自公共仓库(Docker Hub等)恶意挖矿镜像系列(安全厂商持续披露)
L1B. 镜像来自私有仓库但推送环节被突破Docker Hub 2019凭证泄露→自动化构建令牌滥用
L1C. 镜像内容在构建环节被篡改SolarWinds(构建脚本投毒)、Codecov(导出凭证泄露)
L2-A攻击者发布仿冒名/热门名镜像名称仿冒镜像(k8s.gcr.io等历史仿冒域名/镜像)
L2-B开发者误用latest标签或未固定digest依赖混淆研究揭示的解析逻辑滥用
L2-C流水线第三方Action被篡改(标签重指)tj-actions/changed-files(2025.3,CVE-2025-30066)
缓解L2-A/L2-B→第6页“仅私有仓库+digest固定”;L2-C→第7页“Action固定commit SHA+最小权限”;C→第4—5页“provenance+签名验证”;全路径兜底→运行时行为检测(子课题02)

4.3 建模产出要求

  • 每个关键制品(基础镜像、发布包、Agent安装包)应有一份带版本号的威胁模型文档,随架构变更复审;
  • 攻击树叶子节点必须关联至少一条可执行的检测或缓解措施,避免“纸面建模”;
  • 对上游组件引入建立供应商/组件风险评估清单:维护者身份可信度、发布频率、是否启用2FA与签名、历史安全事件。

05 · 检测启示小结(衔接后续各页)

谱系A/B
维护权劫持与依赖投毒
对策重心在“成分透明+来源固定”:SBOM(第3页)、锁文件、私有源治理、Scorecard评估(第8页)
谱系C
构建系统入侵
对策重心在“构建可证明”:SLSA分级与provenance(第4页)、第三方Action固定与审计(第7页);2026年trivy-action事件证明该基线必须持续执行
谱系D/F
分发通道与恶意镜像
对策重心在“分发可验证”:签名+透明度日志(第5页)、仓库治理与准入(第6页)
谱系E
凭证泄露
对策重心在“凭证短期化+快速轮换”:OIDC联邦、Secret Scanning(第7页)

本节参考来源(第2页)

[1]

MITRE ATT&CK T1195(Supply Chain Compromise)及子技术官方条目:attack.mitre.org/techniques/T1195。

[2]

Alex Birsan《Dependency Confusion: How I Hacked Into Apple, Microsoft and Dozens of Other Companies》(2021年2月):medium.com/@alex.birsan。

[3]

GitHub Security Lab《Octopus Scanner malware spreads through NetBeans projects》(2020年5月):securitylab.github.com。

[4]

Mandiant《3CX Software Supply Chain Compromise》报告(2023年3月):mandiant.com。

[5]

Andres Freund关于xz后门的披露邮件(openwall oss-security,2024年3月29日)与NVD CVE-2024-3094条目:nvd.nist.gov。

[6]

Step Security《tj-actions/changed-files is compromised》事件分析(2025年3月)与CISA KEV收录记录:cisa.gov/kev;Apache Log4j安全页:logging.apache.org。

[7]

Check Point Research《Who is Cicada3301?》(2024年9月)与Codecov官方披露(2021年4月):research.checkpoint.com、about.codecov.io/security-update。

[8]

Cycode《GitHub Actions Supply Chain Attacks Explained》(2026年6月,含trivy-action/TeamPCP事件梳理):cycode.com/blog/github-actions-supply-chain-attacks-explained。

[9]

event-stream事件技术还原(GitHub issue #116与npm公告,2018年11月):github.com/dominictarr/event-stream/issues/116。