古代软件都是组装的而非纯自研。随着开源组件在数字化利用中的应用比例越来越高,混源开发已成为以后业内支流开发方式。开源组件的引入尽管放慢了软件开发效率,但同时将开源平安问题引入了整个软件供应链。软件组成成分的透明性成为软件供应链平安保障的根底,SBOM(Software Bill of Materials,软件物料清单)作为软件供应链平安治理的重要抓手,其在行业的利用实际速度显著放慢。

软件供应链平安治理

供应链平安概述

供应链(Supply Chain)指生产及流通过程中,波及将产品或服务提供给最终用户流动的上游与上游企业所造成的网链构造,行将产品从商家送到消费者手中整个链条。供应链的流动是指将天然原材料一直组装成消费者须要的成品的过程,描述了产品供应关系。整个供应链零碎波及到人员、组织、资料、数据等。

软件供应链的定义由传统供应链概念扩大而来,指软件生命周期中从需要、设计、开发、构建、打包、公布、洽购、部署、运维、下线到销毁整个链路,通常波及软件生产者(供应商/上游)、软件使用者(消费者/上游)以及软件运营者(公司或者企业)三个方面。

软件供应链平安则是和针对软件供应链的攻打无关。攻击者通过网络工具、下载投毒、代码净化、破绽利用、受权流氓等伎俩在软件供应链各个流动环节中,对企业业务零碎进行破坏性操作。近几年比较严重的软件供应链安全事件有SolarWinds(太阳风暴)攻打、Realtek WiFi SDK破绽、Apache Log4j2破绽等。

危险治理重点

软件供应链过程危险治理,次要包含软件起源治理、软件平安合规性治理、软件资产治理、服务反对及平安应急响应,目标是晋升软件供应链可追溯性和透视性。其中重点的治理内容,包含软件资产的第三方组件威逼审查、软件平安合规性治理。


图1 软件供应链治理重点区域

为了帮忙企业无效解决软件供应链平安问题,SBOM作为软件供应链平安要害的技术工具之一,可能达到对立描述软件资产信息格式、帮助对洽购软件和自研软件危险评估、造成软件供应链流动中传递的软件信息接口标准。

何为SBOM

晚期SBOM的概念源自制造业,其中物料清单BOM是用来具体阐明产品中蕴含的所有我的项目的清单。例如在汽车行业,制造商为每辆车提供一份具体的物料清单,列出原始设施制造商制作的部件以及来自第三方供应商的部件。当发现有缺点的部件时,汽车制造商能够精确地晓得哪些车辆受到影响,进而告诉车主培修或更换。软件物料清单SBOM则是用来形容软件产品中蕴含的组件物料信息,示例如下:


图2 SBOM示例

但随着供应链安全事件的降级,2021年7月12日美国在对于改善国家网络安全的行政命令(EO 14028第10节)中将SBOM定义为“蕴含构建软件中应用的各种组件的详细信息和供应链关系的正式记录”。软件开发商和供应商通常通过组装现有的开源和商业软件组件来创立产品,新的定义将软件供应链关系纳入记录范畴。


图3 组件关系图示

SBOM的元素


图4 NTIA《The Minimum Elements For a Software Bill of Materials (SBOM)》

美国NTIA(National Telecommunications and Information Administration,国家电信和信息管理局)2021年7月公布了SBOM所蕴含的最小必需元素。这些元素蕴含以下三类:

SBOM最小必需元素形容了实际过程中须要的元素最小集,相干组织和机构可通过参考以上三类元素,并扩大企业本身须要治理的额定信息,形成适宜本身的规范SBOM清单。从国内开源组件治理要求和软件全生命周期危险角度剖析,举荐适宜扩大数据字段如下:

SBOM的格局

目前SBOM次要通过三种格局来进行施行:

1.SPDX

SPDX是一种国内凋谢规范(ISO/IEC 5962:2021)格局,蕴含与软件包相干的组件、许可证、版权和平安参考信息。SPDX规范由Linux基金会主办的草根开源我的项目开发,目前保护到最新2.3版本,特点是对许可证的详细信息反对较好,次要输入文件格式包含RDF、XLS、SPDX、YAML、JSON。

SPDX Lite是SPDX的轻量级子集,实用于不须要残缺SPDX的场景,旨在让没有开源许可常识或教训的人易于应用,用于均衡SPDX规范与某些行业工作流程理论需要。

2.CycloneDX

CycloneDX专为平安环境和供应链组件剖析而构建,是一种轻量级SBOM规范,可用于应用程序平安上下文和供应链组件剖析。CycloneDX源于OWASP社区的开源我的项目,由提供策略方向和规范保护的外围团队领导。目前最新保护到1.4版本,可扩大格局并集成SPDX许可证ID、pURL和其余内部标识符,次要输入格局包含XML、JSON。

3.SWID

SWID是一个标准化的XML格局,能够辨认软件产品的组成部分并将其与上下文联合,记录无关软件组件的惟一信息,如产品名称、版本详细信息等。SWID标签在SDLC公布后增加作为软件产品的一部分,在软件装置时将标签信息增加到零碎终端,并在产品卸载后主动删除。

SBOM应用场景

1)从狭义的分类上看,SBOM有三种不同的应用场景:

〇 软件生产商应用SBOM来帮助构建和保护他们提供的软件;

〇 软件采购商应用SBOM来进行洽购前参考、协商折扣和制订洽购策略;

〇 软件运营商应用SBOM为破绽治理和资产治理提供信息,治理许可和合规性,并疾速辨认软件和组件依赖关系以及供应链危险。

2)从企业角色类型来看,对SBOM有不同的应用需要:

〇 我的项目团队:用于管理软件资产,在开发晚期即可评估平安危险,筛选适宜的组件/软件,并继续更新SBOM;

〇 平安团队:通过提交的SBOM剖析软件危险,并通过对立治理进行继续监控,及时响应安全事件;

〇 法务团队:核查软件受权问题,防止后续公司业务本身权利受到侵害。


图5 企业治理角色SBOM应用需要

如何应用SBOM

抉择SBOM工具

企业级SBOM为便于对立治理,应该应用统一的格局,如前文所述的SPDX、SWID和OWASP CycloneDX。美国2021公布的行政命令并未强制要求企业应用SBOM的哪种特定格局。到目前为止,并没有比照出这三者中哪一种格局是最好的,也没有确定的行业标准限定肯定应用哪种格局。大多数SBOM工具,会捆绑代码平安扫描程序和其余程序,企业须要依据本身需要选型。以下提供对于抉择SBOM工具的一些倡议。

Gartner倡议了生成SBOM的工具该当具备的能力:

〇 可融入构建过程,可主动创立SBOM;

〇 可剖析源代码和二进制文件(如容器镜像);

〇 对检测的组件进行SCA检测生成SBOM;

〇 可对生成的SBOM进行编辑;

〇 以可读的格局查看、比拟、导入和验证SBOM;

〇 可合并多个SBOM的内容,并可将其从一种格局或文件类型转换为另一种格局或文件类型;

〇 反对通过API和库让其余工具应用SBOM并进行操作。

在SDLC中实现SBOM

当SBOM被从新定义后,SBOM具备更高的透明度、具体起源和流传效率,企业机构在肯定条件下通过SBOM即可辨认和修复破绽危险。且SBOM还能够领导开发人员或供应商在整个SDLC中进行利用平安软件开发实际。以下阐明了SBOM如何在SDLC中实现组装的过程,供实际人员进行参考:


图6 《软件生命周期和物料清单装配线的阐明示例》

注:物料(Material)、元数据(Metadata)、援用(Reference)、供应商(Supplier)、应用方(Consumer)、Example Bom fragment(片段示例)

SDLC各阶段SBOM拆卸内容及形式阐明:

SBOM拆卸过程通过人为保护工作量较为微小,建设元数据信息库,并借助SCA检测工具将拆卸融入CI/CD流程中,可大大降低施行难度。

SBOM与危险情报关联

SBOM记录了软件的组件组成信息,供应商或开发者能够通过提供SBOM清单至组件破绽信息剖析平台,获取最新破绽危险情报从而进行修复和更新SBOM。并且平安经营人员可通过保护SBOM清单库,在有破绽情报推送或供应链安全事件产生时,疾速反向定位存在危险的软件,从而减速了供应链攻打事件应急响应速度。


图7 应用SBOM生成软件危险信息

围绕SBOM建设治理流程

在确定了SBOM的格局与对应的工具后,可围绕SBOM对立平安评估规范建设软件生命周期威逼卡口。治理流程由企业平安流程治理团队对立制订,并受权软件供应链平安评测团队进行平安评估测试,输入评估后果。其通用治理流程框架如下:


图8 围绕SBOM建设平安治理流程

1.建设基线

依据已盘点的资产,进行白名单、黑名单组件基线建设,领导后续组件选用;

2.平安设计评估

在我的项目进行需要设计时、平安评审阶段,对选用的第三方组件进行危险评估,并根据白名单、黑名单组件基线选用平安组件;

3.利用平安测试

除了对组件危险进行管控外,在利用上线、公布过程中,对利用零碎进行利用平安测试,发现存在的利用破绽威逼;

4.CI/CD缺点修复&跟踪

将发现的危险接入CI/CD缺点修复&跟踪平台,如Jira、禅道等,提前修复缺点并更新SBOM中利用破绽危险信息;

5.产品制品公布

公布产品制品时,同时生成SBOM。通过平安治理流程对软件和软件SBOM进行平安评测,出具平安测试报告。

对于SBOM的思考

随着供应链攻打检测要求退出HW攻打演练评分中,软件供应链平安建设愈发受到重视。以后软件供应链平安治理的落地次要思考第三方开源组件的治理,次要通过SCA工具及相干治理方法,对软件引入的第三方开源组件进行威逼检测和治理。狭义上的软件供应链平安治理则须要扩大治理范畴至残缺软件生命周期、供营商治理、自动化流程建设,且具备继续运维监控、应急响应能力等。

SBOM次要价值在于帮忙企业组织进步软件透明性,并且造成在软件供应链环节中便于替换传递的接口标准,同时可能描述软件资产信息。在解决软件资产治理“看不清”和“跟不上”的次要痛点上,将SBOM作为软件资产治理能力根底,围绕SBOM建设较为欠缺的软件供应链治理体系。成熟的SCA工具该当兼容多种SBOM格局,可导入不同供应商提供的不同格局SBOM,并对不同格局SBOM进行转换和集中管理,且便于融入到自动化流程。悬镜源鉴SCA在满足以上SBOM能力需要的根底上,也在开源OpenSCA提供了公开SBOM生成工具,不便软件生产商主动生成SBOM清单。

网络安全的实质是危险与信赖的均衡,软件供应链平安治理的实质则是平安可信的继续传递。悬镜平安在“用开源的形式做开源危险治理”理念的领导下,凭借多年积淀的“All In One”智能代码疫苗技术,为宽广数字化利用提供威逼免疫平安基因,并通过旗下寰球极客开源平安社区OpenSCA及其商业版源鉴SCA、灵脉IAST等软件供应链平安外围产品,从源头追踪软件供应链在开发、测试、部署、经营等关键环节面临的利用平安危险与未知内部威逼,帮忙企业用户逐渐构筑一套适应本身业务弹性倒退、面向麻利业务交付并引领将来架构演进的共生踊跃进攻体系。


感激每一位开源社区成员对OpenSCA的反对和奉献。

OpenSCA的代码会在GitHub和Gitee继续迭代,欢送Star和PR,成为咱们的开源贡献者,也可提交问题或倡议至Issues。咱们会参考大家的倡议不断完善OpenSCA开源我的项目,敬请期待更多功能的反对。

OpenSCA官网:
https://opensca.xmirror.cn/

GitHub:
https://github.com/XmirrorSec...

Gitee:
https://gitee.com/XmirrorSecu...