3. IoT组件供应链威胁建模
IoT设备的软件栈不是单一程序,而是一条由多家供应商逐层拼装出来的“组件供应链”。一台典型的智能摄像头,其芯片来自半导体厂商,模组由方案商集成,操作系统可能是裁剪过的Linux或RTOS,中间件包含MQTT客户端、TLS库、OTA升级代理,应用层则是设备厂商自己写的业务逻辑。威胁建模要回答的核心问题是:攻击者能从哪一层进入,又能沿着什么路径向上或向下传导,最终控制设备、数据或云端账户。
一、五层攻击面:从物理硅片到业务逻辑
把IoT组件栈拆成五层,每层的攻击面性质差异很大,防护手段也不通用。
- 芯片层:关注调试接口(JTAG/SWD)是否在量产时熔断、安全启动根密钥是否固化在OTP/eFuse、Flash是否支持加密读取。典型风险是调试口未关闭,攻击者用几十元的调试器即可读出固件。
- 模组层:Wi-Fi/蜂窝模组常带独立固件与AT指令通道。若AT通道未做鉴权,或模组固件版本长期不更新,攻击者可绕过主控直接操作网络能力。
- OS层:内核版本、驱动、文件系统权限、默认账户。裁剪系统常删掉安全模块却保留root shell,或把只读分区做成可写。
- 中间件层:TLS库(如OpenSSL/mbedTLS)、MQTT/CoAP协议栈、OTA代理、日志组件。这一层是第三方组件漏洞最密集的区域,一个CVE往往同时影响数十款设备。
- 应用层:设备业务逻辑、云对接凭证、本地Web/API接口。常见问题是硬编码密钥、命令注入、未鉴权的配置接口。
下面这张图把五层攻击面、典型入口和风险传导方向放在同一视图中,便于定位“一个漏洞会波及到哪里”。
二、典型供应链攻击案例与传导路径
案例一:Mirai僵尸网络(2016)。攻击者并未挖掘复杂漏洞,而是利用设备出厂默认口令(如admin/admin、root/xc3511)通过Telnet批量登录。传导路径是:应用层默认凭证 → OS层root shell → 设备被植入Mirai样本 → 扫描并感染同网段其他IoT设备。它说明供应链最薄弱环节往往不是代码漏洞,而是出厂配置。
案例二:SolarWinds式供应链投毒(2020)。攻击者入侵软件供应商的构建环境,在合法更新包中植入后门,下游数万客户在正常升级时被感染。映射到IoT场景,等价于OTA服务器或模组固件仓库被篡改:设备主动拉取“合法签名”的恶意固件,应用层、OS层、模组层同时失守。防御重点是构建链完整性、双人复核与产物哈希比对。
案例三:Log4Shell类中间件漏洞(2021)。一个日志组件的JNDI解析缺陷,使攻击者通过构造字符串触发远程类加载。在IoT中,若MQTT消息或HTTP头被写入日志,中间件层漏洞可直接导致远程代码执行,再向上控制应用层。传导路径短、影响面广,是“中间件层单点放大”的典型。
三、威胁建模的落地方法
建议按“资产—入口—传导—影响”四步建立模型,而不是只列漏洞清单。
- 资产清点:记录每台设备的芯片型号、模组固件版本、OS内核版本、中间件组件及版本、应用服务端口。版本号是后续比对CVE的基础。
- 入口枚举:物理口(UART/JTAG/USB)、网络口(Telnet/SSH/HTTP/MQTT/CoAP)、无线口(BLE/Zigbee)、云接口(设备证书、API Token)。
- 传导分析:对每个入口问三个问题——能否读到凭证?能否提权?能否写入持久化位置(固件、启动脚本、模组配置)?
- 影响定级:结合设备数量、数据敏感度、是否可远程触发,给出风险等级与修复优先级。
# 1. 解包固件(示例)
binwalk -e firmware.bin
# 2. 提取根文件系统中的组件版本
find squashfs-root -name "*.so*" -exec strings {} \; | grep -iE "openssl|mbedtls|mosquitto|libcurl" | sort -u
# 3. 输出示例(合理假设)
# OpenSSL 1.0.2k
# mbedTLS 2.16.6
# libmosquitto 1.6.9
# libcurl 7.68.0
拿到版本后,例如OpenSSL 1.0.2k对应多个已知CVE,若设备又暴露了使用该库的HTTPS服务,就应把“中间件层TLS漏洞”列为高优先级。判断依据是:组件版本命中CVE + 该组件在网络路径上可达 + 设备可被远程访问,三者同时成立才构成实际可利用风险,缺一不可。
四、风险传导的收敛策略
供应链威胁无法靠单层防御解决,应按“阻断传导”而非“堵住所有漏洞”来设计。具体做法包括:在芯片层熔断调试口并启用安全启动,使固件不可被替换;在模组层关闭未使用的AT指令并锁定固件版本;在OS层启用只读根文件系统与最小权限账户;在中间件层建立SBOM并跟踪CVE,对TLS/MQTT组件设置版本基线;在应用层禁止硬编码密钥,改用每设备唯一证书。这样即使某一层出现漏洞,攻击者也难以完成“读取凭证→提权→持久化”的完整链条,风险被限制在单层之内。
威胁建模的产出不应是一份漏洞列表,而是一张可追溯的“层—入口—传导—影响”映射表。它让安全团队知道:修哪个组件能同时降低多层风险,哪个入口一旦失守会直接导致批量设备沦陷。这正是IoT供应链安全治理从被动响应转向主动设计的关键一步。