“软件供应链安全”相关文章合集
杨国梁 新思科技软件质量与安全部门高级安全架构师
当前,开源组件已成为软件应用程序中不可或缺的一部分。然而,随着开源软件数量的快速增长,应用领域的不断扩大,随之而来的安全问题也变得愈发严峻。
现如今,使用开源代码进行软件的研发已成为主流。这不仅可以提高开发效率,还将为企业节约大量的时间和人力成本。
开源一词最早出现于1998年,但是开源软件的产生却可以追溯到20世纪80年代的自由软件运动。1984年,自由软件之父美国国家工程院院士Richard Stallman建立起操作系统 GNU,标志着基于“自由软件”思想的操作系统落成,同时也揭开了开源运动的序幕。几年后,Linus的创始人Linus Benedict Torvalds在自由软件运动所提倡的“自由分享”的思想影响下,基于 GNU GPL框架发布了Linux。至此,开源软件开始走向正轨。
近年来,随着云计算、人工智能、大数据等新兴技术的快速发展,越来越多的企业开始在开源的基础上开发和构建软件,从操作系统、浏览器、到企业管理系统、游戏……各种类型的开源软件如雨后春笋般涌现出来。
根据新思科技近日发布的《2020年开源安全和风险分析报告》(OSSRA)显示,2019年,新思科技审计了1253个商业代码库,有99%的代码库都使用到了开源的组件,其中开源在所有代码中的平均占比为70%。可见,开源对于现代的商业代码的渗透率是非常之高。
然而,凡事都有利有弊,开源也不例外。虽然使用开源组件让软件开发效率得到极大提升。但与此同时,随着开源代码使用的越来越多,风险面也在扩大。报告指出,开源组件面临的风险主要包括法务、安全和运维三个方面:
1. 法务:使用开源组件,许可证合规是前提
目前,多数企业在使用开源组件的过程之中,存在一个认识误区,那就是开源组件可以随意使用,且不存在所谓的法律风险。
但实际上,开源组件本质上与其他拥有知识产权类的软件产品一样,受法律条款保护。使用开源组件,可被视为已同意接受该开源组件附随的许可协议,遵守许可协议中规定的条件或限制。反之,如果不遵守开源组件许可协议,则构成对开源组件著作权的侵犯。
新思科技软件质量与安全部门高级安全架构师杨国梁指出,现在,绝大多数开源许可证的法律的官司,都是发生在欧美的高科技制造业之间,因此出海的国内高科技企业需要特别注意开源许可证合规性。
据了解,如今,已有上百万个开源组件对应在2600多种许可证的体系之下,其中有20多种许可证的组件使用最为频繁,这涵盖了98%的开源组件。 而根据开源组件许可证法务条款的宽松度,还可将许可证分为强互惠型、弱互惠型、宽容性三种类别。
既然有了更为简单的分类法,是不是就意味着可以帮助企业进行更好地开源治理,降低开源风险呢?
“其实,这是远远不够的,企业还要将开源许可协议与使用场景和使用方式结合起来,才能确定使用的开源组件是否存在风险。”杨国梁说道。
同时,他还强调说:“出于某种原因,企业可能会使用到未知组件,这类组件并没有将自己声明在某一种许可证体系之下,这就像一颗定时炸弹,你只能听到倒计时,但是,却不知道什么时候会爆炸。因为原则上来说,组件的作者可以将它声明为任何一种许可证体系,或者直接声明为不允许使用。在2020 OSSRA报告中发现,有33%的被审计代码库中存在未给出任何明确授权或者使用条款的开源代码。”
可以说,保证合规使用开源,不仅要考虑到产品的使用场景、使用方式,还需要查看法律条款,以了解能做什么,不能做什么。这对于开发人员来说是非常复杂的。
据杨国梁介绍,新思科技的Black Duck工具解决了这一问题。该软件可以高效地确认出用户使用到的组件,并将法律条款罗列出来,能够更清楚地给用户提示哪些事情是可以做的,哪些是不能做的。
2. 安全:开源组件存在漏洞
随着开源组件的广泛采用,暴露于安全漏洞的风险也在持续增加。2020 OSSRA报告指出,2018年到2019年期间,含高危漏洞代码库从40%涨到49%,含漏洞代码库从60%涨到了75%。
“情况正变得越来越糟,”杨国梁说道,“安全问题说白了就是时间的游戏,从开源组件中出现BUG开始,到NVD发布漏洞信息,与此同时POC/EXP流出,这时黑客发起攻击,然后在攻击的某个过程中被发现,又过了一段时间漏洞被修复,整个过程都是一个安全的高风险期。”
然而,NVD只是一个漏洞聚合的平台,可能要比漏洞源头出现的时间晚20多天,也就是说要加上这20多天才是整个高安全风险期。因此,及时发现安全漏洞,已成为亟待解决的问题。
杨国梁介绍说:“BDSA是Black Duck工具增强版的漏洞库。首先,在时效性上,平均比NVD能够早29天披露多种的信息,在漏洞源头出现的4小时之内就能将问题录入到用户的系统中,并发出提醒;其次,在准确度上,CVE-2018某个漏洞刚发布时,受到影响的版本从2.3到2.3.34,2.5到2.5.16,其实,描述的版本是不全的,而BDSA识别出了额外23个受影响的版本;在优先级上,对于安全团队来说,他们不是发现不了问题,有可能是发现的问题太多,不知道优先处理哪一个,BDSA会给出一个更加准确的优先级的排序的信息。此外,在修复建议上,BDSA会给出如何修复、修复到哪个版本,以及哪个版本完全没有漏洞等建议。如果无法修复,将给出规避方案。 ”
3. 运维:老旧组件缺乏维护
事实上,除了法务和安全风险之外,运维风险也是使用开源组件过程中不可忽视的问题。根据2020 OSSRA报告统计,82%的代码库中,包含已经过期4年以上的组件,88%的代码库中,包含过去两年中没有任何开发活动的组建。
"开源组件从本质上来说是我们的生产工具,”杨国梁表示,“生产工具决定生产力,而生产工具又依赖于它背后的组织来维护。当这些组织出了问题,不能再对这些工具提供维护时,生产力就要大打折扣,这意味着没有人会去解决潜在的漏洞。 ”
最后杨国梁还特别指出,开源软件在发布上市之后,需要持续对其进行监控,出现问题将重新进行治理。
写在最后:
毫不夸张地说,开源软件已经渗透到人们生活的方方面面。但与此同时,我们也看到,开源组件带来的安全风险也在不断增加。
不过,可以预见的是,凭借着多年在软件安全和质量解决方案方面的经验积累,新思科技将帮助越来越多的企业持续提升管理开源风险的能力。