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 的几个硬核理由:

  1. 漏洞管理刚需——物联网设备往往部署在无人值守的环境,一旦被攻击,物理修复成本极高。SBOM 能帮你快速定位哪些设备受某个漏洞影响。
  2. 合规要求——美国 EO 14028、欧盟《网络弹性法案》都在推动 SBOM 成为强制要求。出口海外的物联网产品,没有 SBOM 可能连市场准入都拿不到。
  3. 供应链透明度——物联网产业链很长,芯片厂、模组厂、软件开发商、设备集成商层层嵌套。SBOM 是打通供应链信任的关键。
  4. 许可证合规——开源组件有 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 软件物料清单 标准化格式(SPDX/CycloneDX) 组件、版本、许可证、依赖 为什么需要SBOM 漏洞管理 合规要求 供应链透明度 许可证合规 与普通SBOM区别 组件来源更复杂 更新频率低 硬件绑定 补丁成本高 物联网SBOM = 软件成分 + 硬件依赖 + 供应链上下文 比普通SBOM多一个“物理世界”的维度

这张图把咱们这一章的核心脉络理清楚了。从左到右,先搞清楚 SBOM 是什么,再理解物联网为什么离不开它,最后对比它和普通软件 SBOM 的差异。后面的课程,咱们会沿着这个框架一步步深入。

好了,第一章的内容就到这里。记住一句话:物联网设备的安全,从搞清楚里面装了什么开始。SBOM 就是那张“成分表”,没有它,你连自己设备里跑着什么东西都不知道,更别提做安全防护了。