开源是一种精神,更是一种合作共赢的模式。不过如今的开源生态虽然得以让诸多的程序员、技术人们学习、修改以及以任何目的向任何人分发开源软件,但是这并不意味着足够的安全。在本文中,我们将从最新发布的《开源漏洞管理现状》中深入了解开源组件安全的现状与趋势。
作者 | whitesource
译者 | 弯月,责编 | 屠敏
以下为译文:
如今,使用开源已经成为一种主流的做法,如果没有开源,你就无法跟上当今软件生产的步伐。由于使用开源的人越来越多,因此开源的漏洞也急剧增加,这就需要各个开发团队解决日益剧增的开源安全问题。
在这份名为《开源漏洞管理现状》的报告中,我们将深入探查开源管理。为此,我们采访了650多名开发人员,并从NVD、安全专家、业内漏洞审核数据库以及流行的开源问题追踪器等渠道收集了数据,这份报告将为您呈现开源安全管理的最新状况。我们的使命是,确定这个行业目前的状况,并了解未来几年的发展方向。
该报告有以下四点主要发现:
1. 开源漏洞数量的急剧上升,给负责安全目标的开发和安全团队带来了严峻的挑战。
2. 开发人员花费大量时间来解决开源漏洞,但由于缺乏标准实践和以开发人员为中心的工具,因此他们的效率非常低下。
3. 开源漏洞的优先级策略对于确保公司按时解决最紧迫的问题至关重要。
4. 可靠的开源漏洞修复优先级划分,可以将安全警报降低70%-80%。
开源安全漏洞数量在急剧上升
开源漏洞数量的急剧上升给负责安全目标的开发和安全团队带来了严峻的挑战。
已发现的开源漏洞数量急剧飙升,截止到2017年,已有将近3,500个漏洞。
根据我们从NVD、安全专家、业内漏洞审核数据库以及流行的开源问题追踪器收集到的数据表明,2017年发现的开源软件漏洞数量比2016年增长了50%以上。而且我们发现2018年这个数字还有继续上扬的趋势。
造成这一局面的原因可以归结为,随着开源组件的广泛采用,软件开发社区开始关注开源安全;同时公开数据的泄露也让开发社区提高了安全漏洞的意识。
2017年开源软件漏洞数量增长了51.2%
在调查中,我们采访了来自美国和西欧的650名开发人员,向他们征询有关实践以及使用开源时遇到的问题。
调查显示,只有极少数开发人员由于公司的政策等问题而没有采用开源组件。而使用开源的开发人员则形成了对开源的依赖。
96.8%的开发人员依赖于开源组件,因此他们受到了最近已知漏洞数量增加的严重影响。
开源组件的使用频率
由于大多数已发现的开源软件漏洞皆存在于为数不多的几个项目中——最受欢迎的项目,因此这种风险更加严重。
开源项目越受欢迎,社区规模越大,就越会吸引安全研究人员的“眼球”。随着越来越多贡献者的关注,每个月都会有人发现并公布更多安全与质量的问题。
根据我们的调查,7.5%的开源项目都很脆弱。在排名前100的最受欢迎项目中,32%都存在脆弱性。
虽然一个漏洞就足以让多个库面临风险,但平均每个易受攻击的开源项目中包含8个漏洞。
已知开源漏洞数量最多的十大开源项目中包含了我们熟悉的项目,也是我们的许多产品所依赖的项目。
这些项目中的大多数都是面向互联网前端的组件,而且有大量暴露在外可被攻击的方面,因此它们相对容易被利用和吸引大量关注,这绝非巧合。
另外,有趣的是这些项目中的大多数背后都有商业公司的支持。请注意,大量的漏洞报告通常意味着社区在积极地维护该项目,并不代表该项目的安全标准差。
漏洞数量最多的十大开源项目
在下列最易受攻击的语言列表中,C/C++遥遥领先,占所有漏洞报告的41%。JavaScript是最常用的编程语言之一,但它仅占第4位,仅有7%的漏洞。
漏洞数量最多的七大编程语言
但是,这并不是一件坏事。
安全意识的提高也会促进社区提供建议修复,通常他们会在几天内发布修复。
开源社区为97.4%的漏洞报告提供了至少一项建议修复程序。
然而,虽然开源社区在保护开源项目方面付出了艰辛的劳动,但用户无法从他们的努力中充分受益。
问题在于,有关漏洞的信息并不会在一个位置集中发布,这些信息往往分散在数百个资源中,而且通常都没有索引,因此很难搜索。
对于检测开源组件已知漏洞的开发人员来说,这将是一项长期的挑战。
在修复开源漏洞方面开发人员的效率很低
开发人员花费大量时间来解决开源漏洞,但由于缺乏标准实践和以开发人员为中心的工具,因此他们的效率非常低下。
开发人员并没有忽视开源漏洞的增加。我们的调查清楚地表明,开发人员已将开源安全漏洞视为使用开源的首要难题。
26%的开发人员认为安全漏洞是开源组件面临的最大挑战。开源软件漏洞的紧急度高于集成、功能、许可和选择。特别是,一些大型的组织更为关注开源的安全性。
使用开源组件时面临的最大挑战
我们已经在这个问题上付出了沉重的代价,开发人员每个月都要花费将近15个小时来处理开源漏洞(例如审查、讨论、报告和修补)。
每个月处理开源漏洞的时间
如果我们让经验丰富的开发人员负责修复开源漏洞,那么这个成本会更高。
不同级别的开发人员处理开源漏洞的时间
我们的调查还显示,在开发人员每月花费在解决开源安全漏洞的15个小时中,实际上只有3.8个小时在修复漏洞。
当询问开发人员在发现漏洞后应该怎么做时,他们没有提供明确的答案,这表明他们缺乏标准的实践方法。
由于在处理新发现的漏洞时缺乏固定的方法,所以导致他们在解决开源漏洞时的效率非常低下。
如果发现漏洞,你应该怎么做?
优先级策略是管理开源漏洞的关键
开源漏洞的优先级策略对于确保公司按时解决最紧迫的问题至关重要。
考虑到安全团队每天都会收到警报,安全漏洞的低效补救措施已经成为了一个主要问题。
业内顶级专家一致认为,尝试解决每个问题是不现实的,优先级划分才是高效管理开源漏洞的关键。
绝对安全是不可能的。零风险也是不可能的。开发安全运营团队必须针对持续的风险建立信得过的评估系统,并划分应用程序漏洞的优先级。努力去除应用程序中所有潜在的漏洞换来的只是徒劳无功,这会降低开发人员的工作速度,浪费时间去追逐不真实的问题(误报),解决真实但没有直接影响的漏洞,以及不会被用到的低风险漏洞。
——成功的开发安全运营团队需要做好的十件事情, Neil MacDonald Gartner
调查结果显示,开发人员普遍缺乏标准化的最佳实践来确定开源漏洞的优先级。
结果还表明,开发人员在确立修复优先级时,通常都会参考现成的数据,例如应用程序的重要性或修复的实际效果。但是,开发人员划分优先级时参考的数据不一定是正确的数据。
与黑客较量时,时间至关重要。特别是对于开源项目而言,因为它的漏洞数据是公开的。
因此,缺乏确定漏洞优先级的实践将导致资源使用率的低下,还会让开发人员将时间投入到“错误”的漏洞上。
开发人员普遍缺乏划分开源漏洞优先级的标准实践
事实上,开发人员应该根据漏洞对产品安全性的影响程度,来确定开源漏洞的优先级。
易受攻击的功能不一定会导致项目易受攻击,因为私有代码不一定会调用易受攻击的功能。
只有根据漏洞的有效性确定漏洞是否会构成实际的风险,才能为安全和开发团队节省宝贵的时间。
在测试了2,000个Java应用程序之后,我们发现这些应用程序中检测到的漏洞中,有72%是无效的。
分析有效漏洞和无效漏洞表明了根据有效性划分优先级的重要性。数据表明,70%的开源漏洞警报都是无效漏洞。
根据我们调查中收集的数据,这相当于为每位开发人员每月节省10.5小时(每月15个小时*70%)。
采用优先级策略的组织可以更快地修复关键问题,从而节省宝贵的开发时间并提高产品的安全性。
有效使用率分析
可靠的开源漏洞修复优先级划分,可以将安全警报降低70%-80%。
最近我们推出了一种新技术,可以根据应用程序使用的方式确定开源漏洞的优先级——有效使用率分析。
我们对来自12个组织的25个商业应用程序进行了beta测试,结果表明:
我们分析的所有项目都至少有一个开源漏洞。平均而言,每个项目包含8.2个易受攻击的库。
90%的漏洞(有效和无效)出现在传递依赖中,准确地追踪开源库之间的依赖对于安全至关重要。
84%的开源漏洞警报都是无效的,对产品的安全性没有影响。
64%的项目仅包含无效的开源漏洞,因此不需要任何修复措施。
无效开源漏洞的数量表明,各个组织可以收回大部分投入到研究和修复开源漏洞的时间和精力。
由于有效使用率分析的技术可以将资源集中投入到需要即刻修复的有效漏洞上,因而可以帮助开发团队节省时间。很多团队领导和经理都证实了这项新技术:
根据开源漏洞对项目安全性产生的影响分类,并通过可视化的方式表示出来,这样就可以轻松地确定开源漏洞的优先级。
通过识别专有代码与开源漏洞中直接或间接调用的文件和代码行号,我们可以帮助开发人员修复开源漏洞。
除了大幅减少了需要修复的漏洞外,还帮助开发人员节省了10%-20%的修复时间。
“这项新技术的最大优点在于,优先考虑哪些漏洞需要先修复。这种易于使用和扩展的技术可以帮助我们更轻松地解决产品中的漏洞。”
——IGT应用信息安全高级总监
原文:https://www.whitesourcesoftware.com
/open-source-vulnerability-management-report/#hero_section
本文为 CSDN 翻译,转载请注明来源出处。
【END】