产品版本走到交付、审计或者漏洞排查这一步的时候,组件清单一般都需要单独导出来,当成留档材料。Cybellum所具备的Asset&SBOM Management能力,能够把二进制扫描的结果、源码分析的数据,还有从外部拿到的SBOM信息合并到一起,并且对重复的组件做去重,还支持修正、校验和审批。这些操作完成之后,平台也能把最终结果输出成SPDX或CycloneDX格式,方便拿给客户、供应商,或者让合规团队继续往下用。
一、在Cybellum里怎样导出组件清单
从Cybellum导出组件清单,先得确认当前页面对应的是不是正确的产品、版本和分支。不同部署版本里,菜单名称可能有一点点出入,但基本的操作逻辑没有太大差别。
1、进入目标产品的准确版本
打开产品管理页面,先选定要导出的那个产品,然后再进一步进到对应的Version或Branch里去,不要在图省事的情况下,直接从产品总览页上点导出。那样一来,很容易把好几个版本的数据都搅到一块儿;到了正式交付的时候,更合适的做法是先核对版本号、固件编号以及创建时间,确认一切无误再动手。
2、打开SBOM组件列表
进到当前版本的【SBOM】或者【Assets】区域,就能看到已经汇总好了的组件列表。Cybellum在这一步可以把来自二进制分析、源码数据、外部SPDX、CycloneDX和CPE CSV等多个来源的信息合并起来,已经对重复出现的组件做过一次去重处理,所以列表里呈现的通常就是整合之后的干净结果。
3、挑选一种合适的导出格式
在页面中点击【Export】按钮,或是跟报告导出相关的入口,再根据准备交付给谁来选定格式。如果后面还需要人工核对,可以同步导出一份表格或报告;要是打算让其他安全平台接着处理,就优先选用机器可读的格式。按照Cybellum官方资料的描述,平台既能生成报告,也可以把高质量的SBOM以SPDX和CycloneDX格式共享出去,让后续的对接更顺畅。
二、组件清单导出后该怎么校验字段
清单文件出来以后,不能光看文件能不能正常打开就完事,真正应该检查的,是里面的字段填得够不够完整、版本准不准确,以及组件之间的关系清不清晰。
1、先核对最基础的几个字段
对每一个组件,最低限度也要检查这几个地方:供应方是谁、组件叫什么名字、版本号是什么、唯一标识符是什么、依赖关系是什么,以及这份SBOM是谁在什么时间生成的。按照NTIA在SBOM基础要求里给出的建议,这些字段同样被看作是需要一直维护下去的核心信息,哪一项缺了,后面的使用都会受影响。
2、检查组件名称和版本号
组件名称不能只留下简称就完事了,版本号也不能长时间空着。比方说,同一个库在不同固件里可能同时存在好几个版本,名字虽然一样,版本不同,后面去做漏洞匹配的时候,得到的结果就会完全不同。遇到自动扫描出来感觉不太准确的组件,要回到源码的依赖声明、二进制文件的名称,还有供应商提供的材料里去重新核对一下,不能就这么将错就错地用下去。
3、检查唯一标识符
这个唯一标识,后面是用来跟漏洞库和许可证信息打通的,比较常见的字段包含CPE、PURL或者其他的组件标识。如果发现同一个组件出现了好几条看着差不多的记录,那就要去查一查,是不是因为命名习惯不一样、版本写法有差异,又或者是因为来源不同而产生了不必要的重复,因为每多出来一条重复记录,后面追踪起来就会多出一层混乱。
4、检查依赖关系
组件清单不应该只是一张平铺的列表,还得把直接依赖了哪些、间接依赖了哪些,以及这些依赖分别属于哪个产品版本,都一一确认清楚。依赖关系这一块一旦缺失,后面就很难去判断某个漏洞到底会影响到哪一款产品。SBOM所能发挥的重要作用之一,就是提供组件和依赖之间的透明度,帮助团队更好地识别和管理漏洞,所以这部分数据的质量非常关键。
三、校验完成之后怎样留存版本
组件清单不是一份做完就可以不再管的文件,以后固件更新了、供应商库升级了,或者漏洞修复了,都需要把新的版本记录保留下,否则新旧数据混在一起,以后想追溯都没办法。
1、按照产品版本分开归档
每一次导出的同时,顺手记下产品名称、固件版本、分支、导出日期和文件格式,把对应的文件夹建好。不要只留下一份最新的文件,把前面的一概都覆盖掉,那样回头想要查某一个历史版本的状态,就没有什么根据了。
2、把修正和审批的记录也保留下来
Cybellum支持对SBOM做一些自动修正、校验和审批;如果在核查过程中遇到过组件名称需要补录、版本号需要纠正,或者好几条重复记录需要合并的情况,就要把每一次变更的依据留下来。有了这些记录,往后做审计的时候,别人才看得明白某一条数据当初是因为什么原因改动的,而不是怀疑有人随意动了这份清单。
3、在交付之前做一次抽查
到了正式提交之前,从核心的组件里挑几个,再从第三方库和那些看上去风险较高的依赖当中抽一些,做一次快速检查,确认它们的字段是完整的、版本是准确的、依赖关系也没有在什么地方断掉。经过这么一道工序,这份导出的组件清单,才能真正放心地用在漏洞排查、合规提交,还有供应链沟通这些场合里。
总结
关于Cybellum组件清单怎么导出,以及导出以后字段该怎么校验,操作上可以这样来梳理:先进入目标产品的具体版本,打开SBOM组件列表,再选择合适的格式,导出成SPDX或CycloneDX;导出之后,重点核对供应方、组件名称、版本、唯一标识、依赖关系、作者还有生成时间这几个方面。组件清单在校验完以后,还需要按产品版本分开归档,并且把修正和审批的记录一并保留好,免得后面做漏洞追踪的时候找不到对应的依据,到头来还得重新翻查。