软体组成分析(英语:Software composition analysis;简称SCA)是针对软体的分析,侦测是否有使用开放原始码(open source)组件,软体组件是否是最新版本,是否有会影响安全的缺陷,或是其中有需要授权(licensing)才能合法使用的组件[1]。
SCA产品的运作方式如下[2]:
- 应用程式会扫描程式码,及编译软体会用到的相关档案。
- 应用程式会识别开源组件以及其版本,会在扫描的应用程式目录中建立资料库,其中有开源软体的列表。
- 接下来会将列表和另一个储存组件已知安全漏洞、授权需求以及组件历史版本的资料库比对[3],在侦测安全漏洞时,会和公共漏洞和暴露(CVE)比对,此资料库也是美国国家漏洞资料库(NVD)追踪的资料。有些软体有额外的专属漏洞资料库。在确认智慧财产权(IP)或是法规合规( Legal Compliance)议题时,SCA产品会搜寻开源组件的授权资讯,并且加以评估[4]。有些组件是源自常用的开源存储库(像是GitHub、Maven、PyPI、NuGet等),会用开源存储库识别出这些组件以及其版本。
- 会用上述分析结果,转换为不同的数位格式让终端使用者使用。其内容和格式依SCA产品而定,可能会包括评估及处理风险的指南,若是有正常版或是较宽松版Copyleft授权的需求,也会有建议作法。输出也会包括软体材料表(SBOM),其中会列出应用程式中的所有组件、版本及相关资讯,其中也会包括开源组件[5]。
开放原始码模组以及其风险
在软体开发过程中,常会使用不同的组件来进行开发[6]。使用软件组件可以将复杂的较大组件分割成较小的程式码,增加灵活性,以后也可以配合新的需求而复用(reuse)这些组件[7]。在1990年代末,开放原始码软体(OSS)开始流行,此作法应用得更广,也可以加速软体开发时程,缩短产品上市时间[8]
不过,使用开源软体也为应用程式引入了风险,风险可以分为以下五类[9]:
- 开源软体版本控制:导入新版本时,可能会有软体变更造成的风险。
- 安全性:组件漏洞的风险(CVE)。
- 授权:智慧财产(IP)法律要求的风险。
- 开发:已有代码以及开源软体之间的相容性风险。
- 支持:文件化(documentation)不足或是软体组件过期的风险。
在开放源代码促进会在1998年2月建立之后不久[10],也有人注意到开源软体相关的风险[11],各组织就试著用试算表以及文件来追踪开发者所使用的开源组件,设法进行管理[12]。
对于密集使用开源组件的组织,需要自动化开源风险的分析及管理。因此产生了帮助组织管理开源风险的软体,称为软体组成分析(Software Composition Analysis, SCA)。SCA设法侦测软体应用程式中有的所有第三方组件,减少相关安全漏洞、IP授权需求、及软体过期的相关风险。
用法
组织中的不同部门里,SCA会有不同的用途。依组织的大小以及结构不同,会使用SCA的部门也会不同。IT部门会用SCA,和共同利害相关者(包括资讯长CIO、技术长CTO以及主企业架构师 Chief Enterprise Architects)来实现及运作相关技术。安全和授权的资料会让资安长(Chief Information Security Officers, CISO)确定安全风险,由Chief IP officer或首席合规官(Chief Compliance officer)处理智慧财产权的风险[13]。
有些SCA产品可以和开发产品时会使用的整合开发环境(IDE)整合,也有些SCA产品会是软体品质控制流程中的一个步骤[14][15]
SCA产品(特别是其产生软体材料表的能力)在一些国家(例如美国)是必要的,若要贩售软体给美国政府,软体供应商,需要提供软体材料表[16]。
另一个使用SCA的情境是在技术的尽责查证。在开始并购(M&A)流程前,需由独立谘询公司审核目标团队软体相关的风险[17]。
SCA的优点
SCA产品自动化的特点是其主要优点。开发者使用及整理开源组件时,不需另外花费心力整理资料[18]。
SCA的缺点
目前SCA的产品有以下的缺点:
相关条目
参考资料
外部链接
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.