大多数现代应用程序都依赖第三方组件和依赖项来运行。虽然这种开源代码有其优势,但它也可能将漏洞、恶意代码和其他安全风险引入应用程序。软件组合分析 (SCA) 是一种用于识别这些外部代码片段的DevSecOps工具。SCA 可用于跟踪开源组件、查找漏洞和管理软件许可证。
软件组成分析解决方案的工作原理
SCA 解决方案旨在检查未知代码库并记录所使用的开源组件、它们的漏洞和其他信息。这可以通过以下步骤完成:
- 扫描: SCA 工具将从扫描代码库开始,以识别代码使用的库和依赖项。基于此扫描,该工具可以生成软件物料清单 (SBOM),其中列出了应用程序使用的所有开源代码。
- 文档:软件版本、许可信息和应用程序的使用情况都是有价值的信息。在代码库中识别开源代码后,SCA 扫描器将记录此数据。
- 漏洞检测:已知漏洞与受影响的软件和版本一起记录为常见漏洞和暴露 (CVE)。通过了解所使用的开源库及其版本号,SCA 工具可以识别应用程序中的已知漏洞。
在此过程结束时,SCA 工具生成了一份报告,其中包含有关应用程序使用的所有开源依赖项的信息。此信息可能会报告给安全人员,或者,根据调查结果和CI/CD 管道中的集成级别,如果新提交使用已弃用或不安全的组件,甚至可能会阻止将新提交添加到代码库中。通过将 SCA 集成到 CI/CD 管道中,开发团队可以将安全性转移到左侧并降低可利用漏洞到达生产系统的风险。
为什么重要
供应链攻击已成为对应用程序安全的日益严重的威胁。许多应用程序依赖于包含易受攻击代码的开源组件。网络犯罪分子还积极致力于开发库或将恶意代码注入合法库以破坏应用程序安全。SCA 使组织能够了解其应用程序所依赖的第三方代码。这种可见性对于识别继承漏洞和使用开源和第三方代码可能引起的其他问题至关重要。
软件组成分析 (SCA) 用例
SCA 提供对组织应用程序使用的开源依赖项的可见性。这种可见性对于漏洞和许可证管理至关重要。
漏洞管理
开源库可能包含可利用的漏洞或恶意代码。如果应用程序导入这些库,则可能容易受到利用或执行恶意代码。通常,公司很难保持对其使用的第三方代码的可见性。对于一个开源组件导入一个或多个其他组件的间接依赖关系尤其如此。SCA 解决方案可以帮助公司获得所需的可见性,并快速确定应用程序使用的库版本是否存在 CVE。
许可证管理
使用第三方代码可能会给组织带来许可问题,尤其是在存在广泛的潜在许可要求的情况下。在一种极端情况下,版权可能使公司无法使用组件或可能需要支付版税。另一方面,copyleft 许可证可以强制要求任何使用特定组件的代码也必须是免费可用和开源的。
如果不了解其应用程序使用的开源组件,组织就会对许可规则一无所知,并可能处于法律危险之中。通过收集代码库中使用的所有开源组件的许可信息,公司可以了解潜在的许可和法律问题。
SCA 如何帮助防止供应链攻击
越来越多的网络威胁参与者正在执行供应链攻击,其中漏洞或恶意代码被注入到其他应用程序使用的开源项目中。导入库的软件将执行恶意代码或继承漏洞,使它们容易被利用。
SCA 可以通过识别应用程序依赖项中的漏洞来帮助防止供应链攻击。此外,深入了解应用程序使用的依赖关系有助于识别网络犯罪分子为这些攻击创建或破坏的已知不良库。
软件组成分析 (SCA) 挑战
SCA 对于管理组织的软件供应链安全风险至关重要。然而,SCA 面临挑战,包括:
- 间接依赖:一个应用程序的依赖可能有它们自己的依赖。这些链条可能深入多个层次,因此难以实现完全可见性。
- 依赖关系识别:不同的编程语言和生态系统以不同方式处理依赖关系。SCA 解决方案必须了解将开源代码导入应用程序的所有方式。
- 漏洞管理:每天都会发现新的漏洞,漏洞管理的来源并不总是最新的。因此,SCA 可能会遗漏漏洞,而开发团队可能难以跟上积压工作。