什么是软件构成分析 (SCA)?

软件构成分析(SCA)可对应用程序使用的开源包进行深入分析。SCA 可突出显示依赖关系中的漏洞和许可证,以便进行风险和合规性评估,它还可以生成所有资源的软件物料清单(SBOM),与内部利益相关者和外部客户共享。

 

什么是软件构成分析?

软件构成分析可使开发人员安全地利用开源包,而不会使组织面临不必要的漏洞或法律和合规性问题。

开放源码组件在现代软件开发中已无处不在,大多数现代应用程序的代码库都由此类包构成。这种方法可以让开发人员更快地开展工作,因为他们不需要重新编写社区免费提供并经过审核的代码。然而,这一过程也伴随着一系列风险。

 

使用开源组件有哪些风险?

在使用这些组件构建 容器映像 之前,开发人员需要了解先前发现的包中漏洞所引发的安全问题。他们还需要确保符合软件使用许可证的合规性要求。

社区成员经常发现并修补漏洞,但开发人员有责任更新他们的代码。一旦发现漏洞,公开漏洞利用方法的出现只是时间问题,这甚至为低级攻击者利用该问题打开了方便之门。

软件中的大多数漏洞都不在直接包或根包中,而是在依赖包的依赖包中,深达多层,这使得问题更加严重。只修复正在使用的根软件包并不总能确保正在使用的库的安全。

此外,还有几十种规则各异的开源许可证。例如,有的要求注明出处,有的则要求同时公布使用该组件的应用程序的源代码。跟踪所有许可证及其规则可能很困难。

 

软件构成分析识别开源包中的风险

SCA 工具可识别应用程序中的所有开放源代码包,以及这些包的所有已知漏洞。这些知识可用于通知开发人员代码中存在的问题,以便在这些问题被利用之前进行修复。一个好的软件组成分析流程会将目光从包管理器转向 基础设施即代码(IaC) 和 Kubernetes 清单,拉取映像 以 识别这些映像中的漏洞。

与 IaC 模板连接的 SCA 工具和无限的依赖性扫描可确保漏洞不被发现或解决。

与 IaC 模板连接的 SCA 工具和无限的依赖性扫描可确保漏洞不被发现或解决。

软件构成分析工具还可用于生成软件物料清单(SBOM 或 software BOM),其中包括应用程序使用的所有开源组件。SBOM 列出了有关包版本的详细信息,以及每个使用中组件的已知漏洞和许可证。例如,对于 Python,BOM 将包括导入语句中的所有包,如 httplib2,以及每个包的版本号、发现的漏洞和许可证。

SCA 计划应促成工程、DevOps、安全和合规性小组等利益相关者之间的 协作 。如果代码中包含的开源组件违反了组织控制风险的合规性规定,许多组织会使用这些程序来创建警报和/或阻止代码合并到代码存储库中。确定漏洞和许可证类型的可接受严重性级别时,应让相关利益攸关方参与进来。

 

如何在开发过程中使用 SCA

良好的 SCA 流程贯穿整个开发过程。从本地环境开始,开发人员需要能够在编写代码时检查代码是否存在漏洞以及是否合规性。

利用集成开发环境(IDE)插件,SCA 工具可以在开发人员添加包时通知他们有关漏洞的信息。在代码提交到存储库之前,检查和自动拉取请求注释应告知开发人员引入的任何问题,并阻止不符合要求的代码。

这应延续到部署中,在部署中可以阻止部署具有预定漏洞级别或许可证类型的软件。安全小组还应对其环境中各组件的态势具有广泛的可见性。

 

软件构成分析将覆盖范围从 Code 扩展到 Cloud,从基础架构扩展到应用层,从而在整个开发生命周期内跟踪漏洞。

软件构成分析将覆盖范围从 Code 扩展到 Cloud,从基础架构扩展到应用层,从而在整个开发生命周期内跟踪漏洞。

在所有领域,都应让开发人员了解包可能面临的风险。需要根据关键性和对基础设施的影响(例如,如果易受攻击的包位于私有 VPC 中)对漏洞进行排序和优先级排定(例如,使用 CVE 分数和漏洞报告后的时间)。许可证应按允许但要求额外细节(如署名)的许可证和组织政策不允许的许可证(如 "copyleft"许可证)分组。

 

软件构成分析的优势

团队必须了解其应用环境的态势。通过尽早和经常提供许可证合规性和漏洞反馈,软件构成分析有助于减轻在应用程序中使用开源组件的一些风险。虽然 100% 的修补率不太可能实现,但了解风险并权衡修复漏洞的成本是改善安全态势的一部分。

要了解有关现代开发流程安全的更多信息,请查看《 什么是 DevSecOps?

 

软件构成分析常见问题

SCA 中的开源组件识别包括扫描软件代码库,以检测使用的所有开源库和框架。这一过程会生成组件清单,包括其版本和来源。准确的识别对于评估安全漏洞、许可证合规性和潜在的法律问题至关重要。Snyk 和 WhiteSource 等工具使用先进的算法和广泛的数据库来准确识别组件。通过了解正在使用的开源组件,组织可以有效地管理风险,并确保其软件开发实践符合行业标准。
SCA 中的漏洞检测包括扫描开源组件以查找已知的安全漏洞。SCA 工具将识别出的组件与国家漏洞数据库 (NVD) 等漏洞数据库和专有资源进行比较。这一过程可突出显示安全漏洞,使开发人员能够主动解决这些问题。漏洞防范有助于防范利用开源库中的弱点,降低数据泄露和网络攻击的风险。Black Duck 和 Snyk 等工具可提供实时漏洞警报和详细的修复指导,从而增强软件项目的安全态势。
SCA 中的许可证合规性可确保软件项目中使用的开源组件遵守法律和监管要求。SCA 工具分析与每个组件相关的许可证,识别潜在的冲突和义务。这一流程有助于组织规避法律风险,确保遵守开源许可条款。许可证合规性还涉及跟踪和管理许可证义务,如归属和分发要求。WhiteSource 和 FOSSA 等工具提供了全面的许可证合规性解决方案,使组织能够负责任地管理开源的使用并降低法律风险。
SCA 中的依赖性管理涉及跟踪和控制软件项目所依赖的第三方库和框架。SCA 工具可识别直接和传递依赖关系,深入了解其安全性和合规性状况。有效的依赖性管理可确保组件是最新的,并且不存在已知漏洞。它还涉及自动更新和解决依赖冲突。Snyk 和 Renovate 等工具提供先进的依赖关系管理功能,可无缝集成到开发工作流程中,从而提高软件的安全性和可维护性。
SCA 中的风险评估对与开源组件相关的安全、法律和操作风险进行评估。SCA 工具可分析组件漏洞、许可条款和维护状态,从而提供全面的风险概况。这一流程有助于组织根据已识别风险的严重性和影响,确定补救工作的优先次序。有效的风险评估有助于做出明智的决策和积极主动的风险管理。Black Duck 和 WhiteSource 等工具可提供详细的风险评估报告,使开发小组有能力解决关键问题,增强软件项目的整体安全性。
SCA 中的补救措施涉及解决开源组件中已识别的漏洞和合规性问题。SCA 工具提供了修复安全漏洞的详细指导,如升级到安全版本或打补丁。补救措施还包括解决许可证冲突和履行法律义务。自动化修复工作流程可简化流程,从而快速有效地应对已识别的风险。Snyk 和 WhiteSource 等工具提供集成的修复解决方案,帮助开发小组维护安全、合规的软件,同时最大限度地减少运行中断。
SCA 中的持续监控包括持续扫描和分析开源组件,以检测新的漏洞和合规性问题。SCA 工具提供实时警报和更新,确保开发团队了解新出现的风险。持续监控可实现主动风险管理和及时补救,从而增强安全性。它还通过跟踪许可条款和监管要求的变化来支持合规性。Black Duck 和 Snyk 等工具提供持续监控功能,可无缝集成到 CI/CD 管道中,为软件项目提供持续保护。
在 SCA 中与 CI/CD 集成涉及将 SCA 工具嵌入持续集成和持续交付管道。这种集成可在开发过程中自动扫描和分析开源组件,确保及早发现漏洞和合规性问题。通过将 SCA 纳入开发工作流程,CI/CD 集成能够快速识别和修复风险,从而增强软件安全性。Snyk 和 WhiteSource 等工具可提供强大的 CI/CD 集成功能,支持安全高效的软件交付,同时保持与行业标准的合规性。
SCA 中的软件物料清单(SBOM)是软件项目中使用的所有开源组件的综合清单,包括其版本和依赖关系。SBOM 可以详细了解软件的构成,从而实现有效的风险管理和合规性。SCA 工具可自动生成 SBOM,从而提高软件开发的透明度和问责制。SBOM 支持漏洞检测、许可证合规性和安全审计。Black Duck 和 WhiteSource 等工具提供 SBOM 生成和管理功能,使组织有能力维护安全、合规的软件生态系统。
上一页 什么是不安全的系统配置?
下一页 什么是有毒管道执行 (PPE)?