
1. 引言软件供应链安全的挑战在当今高度互联、依赖开源和第三方组件的软件开发环境中软件供应链安全已成为企业和开发者面临的核心挑战。一次成功的攻击往往不是直接针对应用代码而是通过其依赖的某个存在漏洞的库或组件。为了有效管理这种风险两个关键概念应运而生SBOM软件物料清单和CVE通用漏洞披露。本文将深入介绍这两者并阐述它们如何共同构建软件供应链安全的基石。2. 什么是 SBOMSBOMSoftware Bill of Materials软件物料清单是一份包含软件构成组件及其关系的正式、机器可读的清单。它类似于制造业的“成分表”详细列出了构建软件所使用的所有“原材料”。2.1 SBOM 的核心要素组件信息包括组件名称、版本、供应商、唯一标识符如 PURL、CPE。依赖关系清晰展示组件之间的层级依赖关系。创建者与时间戳记录 SBOM 的生成工具、创建者和创建时间。数据格式常见的标准格式包括 SPDX、CycloneDX 和 SWID。2.2 SBOM 的价值与作用透明化供应链让软件使用者清楚知道软件内部包含什么。漏洞影响分析当某个组件爆出漏洞CVE时能快速定位受影响的软件产品。许可证合规帮助管理开源组件的许可证义务避免法律风险。软件维护与升级为组件升级、替换和生命周期管理提供依据。3. 什么是 CVECVECommon Vulnerabilities and Exposures通用漏洞披露是一个公开的、标准化的漏洞字典。它为每个已知的网络安全漏洞分配一个唯一的、可追溯的标识符如 CVE-2021-44228。3.1 CVE 的关键信息CVE ID唯一标识符格式为 CVE-年份-序列号。描述对漏洞类型、影响和可能攻击方式的简要说明。参考链接指向漏洞详情、公告、补丁或分析报告的链接。严重性评分通常使用 CVSS通用漏洞评分系统分数来量化漏洞的严重程度。3.2 CVE 的生命周期与数据库CVE 条目由 CNACVE 编号机构分配和管理。主要的公共漏洞数据库如美国国家漏洞数据库NVD会收录 CVE 并对其进行丰富添加严重性评分、受影响的产品列表和修复建议等。安全团队和扫描工具通过查询这些数据库来识别风险。4. SBOM 与 CVE 如何协同工作SBOM 和 CVE 是软件供应链安全管理的“地图”与“警报系统”。建立清单SBOM首先为软件生成一份详细的 SBOM明确所有组件。关联漏洞CVE利用漏洞扫描工具或服务将 SBOM 中的组件信息与 CVE 数据库进行比对。风险评估与响应工具会列出所有匹配到的、影响当前组件的 CVE并结合 CVSS 分数帮助团队确定修复优先级制定补丁或缓解措施。这个过程实现了从“我们用了什么”到“我们用的东西里有什么风险”的闭环。5. 实践生成与使用 SBOM5.1 如何生成 SBOM现代构建工具和专用工具可以自动生成 SBOM编程语言生态对于 Node.js 项目可以使用 npm audit 或 cyclonedx-npm对于 JavaMaven/Gradle可使用 cyclonedx-maven-plugin 或 OWASP Dependency-Check。容器镜像使用 Syft、Trivy 或 Docker Scout 分析镜像层并生成 SBOM。独立工具如 OWASP Dependency-Track可用于集中管理和分析多项目的 SBOM。5.2 漏洞扫描与修复流程示例# 1. 为示例 Node.js 项目生成 SBOM (CycloneDX 格式) npx cyclonedx/cyclonedx-npm --output-file bom.json 2. 使用 Trivy 扫描 SBOM 文件中的漏洞 trivy sbom bom.json 输出将显示类似以下信息 my-app (node 18.0.0) Total: 2 (UNKNOWN: 0, LOW: 1, MEDIUM: 0, HIGH: 1, CRITICAL: 0) ------------------------------------------------------------------------------------------------------------------------ | LIBRARY | VULNERABILITY ID | SEVERITY | INSTALLED VERSION | FIXED VERSION | TITLE | ------------------------------------------------------------------------------------------------------------------------ | lodash | CVE-2021-23337 | HIGH | 4.17.20 | 4.17.21 | Prototype Pollution in lodash | | minimist | CVE-2020-7598 | LOW | 1.2.5 | 1.2.6 | minimist prototype pollution | ------------------------------------------------------------------------------------------------------------------------根据扫描结果开发者可以决定升级 lodash 到安全版本4.17.21以修复高危漏洞。6. 总结在软件供应链攻击日益频繁的今天SBOM提供了必要的透明度而CVE则提供了标准化的风险情报。将两者结合组织能够实现主动式风险管理在漏洞被利用前发现并修复。合规与审计满足日益严格的软件供应链安全法规要求如美国行政令、欧盟 Cyber Resilience Act。建立信任向客户和合作伙伴证明对软件安全的重视。将 SBOM 生成和 CVE 扫描集成到 CI/CD 流水线中是实现 DevSecOps 和构建安全软件供应链的关键一步。