如何选择软件组合分析(SCA)工具

通过识别开发人员容易忽略的代码中的风险,软件组合分析(SCA)工具在帮助管理安全风险和开源许可风险方面发挥了至关重要的作用。本文解释了SCA工具的工作原理,并提供了在比较SCA选项时应该注意的事项。

什么是软件组合分析?

软件组合分析是使用自动化工具来识别应用程序代码库中的开源组件。SCA工具扫描软件,确定其中存在哪些依赖项和其他内容,然后确定这些组件的原始来源。通过这种方式,SCA工具确定代码库的哪些部分是从第三方来源获得的。

为什么SCA很重要?

软件组合分析之所以重要,主要有两个原因。

首先,它帮助组织避免与重用可能包含已知漏洞的开源代码相关的安全风险。SCA工具可以检测应用程序中使用的不安全模块或依赖项。他们或许也能做到确定开发人员将不安全代码复制到应用程序中的实例。

其次,SCA帮助开发人员确保他们遵守管理他们重用的源代码的软件许可证。有超过80个开源许可证在现有的情况下,对于如何重用源代码,每个都有不同的规则和术语。使用SCA工具,开发人员可以自动确定哪些许可适用于他们的代码,并处理任何违反许可的情况。

考虑到在应用程序中广泛重用开源代码,这两项任务——识别不安全的源代码和识别许可问题——在今天显得尤为重要。仅GitHub就拥有超过1.28亿个公共存储库,其中包含任何人都可以使用的代码可以轻松地复制粘贴到应用程序中。然而,仅仅因为开发人员可以借用代码并不总是意味着这样做是安全的。这也不意味着与代码相关的许可证赋予他们以他们计划的方式重用代码的权利。通过追溯源代码的源头,SCA工具解决了这两个问题。

SCA工具在今天也特别重要,因为供应链安全风险。当组织将不安全的第三方软件导入自己的应用程序时,供应链安全风险就会出现。SCA工具允许开发人员自动扫描他们的应用程序,并识别他们可能无意中从外部源导入了不安全代码的实例。

SCA工具可以检测哪些风险?

SCA工具可以识别开源软件中的各种风险。如上所述,其中最常见的是受已知安全漏洞影响的模块或依赖项。SCA工具还可以检测嵌入在源代码中的恶意软件,这种情况可能出现在攻击者访问组织的CI/CD工具并使用它们将恶意代码注入应用程序的情况下。

此外,正如我们所指出的,SCA工具可以识别潜在的软件许可违规。他们可能无法告诉开发人员他们是否遵守给定的软件许可,但他们可以提醒开发人员适用于开发人员管理的应用程序的开源许可。反过来,开发人员或开源软件遵从性管理人员可以研究许可证,以确保他们正确地使用代码。

需要注意的是,SCA不能识别所有类型的安全或许可风险。通常,SCA工具只能检测与开源代码相关的风险。如果开发人员将专有的第三方代码导入到应用程序中,则这些代码不太可能是SCA工具用于跟踪源代码来源的数据库的一部分。因此,工具将无法识别代码。

关于选择SCA工具的提示

随着开源软件在代码库中的广泛应用,市场上SCA工具的数量也在迅速增长。但并非所有SCA工具都提供相同的功能和覆盖范围。在选择SCA工具时,一定要评估以下功能领域:

  • 语言支持在可能的情况下,选择可以支持任何类型的编程语言或框架的SCA工具,而不是那些只能使用特定语言的工具。
  • 支持二进制和源代码扫描虽然一些SCA工具只能处理源代码,但最好的SCA工具能够扫描源代码和应用程序二进制文件,以便识别有风险的组件。扫描二进制文件的能力使团队能够看到闭源软件包(例如从第三方供应商获得的应用程序),这些软件包的源代码通常是不可用的。
  • 自动代码库扫描:不要使用必须手动执行的SCA工具,也不要使用逐个文件分析代码库的工具,而是寻找能够自动连续扫描整个代码库的工具。这样,您就可以在代码集成到代码库中时自动扫描代码,即使是在处理具有大量源代码文件的复杂应用程序时也是如此。
  • CI / CD集成:支持CI/CD集成的SCA工具可以通过直接从持续集成(CI)服务器或工件存储库中扫描代码来简化SCA流程。通过这种方式,CI/CD集成可以帮助开发人员在开发生命周期中尽早发现问题。