蜂鸟加速下载安装资料站

SBOM列出组件,为何不能直接写成存在漏洞:组件身份、适用状态与VEX怎么分

SBOM中的组件名称用于建立软件清单和依赖关系,不能单独证明某项漏洞在产品中可以利用。判断风险还要匹配供应商、精确版本、代码是否存在、执行路径与防护条件,并结合VEX的状态、理由、时间和发布者持续复核。

扫描器在SBOM里看到一个开源组件,又在漏洞库里找到同名记录,于是把所有相关编号都算成产品漏洞。这个做法适合生成调查清单,却不足以直接宣布产品可被利用。组件身份、漏洞匹配和产品适用性属于三个不同层次。

SBOM回答软件由什么组成,漏洞资料描述已知缺陷,VEX表达某个发布者对特定产品与漏洞的当前判断。把三类资料连起来,风险排序才有明确依据。

组件命中只是调查入口

NTIA把供应商、组件名称、版本、其他唯一标识符、依赖关系、SBOM作者和时间戳列为最低字段。这些字段帮助工具识别组件,并映射到漏洞库或许可证资料。

名称相同并不保证对象相同。软件可能存在分支、重新封装、供应商补丁和版本别名。只按名称匹配,候选范围往往过大。版本字符串也由供应商维护,不同生态的编号规则并不完全一致。

因此,命中结果应保留为线索。核对时要看供应商、精确版本、包标识符、哈希和依赖位置。若身份仍有歧义,结果只能标为待核查,不能升级成确定风险。

SBOM记录的是身份与关系

SBOM可以表示组件被另一个软件包含,也能展示直接和传递依赖。它让维护者知道某个库可能位于哪些产品中,并在新漏洞出现时缩小搜索范围。

这份清单通常对应特定制品和特定时间。源代码阶段、构建阶段与成品分析得到的清单可能不同。编译器会移除代码,构建工具也可能引入实际使用的版本。判断产品时,应尽量使用与已交付制品相符的SBOM。

清单完整性也有边界。NTIA要求对未列出的依赖说明“已知未知”,区分组件确实没有更多依赖,还是作者尚未掌握全部关系。缺少这一说明时,空白不能自动解释为不存在。

漏洞资料和制品清单有不同节奏

NTIA指出,SBOM反映某个时间点的软件属性,漏洞资料却会持续变化。今天没有记录的组件,明天可能因新研究出现漏洞编号;旧漏洞的受影响版本范围也可能被修订。

把漏洞条目固定写进SBOM,容易出现时间错位。更稳妥的做法是分别维护清单和漏洞资料,再用组件标识符连接。扫描结果还要注明查询时间与资料版本。

同一个漏洞出现在依赖组件中,也未必让下游产品产生同样风险。受影响代码可能没有编进成品,可能永远不进入执行路径,也可能受到不可关闭的内建防护。

四种VEX状态回答什么

CISA的VEX指引列出四种产品状态:未受影响、受影响、已修复和调查中。状态绑定具体产品与具体漏洞,不能脱离产品版本单独引用。

状态可以支持的行动仍需核对的内容
未受影响暂不按可利用漏洞安排修补发布者、理由、产品范围与证据时间
受影响依供应商说明缓解或修复受影响版本、暴露面与可用修复
已修复验证目标制品是否包含修复修复版本、发布通道与实际部署
调查中保留优先级并等待更新临时防护、暴露条件与更新频率

状态把大量组件命中变成可处理队列。它没有取消维护者对资产、配置和实际版本的核对责任。

未受影响必须给出可检验理由

CISA把“未受影响”拆成五类理由。组件可能根本不在产品内;组件存在,但漏洞代码没有被带入;漏洞代码存在,却不在执行路径;代码会运行,但攻击者无法控制相关输入;或者产品已有不可绕过的内建缓解。

这些理由的证据要求不同。“组件不存在”可以用成品清单和文件分析支持。“代码不在执行路径”需要理解直接与间接调用。“攻击者无法控制”还要检查输入来源、权限和配置变化。

内建缓解也有条件。CISA说明,防护要在该软件的威胁模型中持续有效,且攻击者或用户不能关闭。另一个产品采用相似防护,不代表结论可以直接移植。

同一组件的两个相反场景

设想某个库包含一个有缺陷的解析函数。产品甲只调用该库的随机数功能,解析函数没有直接或间接调用路径。产品团队可以根据调用分析提出“漏洞代码不在执行路径”的未受影响理由。

产品乙允许用户上传文件,并把内容交给同一解析函数。组件名和版本或许完全相同,但外部输入能到达缺陷代码。此时产品乙可能属于受影响状态,需要限制输入、升级组件或采用供应商修复。

两者的区别不在漏洞库记录,而在产品如何使用组件。若产品甲后来加入文件解析功能,旧VEX也要重新评估。配置、插件和硬件变化都可能改变执行条件。

SBOM列出组件,为何不能直接写成存在漏洞:组件身份、适用状态与VEX怎么分 配图 1
SBOM列出组件,为何不能直接写成存在漏洞:组件身份、适用状态与VEX怎么分 配图 1

建立从命中到行动的证据链

第一层核对组件身份。记录供应商、名称、精确版本、包标识符、哈希、依赖位置和SBOM时间。名称模糊或版本缺失时,保持待核查状态。

第二层核对漏洞范围。查看漏洞编号的受影响版本、修订时间和发布者资料,避免把相似名称或不同分支混为同一组件。

第三层阅读VEX。检查发布者是否了解该产品,状态指向哪个版本,未受影响理由是否具体,发布时间是否晚于相关制品。受影响状态还应配有行动说明。

第四层结合实际环境。确认功能、配置、插件、网络暴露和权限是否符合VEX前提。若现场条件不同,供应商结论只能作为参考输入。

VEX仍有作者与时间边界

CISA明确说明,状态与理由是文件作者的主张,消费者可以接受,也可以要求更多证据。VEX围绕已知漏洞工作,未来出现的新漏洞或攻击链可能改变判断。

NIST也把VEX放在完整漏洞管理流程中。组织仍需接收披露、整合SBOM与漏洞资料、维持供应商响应,并及时执行缓解和修复。机器可读状态提高效率,却不会自动完成这些工作。

当理由清楚、范围精确且时间匹配时,VEX能减少无效修补,把资源留给真正受影响的产品。理由含糊、产品版本不符或声明过旧时,应回到组件与执行条件继续调查。

SBOM让组件可见,VEX让适用性判断可传递。可靠结论来自两者之间可复查的证据链,而不是看到组件名称就把风险写死。

资料依据:

  • 美国国家电信和信息管理局,《软件物料清单最低元素》,2021年7月12日。
  • 美国网络安全和基础设施安全局,《VEX状态理由》,2022年6月。
  • 美国国家标准与技术研究院,《软件供应链安全:漏洞管理》,2024年11月1日更新。

组件身份决定扫描器会关联哪些漏洞记录,因此名称或版本误配会扩大候选范围。产品调用关系决定缺陷代码能否接触外部输入,从而影响可利用性判断。VEX把分析结果传给下游,但版本、配置或新证据变化会让旧状态失效。

资料来源

  • 美国国家电信和信息管理局:《The Minimum Elements for a Software Bill of Materials (SBOM)》,发布或更新于 2021-07-12
  • 美国网络安全和基础设施安全局:《Vulnerability Exploitability eXchange (VEX) - Status Justifications》,发布或更新于 2022-06-01
  • 美国国家标准与技术研究院:《Software Security in Supply Chains: Vulnerability Management》,发布或更新于 2024-11-01