首页/安全/安全加固速查/组件清单(SBOM)与依赖台账
补丁与漏洞管理50 条

组件清单(SBOM)与依赖台账

现代漏洞响应拼的是清单速度:把“应用→版本→依赖→部署位置”的 SBOM 存档,新 CVE 出现时分钟级定位影响面。

安全加固速查安全更新于 2026-10-13

SBOM 是什么

SBOM(Software Bill of Materials,软件物料清单)描述一个应用或镜像由哪些组件、什么版本、来自哪里组成。它本身不修漏洞,解决的是新漏洞公布后“多快说清影响面”的问题:Log4Shell 这类事件的应急时间,大头都花在确认“我们哪里用了这个组件”。落地可以先是一份随版本归档的依赖清单,成熟后再统一到 SPDX/CycloneDX 这类标准格式。

基本信息

适用对象自研应用、容器镜像、外购交付物
产出物组件名 + 版本 + 来源 + 依赖关系
常见载体SPDX/CycloneDX 文件、package-lock.json、pip freeze 输出
维护时机每次构建或发版同步归档
验收要点关键应用能查到任意组件的版本

典型使用场景

  • 新 CVE 公布:按组件名检索清单,圈出受影响的应用与主机
  • 合规问卷与项目验收:甲方要求提供组件清单或依赖报告
  • 供应链评估:核对交付物是否夹带未声明的开源组件
  • 基础镜像治理:确认镜像内组件版本与官方基线是否一致
  • 升级决策:评估旧版本还有哪些系统在用,排定替换顺序

最小可行做法

最小可行做法
# Java 应用:导出依赖树并随版本归档
mvn dependency:tree -DoutputFile=deps-2026-10-13.txt
# 兜底盘点:直接列出应用目录下的 jar 清单
find /opt/app -name '*.jar' | sed 's#.*/##' | sort > sbom/jars-2026-10-13.txt
# Node 前端:提交 lock 文件即是最小 SBOM
cp web/package-lock.json sbom/web-lock-2026-10-13.json
# Python:冻结实际安装版本
pip freeze > sbom/requirements-2026-10-13.txt
# 容器:导出镜像配置,作为运行时组件的补充证据
docker image inspect registry.local/app:1.4.2 --format '{{json .Config}}' > sbom/image-config.json

清单最小要素

字段含义缺失后果
组件名依赖库或包的标识无法与 CVE 中的组件名对齐
版本精确版本号(含小版本)无法判断是否落在受影响区间
来源上游仓库、供应商或构建产物无法评估供应链风险与替代来源
依赖关系直接依赖还是传递依赖误判修复优先级,改错地方
部署位置在哪些镜像、主机、环境找到组件却找不到受影响的系统
不必等格式标准确定才动手:先做到“清单随版本归档、可检索”,格式统一放到第二阶段。
清单会暴露内部组件与版本,对外提供时按需裁剪字段,只交付对方确需的部分。

易错点

  • 清单只在立项时做过一次、之后不随版本更新:新 CVE 出现时拿到的是过期地图,等于没有清单
  • 只覆盖后端服务,漏掉前端依赖与容器基础镜像:npm 依赖与镜像内组件同样频繁爆漏洞,影响面被系统性低估
  • 只登记组件名不登记版本:同名组件横跨多个大版本,无法判断是否落在受影响区间
  • 清单不记录部署位置:知道“用了某组件”却不知道“哪几台机器在用”,应急时还要二次人工排查

数据来源与参考

  • NTIA:SBOM 最小要素
  • OWASP:组件依赖治理

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌