3. 固件供应链威胁模型
固件供应链威胁模型的核心任务,是把“谁可能在哪里、通过什么方式、对哪个组件做什么、最终影响什么”讲清楚。与普通应用软件不同,固件组件往往在设备出厂前就被固化,运行在特权层级,且更新周期长、可见性差。因此,威胁建模不能只盯着最终固件镜像,而要沿着“上游组件来源—集成构建—签名发布—设备部署—运行更新”这条链条逐段识别攻击面。
一、固件组件的攻击面分布
固件供应链的攻击面可以按“组件生命周期位置”划分为五类。第一类是来源侧攻击面:开源仓库、第三方SDK、芯片厂商BSP、闭源二进制库等上游来源,若缺乏来源核验,攻击者可通过投毒、抢注同名包、劫持维护者账号等方式注入恶意代码。第二类是构建侧攻击面:编译工具链、构建脚本、依赖解析器、CI/CD执行环境,若被篡改,可在编译阶段插入后门而不改动源码。第三类是分发侧攻击面:签名服务器、密钥管理、OTA服务器、镜像仓库,攻击者可能窃取签名密钥或替换分发镜像。第四类是设备侧攻击面:BootROM、引导加载程序、固件更新接口、调试口(JTAG/UART),物理接触或远程接口都可能成为入口。第五类是运行侧攻击面:固件运行后的配置加载、远程管理协议、组件间通信,可能被利用进行持久化驻留。
二、四类典型威胁的机理与识别特征
后门植入是最具破坏力的威胁。它通常不依赖已知漏洞,而是攻击者主动在组件中预留隐蔽入口。常见手法包括:在开源组件中提交看似正常的代码变更,实际在特定条件下触发远程命令执行;在构建脚本中插入下载器,编译时从外部拉取恶意载荷;在闭源二进制库中嵌入隐藏调试账户。识别特征包括:代码中出现与业务无关的网络连接、异常的条件分支、硬编码的凭证或密钥、以及构建产物与源码不一致的哈希差异。
漏洞利用则利用组件中已存在的缺陷。固件组件常见漏洞类型包括:内存破坏(缓冲区溢出、释放后使用)、协议解析缺陷(畸形报文导致崩溃或越权)、权限校验缺失(调试接口未鉴权)、以及加密算法误用(弱随机数、硬编码密钥)。识别漏洞的关键是建立组件物料清单(SBOM),将每个组件的版本号与CVE数据库比对,并评估该漏洞在固件运行环境中是否可达、是否可被远程触发。
篡改替换发生在分发和更新环节。攻击者可能窃取签名私钥,对恶意固件进行合法签名;也可能利用降级攻击,将设备回滚到存在已知漏洞的旧版本;还可能通过中间人劫持OTA通道,替换更新包。识别特征包括:签名验证失败、版本号异常回退、镜像哈希与官方发布记录不一致、以及更新服务器证书异常。
仿冒伪造则针对组件的“身份”做文章。攻击者可能注册与知名组件相似的包名,诱导开发者误用;也可能伪造厂商签名证书,让恶意组件看起来来自可信来源。识别特征包括:包名拼写细微差异、发布者信息与官方不符、签名证书链不完整或自签名、以及组件行为与声明功能不一致。
三、风险传导路径与影响评估
风险传导不是单点事件,而是一条链式反应。以某路由器固件为例:上游一个开源网络协议库被投毒,攻击者在其中插入了在特定报文触发下开启Telnet后门的代码。该库被集成到芯片厂商的SDK中,SDK再被路由器厂商用于构建固件。由于构建环节未做源码与二进制一致性校验,后门顺利进入最终镜像。固件经过签名发布,设备出厂后批量部署。攻击者通过发送特定报文即可远程开启后门,进而控制设备、窃取流量或组建僵尸网络。整个传导路径可概括为:上游污染 → 构建放大 → 分发失守 → 设备感染 → 业务受损。
评估风险时,应重点关注三个维度:可达性(攻击者能否远程触达该组件)、权限级(组件运行在什么特权层级)、持久性(感染后能否在重启、恢复出厂设置后存活)。三者叠加越高,风险等级越高。例如,一个运行在BootROM阶段、可通过网络更新接口触达、且能持久化驻留的漏洞,其风险远高于一个仅影响应用层日志输出的缺陷。
四、威胁建模的落地检查要点
在实际项目中,威胁建模不是一次性文档,而应嵌入组件引入、构建、发布、运维四个环节。组件引入时,检查来源是否官方、版本是否锁定、哈希是否记录;构建时,检查工具链是否可信、构建环境是否隔离、产物是否可复现;发布时,检查签名密钥是否受控、分发通道是否加密、版本回滚是否受限;运维时,检查设备固件版本分布、更新成功率、异常连接行为。只有把威胁模型转化为可执行的检查项,才能真正降低供应链风险。