第1部分在本报告中,我们研究了采用开源软件背后的驱动因素,它重新定义了软件开发和操作部署技术(如容器和容器编排)的性质。我们确定了采用开源的许多风险和影响,从安全性和许可到这些问题中固有的管理复杂性。

在第2部分中,我们将研究软件组合分析(SCA)的属性,SCA是为迎接开源革命的组织解决许多此类风险而出现的技术部分。


第451条

软件组成分析正在成为对开源软件安全和许可风险的适当关注的一个日益明显的方面。这也是对组织在应对这些挑战时所面临的复杂性的认识,也是对工具和技术帮助的需要的承认。在45www.yabo11vip.com1 Research的2018年企业之声-信息安全:工作负载和关键项目调查中,近一半(44%)的受访者要么正在使用软件组合分析(在试点或SCA概念验证中),要么计划在未来12-24个月内部署它。其中,42%的受访者预计未来12个月将增加在SCA上的支出;其中六分之一的人预计这一数字将大幅增长。

在本报告中,我们探讨了管理安全漏洞、许可复杂性和管理复杂性的关键价值,这些因素推动了SCA的采用,同时也探讨了该技术不断扩大的广度——对语言和实现的支持,从开发到操作的覆盖范围,以及DevOps范围内集成工具的范围。最后,我们将介绍一些示例供应商,以及我们对SCA未来的期望。


SCA的兴起

SCA的历史可以追溯到许多线程——从私人公司及其创始人的经验教训,他们亲身经历了手工积累软件组件及其责任的痛苦,到OWASP(开放Web应用程序安全项目,由OWASP基金会社区管理),该项目在2013年将“使用具有已知漏洞的组件”添加到OWASP Web应用程序面临的十大安全问题列表中。

这一增加意义重大,因为许多政策和实施举措直接要求或间接影响组织将OWASP Top 10作为其基本安全措施的一部分。然而,没有什么比最近与开源漏洞相关的引人注目的安全事件(从Heartbleed到2017年的Equifax漏洞)更能推动SCA的崛起。

SCA功能与广泛采用的存储库的集成有助于在某些方面促进其采用;对于其他人来说,许可证遵从性的价值仍然很大。最近,对安全性的关注塑造了早期的参与者,以及最近的参与者,其中许多人也强调与流行的DevOps实践和工具集成的更无缝的方法。

今天,SCA围绕着三个基本的功能领域:

  • 识别和解决越来越多的软件构建所依赖的开源组件中的安全漏洞。
  • 解决开源许可证对软件项目的影响。
  • 管理跨软件领域的SCA涉及的范围和复杂性,从减轻开发中的问题到与广泛的现代开发和IT操作工具集集成,以及解决操作环境中的风险。强调自动化与这些工具集的一致增加了当前的市场驱动因素。

库存、集成、管理和覆盖

SCA提供的首要和最基本的价值之一是能够识别和跟踪您的投资组合中的所有开放源码软件(OSS)。OSS的可访问性是其主要价值之一,但同样的可访问性也伴随着风险。许可证问题和该软件固有的安全漏洞暴露是两个最著名的问题(我们将很快详细讨论这些问题)。但是在任何组织可以评估这些风险之前,它需要知道这些风险是如何以及在哪里存在的——这就需要一个准确和最新的OSS资产清单。

软件组成分析可以从各种各样的来源收集关于组件库存的详细信息,以开发特定项目的物料清单(BOM),或者提供跨多个项目的全面视图,以帮助组织管理多个(有时是相互关联的)并且通常是复杂的软件工作。

存储库是这些数据最常见的来源之一,SCA工具通常直接连接到流行的资源,包括GitHub、包管理器(如npm)、开源项目(如Apache Maven)和私有存储库。特别是Git和GitHub已经成为这种努力的一个越来越多的焦点,代表了“GitOps”大趋势的一个方面,它指的是使用Git和GitHub拉请求作为软件部署和基础设施配置的管理工具。SCA还可以监视签入/签出流程,以监视组件的完整性和策略遵从的状态。它还可以强制执行将不符合要求的组件合并到项目中的策略。

SCA也正在成为供应商所接受的功能的一个方面,这些供应商正在推进更广泛的计划,以协调工具管道(包括开源和专有),以更一致的方式实现DevOps自动化和流程管理。开发项目和个人组织可能在他们使用的语言、实现和工具集的范围上有很大的不同。为了跟上这些动态,供应商不断扩大支持的范围。即使被称为生态系统的特别公认的倡导者,例如Java,今天许多供应商不仅吹捧他们对多种语言的支持,而且还支持跨自动化领域的多种工具,这些工具反映了每个开发和运营团队的独特偏好。

SCA工具可以在项目的多个阶段交付结果——从最初的源代码开发到已编译的二进制文件;输出构件;甚至是容器、微服务和“无服务器”环境的运营部署。yabo07虽然与特定工具的集成很常见——例如,与Jenkins的集成有助于防止在构建时出现问题——但强调在整个DevOps范围内与工具无缝集成已经变得越来越明显。

在开发端,这反映了一种“左移”趋势,即寻求更直接地授权开发人员以获得更好的软件安全性和质量结果。这些工作与密切相关的集成保持一致,例如应用程序和软件安全测试,以及个人开发人员可用的源代码分析,这些分析提供了在将代码添加到或更改特定项目之前检查自己代码的能力。例如,SCA可以阻止将易受攻击的组件合并到开发项目中;例如,当不符合版本控制策略时,防止它们发布到源代码管理中;在构建执行之前阻止或警告它们;或者限制在操作中包含不兼容的组件。

正如这些例子所表明的,“向左移动”并不意味着SCA不属于DevOps的操作端。容器的覆盖也已经成为SCA的一个更频繁的方面,因为它有可能包括由组成应用程序和微服务的组件引入的暴露,以及它们越来越多地部署在其上的高度可移植的软件平台。yabo07防止在这些环境中构建已知漏洞只是用例的一部分。当新发现的漏洞影响到容器或微服务的给定组合时,组织将希望了解它们如何影响自己的部署,以便能够补救现有的资源补充,并在操作环境中采取适当的行动。yabo07

SCA现在还着眼于“无服务器”环境,在这种环境中,提供者使组织能够只公开特定于事件驱动服务的功能,而不需要提供或管理底层平台。进入该功能的软件可能由自定义开发之外的底层组件组成——这些组件属于SCA的范围。

当SCA技术展示它们的见解时,它们必须以一种有意义的方式这样做。他们必须回答的问题包括:已确定的问题是否构成重大风险?能否根据这些问题的严重程度或影响进行排序,以便进行更系统的管理?今天的许多工具不仅寻求回答这些问题,而且还提供如何最好地回答这些问题的指导。SCA允许组织为特定问题定义策略和策略模板,包括将可接受的组件和软件版本列入白名单的能力;根据影响对安全问题进行警报或响应;解决合同、许可或其他方面的问题。

然而,洞察并不总是只呈现给人类用户。将SCA的发现直接用于自动化和与更广泛的工具集(从ide到运维管理)的集成,这是提高DevOps管道自动化水平和进一步加速敏捷开发和运维的整体趋势的一部分。

安全漏洞识别与修复

SCA的关键价值之一——可以说是与软件安全最直接相关的价值——是识别软件组件、模块和项目中的漏洞的能力,这些软件组件、模块和项目通常是构建或基于这些开发工作的。虽然这些组件可能包括专有的或封闭的元素,但考虑到SCA在现代软件中扮演的主要角色,以及开放源码漏洞的可见性和影响,SCA市场的重点主要是开放源码。

漏洞清单长期以来一直在安全领域发挥着重要作用,例如在美国国家漏洞数据库的开发中,该数据库为识别特定漏洞并跟踪其严重性、可利用性和影响提供了一个中央交换中心。但要在NVD中列出漏洞,必须已经对漏洞进行了研究和分析。当然,攻击者并不局限于利用这些问题——根据定义,“零日”漏洞只有在攻击出现时才会为人所知。因此,对软件漏洞的独立研究成为SCA提供商的一个区别,可以为客户提供此类暴露的早期和可操作的警告。

越来越多地,这种见解还伴随着如何解决暴露的指导,无论是通过升级到解决问题的版本,还是说明如果升级是不切实际或不可行的,组织可以如何修改其软件。该指南可以包括源代码的特定实现,但考虑到现代软件中潜在漏洞的巨大规模,这些实现通常仅限于最严重的问题。

漏洞经常出现的方式之一是通过软件依赖关系,考虑到一个项目可能构建在另一个项目之上,而另一个项目又构建在其他项目之上,这些依赖关系可能在多个深度层次上出现。依赖性分析最近变得越来越明显,而且不仅仅是在SCA参与者中。GitHub在2018年初“收购”了Y combinator支持的AppCanary漏洞分析团队,并在2017年底引入了依赖关系图,提供了跟踪整个软件项目依赖关系的能力。此后不久,GitHub还针对Ruby gems、npm和Python包等组件中的公共漏洞,为公共存储库(以及选择漏洞检测的私有存储库)的所有者和管理员引入了安全警报。

依赖项跟踪的优点之一是能够定位和识别漏洞,即使组织没有意识到易受攻击的组件是其软件环境的一部分。这可以帮助确定风险和暴露的优先级,并帮助确定适当的补救方法,无论是通过升级、修改现有源,还是配置访问和使用。自动化启动流程(如策略异常和审批工作流)是SCA帮助组织解决问题的另一种方式,而不会中断高优先级业务功能的开发或操作。

SCA中漏洞管理的另一个方面是对有效暴露的识别。在依赖项目的实现中实际未使用的组件漏洞可能实际上处于休眠状态,但由于无法访问而不会构成风险,或者由于该功能未使用而利用该漏洞不会导致危害。这些区别必须合理地确定,实际上,利用将是一个死胡同,而不是无意中揭示了一个原本不受怀疑的暴露。

这种能力在SCA中变得更加明显,而不仅仅是作为一种手段来帮助控制误报,并实现始终备受追捧的目标,即识别最迫切需要采取行动的风险暴露。SCA经常被吹捧的价值之一是能够停止会导致合并漏洞或其他违反策略的问题的过程。但是,停止敏捷管道可能是现代组织可能发生的最糟糕的事情之一——它可能导致下游预期的中断、巨大的成本和失去商业机会。因此,需要立即解决的问题必须与那些不一定威胁软件生产和操作或业务本身的问题区分开来。SCA还可以自动启动破坏性较小的流程,以便在出现问题时解决问题。

解决许可问题

阻碍软件的许可范围可能比许多组织想象的要广泛得多——它们的交叉、冲突和重叠也更加复杂。在本报告的第一部分中,我们注意到开源倡议在其网站上列出了不少于83个开源许可证。组织和开发人员都可以假设(或声明)软件符合特定的许可证。事实上,它可能由额外的许可证,或者完全由另一个许可证来管理,并且不仅这些许可证之间可能存在冲突,而且在声明的许可证和软件实际使用的方式之间可能存在脱节。

如果这还不够复杂的话,软件产品可能会在后续开发中被其他组织使用——包括企业内部和第三方。许可冲突和问题可能会远远超出最初的实现,并且可能会在基于错误假设的开发序列中困扰任何组织。在并购等情况下,这可能是一个特别的困扰,在这种情况下,收购组织可能会承担目标的义务——包括适当的软件许可。因此,SCA成为尽职调查的一部分,以提供与收购的知识产权相关的许可条件和义务的全面清单,这些因素纳入收购的负债、资产和机会。

SCA可以确认软件使用是否与声明的许可一致,并识别使用与该许可不同的情况。它可以跨软件的所有组件分析许可,以确定适用的许可范围;识别冲突;并且(与策略不遵守的其他方面一样)提醒问题,建议补救或自动响应。

例如供应商

以下是提供软件组合分析的供应商的示例,按字母顺序排列。除了纯粹的公司外,这些示例供应商还包括那些开发或收购SCA以扩展软件供应链管理或应用程序和软件安全组合的公司。在后一种情况下,SCA特别与源代码的静态分析保持一致。

  • CA Technologies于2018年初收购了SourceClear,以巩固其SCA战略,并与2017年收购的Veracode在应用程序安全方面的资产保持一致——特别是用于源代码测试的静态分析功能。SourceClear的创始人Mark Curphey(他也是OWASP的创始人)进一步加强了这种一致性。SourceClear强调了其在分析方面的投资,指出其安全图表语言(Security Graph Language),它声称这是业界首个专门用于识别开源代码中的安全问题的领域语言。SourceClear使用调用图来跟踪项目对OSS库的使用到特定的代码行,这有助于它识别软件何时调用特定的漏洞。SourceClear是一个完全的SaaS产品,支持多种语言,并与许多包管理器和CI/CD工具集成。功能包括许可证风险分析、实时漏洞检测、漏洞方法分析、库目录和CI/CD代理。与DevOps工具链的紧密耦合使SourceClear能够控制管道。它对漏洞影响的分析使组织能够考虑不需要构建失败的替代补救方法,这有助于提高对敏捷目标的安全性支持。
  • Flexera (fka Palamida)是最初为开源软件提供软件许可和合规扫描的公司之一。当它还是Palamida时,该公司主要专注于代码扫描和管理,也有一些并购审查业务。在2016年被Flexera收购之前,除了许可证和其他信息外,该公司还专门扫描开源软件的漏洞,更正式地将安全作为重点。Flexera仍然提供软件组合分析和许可证优化,但其重点远远超出了开源软件,包括云、漏洞、补丁和边缘计算的管理。Flexera是最早将软件发布的安全性纳入代码管理的供应商之一,该公司仍然提供应用程序安全软件。Flexera销售软件和服务,包括咨询和培训,并专注于yabo07某些行业的软件供应链,包括金融服务、教育、政府、制造业和公用事业。2015年,Flexera收购了Secunia Research,后者专注于漏洞情报,提供跨多个平台的漏洞评估技术,并帮助组织修复软件漏洞。Secunia为Flexera的软件漏洞研究提供验证、测试和验证。
  • 对于SCA来说,Snyk是一个相对的新人,但已经引起了轰动,部分原因是它接触开源开发社区的方法,以及漏洞补救的方法。Snyk的产品可以直接从社区存储库(如GitHub或npm),通过API或Snyk网站访问。评估可能非常简单,比如验证每个GitHub对新引入的脆弱包的拉取请求,持续扫描存储库中的已知漏洞,使用简单的命令行界面扫描本地项目,或者作为持续集成的一部分。漏洞与Snyk映射的依赖关系相关,以及补救指导,当升级不可用时,可能会建议可用的升级或补丁。Snyk for Enterprise提供了这些功能,以及跨组织报告的仪表板、许可证管理、组(包括单点登录支持)和通过广泛接受的工具(如Jira和Slack)进行的问题跟踪,以及用于自定义增强和自动化的基于api的访问。该公司成立于2015年,总部位于伦敦,在特拉维夫和波士顿设有办事处。
  • Sonatype是SCA的早期参与者之一。作为Apache Maven的原始核心贡献者和Maven中央存储库的管理员,该公司与开源社区的开发人员有着紧密的联系。如今,Sonatype的产品扩展到整个软件供应链,并使组织能够实现不同级别的自动化开源治理。这家总部位于马里兰州富尔顿的公司成立于2008年,现在以支持所有流行的OSS语言和集成到领先的DevOps工具而闻名。Sonatype Nexus产品组合由三个关键锚点组成:Nexus Lifecycle,帮助组织在广泛的DevOps自动化工具和流程中集成智能、策略和控制;Nexus Firewall,它通过在开发生命周期的最早阶段阻止不需要的OSS组件来自动执行OSS策略;以及Nexus Repository,它为OSS组件、容器、构建构件和发布候选提供集中管理。
  • Synopsys在2017年收购Black Duck Software以加强其软件完整性集团的应用程序安全组合时,获得了SCA市场的大量份额。在加入Black Duck之前,Synopsys的SCA产品(以前称为Protecode)在某种程度上是有限的,但通过其分析二进制文件的能力保持了差异化,这被那些无法访问源代码或可能只在软件供应链的后期看到二进制文件的组织所重视。然而,Black Duck在SCA整体上有广泛的渗透。今天,Synopsys的Black Duck包含了Protecode二进制分析技术,并提供了广泛的功能,包括开源软件库存、漏洞映射、许可证和质量风险的识别和管理、开源风险策略管理以及对新检测到的安全威胁的主动警报。Black Duck Hub为这些功能提供了集中管理,而OpsSight则反映了最近对容器评估和新发现的容器漏洞警报功能的扩展。Black Duck提供了多种语言的覆盖,并集成了广泛的DevOps工具,如ide、CI工具和代码存储库,以及Kubernetes和OpenShift容器管理平台。
  • WhiteHat Security在2011年收购了Infrared Security的静态应用程序安全测试技术,目前提供静态(SAST)和动态(DAST)应用程序安全测试。注意到应用程序的安全性取决于其最薄弱的元素,WhiteHat看到了现代应用程序中开源组件的高比例,并在其WhiteHat Sentinel source Standard和Sentinel Essentials产品中提供独立的SCA或与SAST集成的SCA。这两种类型的测试都从WhiteHat Sentinel平台调用,并将结果交付给该平台,该平台统一了评估和分析。SCA功能提供了针对开发人员的报告,这些开发人员需要受影响组件的详细信息,以便识别漏洞和适当的补救措施,此外还提供了高级趋势报告,以满足高级IT和安全主管以及软件项目经理的需求。
  • WhiteSource是SCA的早期参与者,提出了持续开源组件管理的概念,并在代码构建、提交或使用时实时检测漏洞和许可问题,以克服当时的方法限制,例如周期性(通常是不完整的)扫描。如今,WhiteSource开源管理为治理(策略实施、报告等)和开发人员提供了解决方案,这些解决方案适合开发人员的自然生态系统——从ide到浏览器(例如,通常用于发现代码示例或开发指导)——以提供对漏洞和许可问题的可操作的洞察,以及补救的实用指导。最近,WhiteSource引入了有效的使用分析,以提供关于如何在软件中使用组件的详细信息,这有助于优先确定漏洞识别和补救。覆盖范围包括对容器评估的支持——一个不断增长的企业需求——以及对开源应用程序、模块和项目的支持。WhiteSource提供了广泛的语言覆盖,并与其他应用程序和软件安全领域的知名公司(包括Checkmarx和IBM)建立了技术合作伙伴关系,并提供了与MicroFocus(前惠普)Fortify的集成。

面向未来

开源热潮与SaaS和公共云的早期有一些相似之处,当时采用这些新的颠覆性资源就像为开发或业务团队提供信用卡一样简单。在开源的情况下,这种模式从廉价扩展到免费。开源项目比比皆是,并且通常是个人供应商以及公司发展的新努力的种子。考虑到对新技术的普遍和似乎无法抑制的渴望,这种模式是开源革命的主要驱动力之一。

但这种颠覆性的模式也会带来风险。在云计算中,仅仅几块钱的积累就导致了杰文斯悖论.例如,对于开源,这导致了这样一个事实,即可能没有任何中央权威机构或机构负责确保减轻任何一个开发人员或组件可能引入的风险,这可能会使成本、复杂性和风险超出预期。

然而,这种开放性为SCA提供了蓬勃发展的机会。SCA供应商现在正在接受驱动开源采用本身的因素。从GitHub等跳板访问依赖关系和漏洞分析工具或公开他们自己的API已成为一些人的市场渗透工具,让大量用户尝到了SCA的好处,并激发了对企业级功能的兴趣。

随着对新技术的需求和对其风险的日益认识,我们预计SCA将继续蓬勃发展。我们预计会有更多的公司被收购,特别是那些最能反映开源采用和实践价值的公司,以及那些需要在思想领导力方面进行投资,以更新与当今开发和IT运营的现实相比可能显得过时的公司。

我们还希望SCA能够反映出越来越多的人意识到,需要应用自动化和分析方面的进步,通过漏洞感知和补救来解决一些最长期存在的安全问题。SCA的一个优点是能够在将这些问题合并到软件之前解决它们。在渗透到日常生活各个方面的大量技术造成迄今无法想象的威胁之前,迫切需要将这些努力与业务脆弱性认识和缓解方面的进展结合起来。

斯科特·克劳福德
安全研究副总裁

Scott Crawford是451 Research公司信息安全频道的研究副总裁,负责信息安全市场的新兴趋势、创新和颠覆性报道。www.yabo11vip.com斯科特还是451研究中心量子技术卓越中心的成员。www.yabo11vip.com

杰伊·莱曼
首席分析师,云原生和DevOps

Jay Lyman是451 Research应用基础设施和DevOps频道的www.yabo11vip.com首席分析师。他涵盖了基础设施软件,主要是私有云平台,云管理和企业用例,这些用例以编排为中心,软件开发和IT运营(如DevOps、Docker和容器)的融合。

丹尼尔•肯尼迪
研究总监,企业之声:信息安全

丹尼尔·肯尼迪负责管理研究过程的所有阶段。他是一位经验丰富的信息安全专业人士,曾为福布斯在线和Ziff Davis撰写文章,并为包括《纽约时报》和《华尔街日报》在内的众多新闻媒体提供评论,他的个人博客Praetorian Prefect被RSA 2010会议评为信息安全领域的五大技术博客之一。

想读更多?现在申请审判。