大家或许都发现了,开发人员愈发依赖开源代码来快速为其专有软件添加功能。据估计,开源代码占专有应用程序代码库的 60-80%。相伴而来的,除了更高的效率,还有更高的风险。因此,管理开源代码对于降低组织的安全风险至关重要。那么,如何管理开源代码呢? 软件成分分析(SCA)又是如何管理开源代码的呢?
开发人员的任务是比以往更快地创建功能强大且可靠的应用程序。为了实现这一目标,他们严重依赖开源代码来快速为其专有软件添加功能。据估计,开源代码占专有应用程序代码库的 60-80%,管理开源代码对于降低组织的安全风险至关重要。那么,如何管理开源代码呢?
需要借助软件成分分析工具。
软件成分分析(SCA)是应用程序安全测试(AST)工具市场的一部分,可用于管理开源组件。SCA工具对应用程序的代码库(包括容器和注册表等相关部分)执行自动扫描,以识别所有开源组件、许可证合规性数据以及任何安全漏洞。除了提供开源使用的可视性,一些SCA工具还可以通过优先级划分和自动修复来帮助修复开源漏洞。
SCA工具通常从扫描开始,生成产品中所有开源组件的清单报告,包括所有直接和间接依赖关系。掌握所有开源组件的详细清单是管理开源使用的基础。毕竟,如果不知道自己正在使用哪些组件,你很难确保其安全性或合规性。
一旦确定了所有开源组件,SCA工具就会提供有关每个组件的信息,包括归属要求以及该许可证是否符合你所在组织的政策。
软件组合分析工具的主要功能之一是识别有已知漏洞的开源组件。好的SCA解决方案不仅揭示哪些开源库存在已知漏洞,还会让你知道代码是否调用受影响的库,并做修复建议,以及识别代码库中需要更新或修补的开源库。
当代码存在缺陷或弱点时,通常会出现开源漏洞。这些可能是计划外的编码错误,也可能是被蓄意插入代码中的。攻击者可以利用这些漏洞未经授权地访问系统、窃取数据和对软件或系统造成损坏。旧软件或未更新的当前软件版本也可能导致漏洞。这些可能会导致安全漏洞,攻击者可以利用这些漏洞渗透你的代码并窃取敏感和有价值的数据,例如,这些数据可以被禁用和勒索。
高级SCA解决方案还包括自动策略执行功能,它将代码中找到的每个开源组件与组织策略交叉引用,并触发不同的响应,例如启动自动审批工作流程或使编译构建。
高级SCA解决方案可自动执行开源选择、审批和跟踪的整个过程。有些解决方案甚至能在提出拉取请求和组件进入系统之前,提醒开发人员注意组件中的漏洞。这为开发人员节省了宝贵的时间,并提高了他们的准确性。
SCA专注于识别和修复开源组件和第三方依赖项中的风险。它并不是为了查找自定义(原始)代码中的漏洞而设计的。例如,SCA无法缓解SolarWinds供应链漏洞,因为SolarWinds的源代码是专有的。要扫描和修复专有代码,请使用SAST(静态应用程序安全测试)。SCA也不会检测不安全的网络配置。
旧的SCA解决方案并非旨在扫描开发和部署环境,因此它们无法保护软件开发生命周期(SDLC) 的后期部分。一些旧的SCA工具无法提供准确评估任何问题的风险影响所需的背景。这些工具可能会产生太多误报,从而消耗有限的资源。注意:更新、更现代的SCA解决方案已经通过优先级功能解决了这一挑战,因此请确保选择可以做到这一点的解决方案。
第一款开源手动扫描仪于2002年左右发布。尽管提高了企业代码库的可见性,但这种早期技术的误报率很高,需要人工干预,无法满足敏捷开发环境的需求。
到2011年,该技术已得到改进,能够实时自动检测漏洞和许可问题。这使得软件和安全团队能够在开发周期的早期部署开源管理。同时,SCA 解决方案还与存储库、构建工具、包管理器和 CI 服务器等软件开发工具集成,这将开源管理和安全性的力量交给了开发人员。尽管取得了这些进步,SCA 仍然非常注重检测。
越来越多的源代码、组件和依赖项被用来创建新的软件和应用程序。据广泛估计,一些组织多达90%的源代码现在都是开源的,这意味着潜在的攻击面已经并将继续扩大。这增加了开源漏洞的风险,以及恶意软件包渗透和攻击软件和应用程序的威胁。因此,SCA的需求变得越来越重要。
开发人员、DevOps和DevSecOps团队现在的任务是在SDLC早期扫描、识别和修复开源漏洞。他们正在将安全任务转移到更早地处理和修复问题上,而不是等到软件准备投入生产或发货时才去处理和修复。
在开发过程中还有一种更新的趋势,即“智能转移”,它鼓励团队采用灵活的扫描和修复流程,快速、轻松地修复SDLC中的代码,并在现有的开发人员工作流程中完成。现代SCA解决方案可以做到这一点,还能确定漏洞的优先级,并识别出可以安全忽略的漏洞。这使得现代SCA成为任何强大应用安全策略的核心。
检测只是第一步,它无助于企业降低风险,缺少补救措施的检测是不完整的应用安全模式。
因此,企业必须采用成熟的SCA安全模式,在检测的基础上进行优先级划分和修复,这样开发人员和安全专业人员就能专注于更有价值的事情。
现代SCA解决方案将检测和修复紧密联系在了一起。
成熟的软件成分分析工具应包含优先处理开源漏洞的技术。通过自动识别风险最大的安全漏洞,企业可以首先解决这些漏洞。开发人员和安全专业人员就不用浪费时间和资源,在成页的警报中寻找最重要的漏洞,从而避免在生产系统中运行极易被利用的漏洞。
自动修复漏洞不仅仅是向开发人员显示漏洞的位置,还能提出修复建议,并提供数据说明修复可能对构建产生的影响。可以根据漏洞检测、漏洞严重性、CVSS评分或更新版本发布时触发的安全漏洞策略启动自动修复工作流程。最可靠的风险缓解策略之一是持续为开源组件打补丁,以避免暴露于已知漏洞。一个好的SCA解决方案可以实现这一目标。
先进的SCA工具(包括repo、浏览器和IDE成)可无缝集成到软件开发生命周期(SDLC)中,以便在漏洞修复更容易、成本更低时及早解决。
数据库是任何SCA解决方案的核心。数据库越全面,汇聚了多个来源的数据,就越能更好地识别开源组件和安全漏洞。如果没有一个全面、持续更新的数据库,就无法检测到正确版本的开源组件,从而无法更新许可证、修复安全漏洞以及应用更新和补丁。开源社区高度分散。因为没有一个集中的更新或补丁信息源,所以一切都要依靠数据库。
SCA解决方案不仅应支持当前使用的语言,还应支持未来一两年内可能考虑使用的任何语言。没人希望在实施SCA解决方案后,却发现它不支持一年后最新项目的语言。所以,未雨绸缪,选择支持多种语言的解决方案。
从库存、许可、归属和尽职调查报告到漏洞和高严重性错误报告,解决方案应能提供适合各种使用情况的各种报告工具,包括管理、法律、安全、DevOps和DevSecOps。
选择具有自动策略的解决方案,这些策略既强大又高度灵活,而且可以定义企业自己的独特需求。可自动执行开源选择、审批、跟踪和补救流程的策略可节省开发人员的时间,并大大提高他们的准确性。
如前所述,一个能优先处理安全漏洞并提供修复建议的解决方案是很有必要的。自动化程度越高,就越容易在不降低开发速度的情况下首先解决最关键的问题。
SCA解决方案分为两大类——提供管理工具和提供开发人员工具。
最好的SCA解决方案同时提供管理和开发人员工具,这保证了每个人都能在需要的时间和地点获得所需的工具。
在SDLC的每个阶段,选择能与各种开发人员环境无缝集成的SCA解决方案,如资源库、构建工具、软件包管理器和CI服务器,这样开发人员就能在提出拉取请求之前,决定是否可以或应该使用开源组件。
容器和Kubernetes的使用很广泛,但安全性仍然是一个挑战。选择一个SCA解决方案,从容器化环境内部扫描开源组件,识别漏洞或合规性问题并自动执行策略。此外,还要确保解决方案对您的特定容器注册表提供本机支持。
开源组件已成为各行各业软件应用程序的主要组成部分。然而,尽管对开放源码的依赖程度很高,但仍有太多企业在确保其开放源码组件符合基本安全标准和许可要求方面较为松懈。有了正确的软件成分分析解决方案,就能离降低开源风险更近一步。
目前,各国政府发挥着更加积极的作用,推出了企业必须遵守的新网络安全战略。这些建议和战略要求供应商承担更多责任,提高代码库、软件、应用组件和依赖关系的可见性,以及更严格的合规性
SCA专注于扫描、检测和修复开放源代码中的漏洞,包括识别和修复不符合许可要求的组件和依赖关系。通过查找此类问题和符合许可条件的版本,SCA可以帮助确保您的代码库是最新的,完全符合许可条件。
你应该选择一种既能满足您的需求,又尽可能简单易用、不具干扰性的SCA工具。
确保选择的工具对开发人员友好。该工具最好能在开发人员现有的工作流程中运行,这样他们就不必退出开发环境来实施安全功能,也不需要他们学习全新的软件。为此,它应无缝集成到现有软件和开发环境中。
SCA工具不仅要进行简单的扫描,还应对软件组件及其依赖关系进行全面分析。它应能在特定项目和工作范围内优先处理需要您关注的风险较高的漏洞。它应该提供清晰、全面的报告,这些报告将成为高质量治理和控制的基石,它还应该能够快速、轻松地修复漏洞。理想情况下,这一流程将是自动化和可扩展的,这样您的SCA功能就能随着您的代码库以及软件和应用程序范围的扩大而增长。现在,它应该是云本地的。