构建开源供应链安全的软件物料清单(SBOM)
目录
一、SBOM概述
1.什么是SBOM
2.为什么需要SBOM
3.什么是
二、构建SBOM的必要性
1.安全要求
2.合规要求
3.格式要求
三、SPDX是什么?
四、SBOM能带给我什么?
今天,开发人员频繁的在开源软件库的基础上构建web 应用程序。然而,尽管这些库构成了软件物料清单(SBOM)组件库,但并非所有开发人员和业务涉及者都理解第三方库对开源供应链安全的重大影响。考虑到这一点,我们有必要对此进行详细的探讨。
软件供应链安全问题已经日益成为企业和政府面临的一项重大难题,根据ENISA(欧盟网络安全局)发布的一份报告估计,2021年软件供应链攻击次数增加了400%。
如今开发人员大量使用开源组件,因此导致了风险因素的增加。清晰的SBOM关乎到开发人员的安全和法律意识,以及随后产生的业务问题。
在深入讨论之前,我们先来了解以下SBOM基础知识。
一、SBOM概述 1.什么是SBOM
SBOM(软件物料清单)是企业使用的所有软件组件的完整列表。SBOM通常由第三方开源库、供应商提供的软件包和企业自己编写的专有软件构成。
2.为什么需要SBOM
SBOM本质上是在应用程序中使用的所有软件组件的清单。没有它,企业就无法看到正在构建或使用的软件相关的许可证和安全风险。维护一个符合SBOM格式的最新清单对于跟上敏捷开发的步伐至关重要。因为在现代软件快速开发的过程中,组件及其版本正在迅速变化。
3.什么是
OWASP 是一个常用的SBOM标准,用于应用程序安全环境和供应链组件分析,它提供了所有第一方和第三方软件组成的清单。该标准非常完整,并且超出了软件库的范围,甚至扩展到了、VEX等标准范围。是一个.0许可的开源项目,可以在中进行协作。
二、构建SBOM的必要性 1.安全要求
SBOM并不是一个能引起开发人员共鸣的术语,这是因为它传统上是企业中安全团队的任务。但是,随着开源组件的巨大增长,这种情况已经发生了变化。npm包注册中心就是明证,该中心涵盖了超过个免费的开源软件包。
当流行的npm包被破坏(例如之前著名的npm投毒事件)时,或者是潜在的漏洞被发现(例如)时,你的应用程序正在使用这些存在漏洞的版本。如何快速且精确的找到这些有问题的组件,这就是SBOM的作用之一。
2.合规要求
今天,开发人员可能对于许可证并不是非常敏感,这是因为如今许可证类型变得越来越宽松,MIT协议已经成为了上最常用的许可证。但这并不意味着世界上就不存在严格的许可证了,恰恰相反,GPL系列的许可证还占据了开源协议中的一大部分。当忽视许可证时,开发人员可能会面临不小的麻烦,例如:
①React.因为掉了React项目,并谴责的许可证过于严格,这个广受欢迎的开源视图库的许可证已经从他们自己版本的“BSD+专利授权”变成了宽松的MIT许可证。
②公司和它的开源项目同名,是流行的搜索工具和ELK Stack。由于来自云供应商的竞争日益激烈(主要是),以及它们对业务的影响,它也不得不更改自己的许可证。
如果你是一个正在使用React、或其他开源软件库的开发人员,当出现许可证问题时,你很可能需要对此负责。
3.格式要求
你构建的应用程序和使用的软件可能已经包含正在使用的许可证的引用。例如,如果你正在构建一个项目,许可证信息是.json清单文件的一部分:
这个.json文件中描述的许可证使用通用的SBOM格式(被称为SPDX),以确保它符合跨工具的国际标准和交互操作性标准。
三、SPDX是什么?
SPDX(软件包数据交换)是一个Linux基金会协作项目,它提供了一个通用的SBOM格式标准,用于跟踪软件材料清单,使得通过各种工具创建交互操作性报告变得更加容易。通俗易懂的来说,SPDX许可证列表提供了一个通用的许可证列表标识符以及每个许可证的规范URL。
四、SBOM能带给我什么?
1.提高透明度:为了产生忠诚度和推动重复销售,公司需要建立客户信任。共享的SBOM意味着企业所依赖的工具是可见的,它们的质量是有保障的,而不是一纸空文。
2.增强安全性:目前大多数开源漏洞都是通过间接依赖关系产生的。根据的2021年软件供应链报告,29%的流行项目版本包含至少一个已知的安全漏洞。通过使用SBOM,公司可以在软件发布之前找到并消除漏洞,并在发布后迅速修复新漏洞。
3.提高供应链弹性:供应链的强度取决于其最薄弱的环节。在像医疗保健这样高度监管的环境下,一个未被发现的软件漏洞可能会暴露病人的数据并导致代价高昂的漏洞。虽然SBOM不可能防止所有未被发现的漏洞,但它可以在SDLC早期发现问题,并有效的解决它们。
4.降低成本:让开发人员手动挖掘平台以发现和解决漏洞是一件费时费力的工作。通过将组件和版本更新的列表合并到一起,SBOM节省了开发人员手动搜索漏洞所花费的大量时间,这种自动化可以降低成本并提高生产率。
5.减少代码膨胀:软件迭代经常导致软件变得越来越臃肿,这就是所谓的代码膨胀。当开发人员添加多个执行相同功能的不同组件时,就会发生这种情况。这同时也增加了受攻击面,即需要维护的组件数量。SBOM可以帮助开发人员识别多余的代码,这意味着更快、更精简、更安全的服务。
6.简化EOL管理:当软件组件抵达它们的EOL(END OF LIFE)阶段时,供应商应该立即停止对它们的支持,这也意味着它们不再接收关键的更新和安全补丁。当组件到达EOL阶段时,开发人员需要根据SBOM来识别组件。SBOM有助于防止过时和不安全的组件继续运行,并帮助确定替换组件。
7.提高许可证合规性:公司在使用开源软件时需要注意许可证问题。不遵守开源协议可能会导致声誉受损、诉讼等等麻烦,另外一些许可证可以保护用户不受专利问题的影响,但前提是你要知道自己的哪些组件用的是哪些许可证。SBOM有助于公司管理许可证风险,帮助它们进行尽职调查,并避免将不符合规定的软件投入生产。
五、如何捍卫开源软件供应链安全?
最直接的办法是将SCA工具集成进企业的CI/CD管道,一般的SCA工具只能做到开源组件检测,实现开源代码的管理和监控。但泛联新安的开发安全平台采用SaaS模式,快速简便的为企业提供SCA功能,同时能对开源协议的风险系数进行检测和预警,实时生成SBOM清单管理企业的供应链第三方组件,为您的软件供应链安全保驾护航。