您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[国家互联网应急中心]:2021年开源软件供应链安全风险研究报告 - 发现报告
当前位置:首页/行业研究/报告详情/

2021年开源软件供应链安全风险研究报告

2021年开源软件供应链安全风险研究报告

2021年开源软件供应链 安全风险研究报告 国家计算机网络应急技术处理协调中心 2021年6月 1 前 言 “开源”是指源代码、文档等设计内容开放的开发模式,是群智协同、开放共享、持续创新的理念和生产方式。2020年,根据Synopsys发布的《开源安全和风险分析报告》显示,开源使用数量占比较高,在教育、金融、医疗等传统行业渗透率已超过60%,开源软件已成为企业构建信息技术的重要选择。 国家政策上,2021年3月12日,开源首次被明确列入《中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要》,支持数字技术开源社区等创新联合体发展,完善开源知识产权和法律体系,鼓励企业开放软件源代码、硬件设计和应用服务。 开源蓬勃发展一方面可以突破技术壁垒、推动创新,另一方面考虑到国际竞争关系错综复杂,开源软件安全作为软件供应链安全的重要环节,面临着安全漏洞、知识产权、软件供应链安全等相关风险。在此背景下,认识和了解开源安全风险情况是至关重要的。 国家互联网应急中心联合棱镜七彩开源安全研究团队持续对开源软件供应链安全进行跟踪分析。《2019年开源软件风险研究报告》主要从GitHub热门开源软件视角出发,对开源软件安全风险进行了分析。本报告从全新视角带来开源安全风险新的发现与突破。报告共分为五部分,第一部分,首先介绍开源漏洞的发展现状及趋势;第二部分,聚焦开源组件生态库的安全风险;第三部分,重点围绕组件按依赖层级漏洞传播范围分析;第四部分,对文件级漏洞潜在安全风险及波及范围进行讨论;第五部分,对开源使用者和关注者如何在开源领域蓬勃发展下,更安全的拥抱开源生态提出了建设性意见。 2 目 录 前 言 ........................................................................................................................................... 1 一、开源漏洞发展现状及趋势 ................................................................................................... 3 发现一:开源软件漏洞整体呈增长趋势,2020年增长率略有下降 .......................... 3 发现二:CVE官方未收录的开源软件漏洞数逐年递增 .............................................. 4 发现三:开源软件漏洞由POC披露到NVD首次公开时间长达11年 .................... 4 发现四:近4年,高危及以上开源漏洞占比均超40% ................................................ 5 发现五:2020年,最主要缺陷类型为CWE-79 .......................................................... 6 二、开源组件生态安全风险分析 ............................................................................................... 8 发现六:开源组件生态中的漏洞数呈上涨趋势,2020年环比增长40% ................... 8 发现七:近6年中Maven仓库漏洞数量最多 ............................................................. 9 发现八:超半数仓库的漏洞数均较上年有所增长 ..................................................... 10 发现九:2020年高危漏洞占比最高,相比去年增加2.6倍左右 ............................ 10 发现十:2020年,含高危以上漏洞占比最多仓库是Rubygems.............................. 12 发现十一:平均每版本漏洞最多的TOP 25组件约五成来自Composer仓库 ....... 12 三、组件漏洞依赖层级传播范围分析 ..................................................................................... 15 发现十二:一级传播影响范围扩大125倍,二级传播影响范围扩大173倍 ......... 15 发现十三:npm仓库中的组件经2轮传播,影响组件数量最多 ............................. 16 发现十四:一级传播影响范围最广的仓库是Composer ........................................... 16 发现十五:二级传播影响范围最广的仓库是Nuget .................................................. 17 发现十六:传播影响范围最小的仓库是Maven ........................................................ 18 四、开源文件潜在漏洞风险传播分析 ..................................................................................... 20 发现十七:超80%漏洞文件在开源项目具有同源文件 .............................................. 20 发现十八:漏洞文件在开源项目中传播范围扩大54倍 ........................................... 21 案例分析 ........................................................................................................................ 21 五、开源安全风险建议 ............................................................................................................. 23 3 一、开源漏洞发展现状及趋势 开源软件具有代码公开、易获取、可重用的特点,这一特点是开源软件热度攀升的重要原因。随着开源软件的广泛使用,一旦软件发现安全漏洞,必将给开发、安全团队带来严峻的挑战。然而,开源漏洞信息往往散落分布在各大社区,很多漏洞信息不能及时被官方收录。同时,对于软件使用者,由于缺少漏洞信息跟踪能力,使得漏洞修复具有滞后性,提升了软件被攻击的风险,为软件供应链安全管控增加了难度。 本次研究收录了官方漏洞库、开源社区等渠道的数据1,并统一收录整理成开源漏洞知识库。通过从中选取2015年至2020年发布的开源漏洞为研究对象,本报告展示了近6年开源安全漏洞发展现状及趋势。 发现一:开源软件漏洞整体呈增长趋势,2020年增长率略有下降 图1 开源漏洞时间分布 根据调查结果,相比2015年漏洞数据,近5年的漏洞数量均有不 1 国家信息安全漏洞CNVD共享平台(http://www.cnvd.org.cn/)、美国国家漏洞库(https://nvd.nist.gov/)、通用漏洞披露库(https://cve.mitre.org/)等 4 同程度增长。2018年是开源项目快速增长的一年,根据GitHub官方数据显示,GitHub代码仓库中超过1/3的开源项目创建于2018年,2018年新增开源漏洞数也创下近6年新高,新增7563个漏洞,相较于2015年翻了2.85倍;2017年漏洞增长速度最快,环比增长率为92.86%;2019年与2020年增长率略有下降,2020年发布的漏洞数较2019年发布漏洞数少了1746条。 发现二:CVE官方未收录的开源软件漏洞数逐年递增 图2 CVE官方未收录开源漏洞情况 对CVE官方网站2进行统计,可发现2020年发布的开源漏洞中未被CVE官方收录漏洞有1362个,占2020年发布漏洞总数的23.78%;CVE官方未收录数据呈上长趋势,增长率逐年递增,2018年环比2017年增长速度达133.52%。 发现三:开源软件漏洞由POC披露到NVD首次公开时间长达11年 2020年发布的开源漏洞中,编号为CVE-2009-4067的Linux内核 2 https://cve.mitre.org 5 的Auerswald Linux USB驱动程序的缓冲区溢出漏洞由POC披露到NVD首次公开时间长达11年。POC信息在2009年10月19日披露3;该漏洞于2009年11月24日获得CVE编号,但未公开漏洞具体信息;直到2020年11月2日NVD官方才将其发布。 开源软件的使用者仅关注官方漏洞库(如NVD等)可能无法及时获取漏洞信息,需综合考虑更多渠道的漏洞数据。 发现四:近4年,高危及以上开源漏洞占比均超40% 图3 含高危以上漏洞占比 调查结果显示,近6年高危及以上漏洞占比逐年递增,从2015年占比30.87%增长至2020年占比56%;其中,2017年至2020年高危及以上漏洞占比均超过40%;2020年,超危漏洞占比为8.83%,高危漏洞占比为46.91%,占2020年新增漏洞超5成。 3 https://www.exploit-db.com/exploits/35957 6 图4 2020年漏洞危害等级占比 发现五:2020年,最主要缺陷类型为CWE-79 图5 2020年开源漏洞TOP 10 CWE缺陷类型 调查结果显示,缺陷类型CWE-79数量最多,占2020年新增开源漏洞的14%左右。表1列出了TOP 10 CWE缺陷类型,这些缺陷类型很容易并被利用,往往通过系统信息暴露、窃取数据或阻止应用程序正常工作等方式,对系统造成安全风险。了解开源漏洞Top10 CWE 可以帮助开发人员、测试人员、用户、项目经理以及安全研究人员深入 7 了解当前最严重的安全漏洞。 表1 2020年开源漏洞TOP 10 CWE缺陷类型 CWE编号 中文名称 个数 CWE-79 在Web页面生成时对输入的转义处理不恰当(跨站脚本) 824 CWE-506 内嵌的恶意代码 726 CWE-400 未加控制的资源消耗(资源穷尽) 510 CWE-200 信息暴露 305 CWE-20 输入验证不恰当 212 CWE-94 对生成代码的控制不恰当(代码注入) 201 CWE-119 内存缓冲区边界内操作的限制不恰当 142 CWE-125 跨界内存读 134 CWE-78 OS命令中使用的特殊元素转义处理不恰当(OS命令注入) 124 CWE-325 缺少必要的密码学步骤 117 8 二、开源组件生态安全风险分析 开源组件生态蓬勃发展,重要原因是组件独立、可复用。组件化可以大幅度提高开发效率、可测试性、可复用性、提升应用性能。同时,组件化能够屏蔽逻辑,帮助迅速定位问题,易于维护和迭代更