1. 物联网SBOM概述:什么是SBOM、为什么物联网需要SBOM、SBOM与普通软件SBOM的区别
各位同学,咱们今天聊一个在物联网圈子里越来越绕不开的话题——SBOM。说实话,我最早接触这个概念是在2018年,当时给一家智能家居厂商做安全审计,发现他们的固件里用了十几个开源组件,但没人说得清具体用了哪些版本、有没有已知漏洞。那场面,真叫一个混乱。
从那以后,我个人习惯在每一个物联网项目启动时,先把SBOM这件事定下来。你可能会问:SBOM到底是什么?物联网为什么非要搞这个?它跟咱们平时说的软件SBOM有啥不一样?别急,咱们一个一个拆开讲。
1.1 什么是SBOM
SBOM,全称是 Software Bill of Materials,翻译过来就是“软件物料清单”。说白了,它就像一张成分表。你去超市买零食,包装背面会列出配料、添加剂、生产日期。SBOM 就是给软件产品做的成分表——里面列着用了哪些开源库、什么版本、许可证信息、依赖关系等等。
核心定义:SBOM 是一份结构化、机器可读的清单,记录了软件产品中所有组件的详细信息,包括组件名称、版本号、供应商、依赖关系、许可证类型以及已知漏洞关联。
嗯,这里要注意,SBOM 不是一张简单的 Excel 表格。它通常采用 SPDX、CycloneDX 或 SWID 等标准格式。我见过不少团队自己用 Excel 维护组件清单,结果版本一多就乱套了。标准化格式的好处是——工具能自动解析、自动比对漏洞库,省心得多。
举个例子,一个典型的 CycloneDX 格式的 SBOM 片段长这样:
{
"bomFormat": "CycloneDX",
"specVersion": "1.4",
"components": [
{
"type": "library",
"name": "openssl",
"version": "1.1.1k",
"purl": "pkg:generic/openssl@1.1.1k",
"licenses": [
{ "license": { "id": "OpenSSL" } }
]
}
]
}
你看,机器一眼就能认出:哦,这个产品用了 OpenSSL 1.1.1k,许可证是 OpenSSL。如果哪天爆出 OpenSSL 1.1.1k 有高危漏洞,SBOM 工具能立刻告警。
1.2 为什么物联网需要SBOM
你想想看,一个典型的物联网设备里有多少软件成分?以我去年拆解过的一台智能网关为例:
- Linux 内核(定制版)
- BusyBox 工具集
- OpenSSL 加密库
- MQTT 客户端库(开源)
- Web 服务器(轻量级)
- 若干设备驱动(部分来自芯片原厂)
- 第三方 SDK(比如云平台接入 SDK)
数一数,少说二三十个组件。而且这些组件来自不同供应商,版本迭代快,依赖关系复杂。没有 SBOM,你根本不知道设备里到底跑着什么东西。
物联网需要 SBOM 的几个硬核理由:
- 漏洞管理刚需——物联网设备往往部署在无人值守的环境,一旦被攻击,物理修复成本极高。SBOM 能帮你快速定位哪些设备受某个漏洞影响。
- 合规要求——美国 EO 14028、欧盟《网络弹性法案》都在推动 SBOM 成为强制要求。出口海外的物联网产品,没有 SBOM 可能连市场准入都拿不到。
- 供应链透明度——物联网产业链很长,芯片厂、模组厂、软件开发商、设备集成商层层嵌套。SBOM 是打通供应链信任的关键。
- 许可证合规——开源组件有 GPL、LGPL、MIT 等不同许可证。我在项目中遇到过一家公司因为误用了 GPL 代码,差点被要求开源整个固件。SBOM 能帮你提前规避这类风险。
我曾经踩过的坑:有一次做车联网 T-Box 的安全评估,客户说他们的固件“应该没有开源组件”。结果我用工具一扫描,发现里面嵌了一个旧版 zlib,而且正好有已知的拒绝服务漏洞。因为没有 SBOM,这个漏洞在产线上躺了两年没人发现。从那以后,我坚持所有物联网项目必须从第一天就建立 SBOM 管理流程。
1.3 SBOM与普通软件SBOM的区别
很多刚接触物联网的朋友会问:SBOM 不就是软件 SBOM 吗?物联网设备里跑的不也是软件?话是没错,但物联网 SBOM 和传统 IT 软件 SBOM 之间,差别还真不小。
我整理了一张对比表,你看完就明白了:
| 对比维度 | 普通软件SBOM | 物联网SBOM |
|---|---|---|
| 组件来源 | 以开源库、商业组件为主 | 包含开源库、商业组件、芯片固件、RTOS、驱动程序、硬件抽象层 |
| 更新频率 | 随应用版本发布,通常按月/季度 | 设备出厂后极少更新,甚至终身不更新 |
| 部署环境 | 服务器、PC、手机,可远程升级 | 嵌入式设备、传感器、控制器,物理访问困难 |
| 依赖深度 | 通常 2-3 层依赖 | 可能深达 5-6 层,包含硬件依赖 |
| 漏洞影响 | 可在线打补丁 | 补丁难下发,常需整机替换 |
| 许可证风险 | 主要关注应用层许可证 | 需关注内核、驱动、固件的许可证兼容性 |
| 生成方式 | 可从包管理器自动生成 | 需结合编译工具链、二进制分析、硬件手册手动梳理 |
说白了,物联网 SBOM 比普通软件 SBOM 更复杂、更难维护、一旦出问题代价也更大。普通软件出了漏洞,发个补丁用户点一下更新就行。物联网设备呢?你想想看,一个部署在偏远山区基站里的传感器,或者嵌在工业生产线里的控制器,要升级固件得派人到现场,甚至要停机维护。这成本完全不是一个量级。
另外,物联网 SBOM 还有一个普通软件没有的维度——硬件绑定。比如某个芯片的固件版本必须匹配特定的驱动版本,驱动版本又依赖特定的内核版本。这种软硬件耦合关系,在普通软件 SBOM 里基本不会出现。
我的建议:做物联网 SBOM 时,别只盯着软件层。把芯片型号、固件版本、硬件抽象层版本都纳入清单。我习惯在 SBOM 里加一个 "hardwareDependencies" 字段,专门记录硬件相关的依赖关系。这样后续做漏洞影响分析时,能更精准地定位到具体设备型号。
1.4 物联网SBOM的知识体系总览
为了让你对整章内容有个直观印象,我画了一张结构图。它把物联网 SBOM 的核心要素串在了一起:
这张图把咱们这一章的核心脉络理清楚了。从左到右,先搞清楚 SBOM 是什么,再理解物联网为什么离不开它,最后对比它和普通软件 SBOM 的差异。后面的课程,咱们会沿着这个框架一步步深入。
好了,第一章的内容就到这里。记住一句话:物联网设备的安全,从搞清楚里面装了什么开始。SBOM 就是那张“成分表”,没有它,你连自己设备里跑着什么东西都不知道,更别提做安全防护了。