2022年开源软件供应链安全风险研究报告_第1页
2022年开源软件供应链安全风险研究报告_第2页
2022年开源软件供应链安全风险研究报告_第3页
2022年开源软件供应链安全风险研究报告_第4页
2022年开源软件供应链安全风险研究报告_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2022年开源软件供应链安全风险研究报告PAGEPAGE10目录前言 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发现十:平每版洞最多的TOP25组件五成来自Composer仓库 12三、组漏洞赖层播范围析 15发现十:一传播范围扩大125,二播影响围扩大173倍 15发现十:npm仓库中组件经2轮传,影件数量多 16发现十:一传播范围最的仓是Composer 16发现十:二传播范围最的仓是Nuget 17发现十:传影响最小的库是Maven 18四、开文件在漏险传播析 20发现十:超80%漏件在开项目有同件 20发现十:漏文件源项目传播围扩大54倍 21案例分析 21五、开安全险建议 23一、开源漏洞发展现状及趋势开源软件具有代码公开、易获取、可重用的特点,这一特点是开源软件热度攀升的重要原因。随着开源软件的广泛使用,一旦软件发现安全漏洞,必将给开发、安全团队带来严峻的挑战。然而,开源漏同时,对于软件使用者,由于缺少漏洞信息跟踪能力,使得漏洞修复具有滞后性,提升了软件被攻击的风险,为软件供应链安全管控增加了难度。本次研究收录了官方漏洞库、开源社区等渠道的数据120152020年发布的开源漏洞为研究对象,本报告展示了近6年开源安全漏洞发展现状及趋势。发现一:开源软件漏洞整体呈增长趋势,2020年增长率略有下降图1 开源漏洞时间分布201551国家信息安全漏洞CNVD共享平台(/)、美国国家漏洞库(https://nvd.nist.gov/)、通用漏洞披露库(/)等2018GitHub官方数1/320186756320152.85倍;201792.86%;201920202019年发1746条。发现二:CVE官方未收录的开源软件漏洞数逐年递增图2 CVE官方未收录开源漏洞情况CVE官方网站22020CVE1362202023.78%;CVE2017133.52%。POCNVD11年2020CVE-2009-4067Linux内核AuerswaldLinuxUSBPOC披露到NVD11年。POC20091019日披露3;20091124日获得CVE2020112NVD(NVD等440%图3 含高危以上漏洞占比62015年30.87202056%;其中,20172020年高危及46.9120205成。图4 2020年漏洞危害等级占比发现五:2020CWE-79图5 2020年开源漏洞TOP10CWE缺陷类型CWE-792020110CWE很容易并被利用,往往通过系统信息暴露、窃取数据或阻止应用程序CWE可以帮助开发人员、测试人员、用户、项目经理以及安全研究人员深入了解当前最严重的安全漏洞。表1 2020年开源漏洞TOP10CWE缺陷类型CWE编号中文名称个数CWE-79在Web页面生成时对输入的转义处理不恰当(跨站脚本)824CWE-506内嵌的恶意代码726CWE-400未加控制的资源消耗(资源穷尽)510CWE-200信息暴露305CWE-20输入验证不恰当212CWE-94对生成代码的控制不恰当(代码注入)201CWE-119内存缓冲区边界内操作的限制不恰当142CWE-125跨界内存读134CWE-78OS命令中使用的特殊元素转义处理不恰当(OS命令注入)124CWE-325缺少必要的密码学步骤117二、开源组件生态安全风险分析开源组件生态蓬勃发展,重要原因是组件独立、可复用。组件化可以大幅度提高开发效率、可测试性、可复用性、提升应用性能。同组件标准化使得优质好用的组件越来越多,用户也更愿意使用,形成开源组件被广泛使用,根据官方数据显示,Maven仓库数据量已650930712亿,PyPI49万。CocoaPods4Composer5Maven7npm8Nuget9、PyPI10、Rubygems1186年各仓发现六:开源组件生态中的漏洞数呈上涨趋势,2020年环比增长40%6304.48倍。图6 开源组件生态漏洞时间分布6年中Maven仓库漏洞数量最多图7 近6年中各组件仓库漏洞情况6Maven3533个;Go3481413个。发现八:超半数仓库的漏洞数均较上年有所增长图8 近6年各仓库漏洞分布图6年,Composer、、Maven、、PyPI、Rubygems6Rubygems仓库漏10.5仓库和PyPI252132%;Maven2020发现九:20202.6倍左右20201826202053%,201920202.6220182019171个。图9 近6年新增漏洞风险等级时间分布图10 近6年新增漏洞各风险等级占比发现十:2020Rubygems图11 2020年各仓库中含高危以上漏洞占比402020年,RubygemsRubygems仓库新增漏2020Go仓库新增25组件约五成来自Composer仓库202025/1257Maven47图12平均版本漏洞最多TOP25组件仓库分布图13Composer仓库组件分布图14PyPI仓库组件分布图15Maven仓库组件分布图16npm和Nuget仓库组件分布三、组件漏洞依赖层级传播范围分析软件工程中经常引用组件来实现某些功能,组件之间存在相互依ABCABBCAC组件存在安全漏洞,组件之间又存在相互依赖关系,导致漏洞在组件Maven、npm、Rubygems、PyPI、Composer、Nuget66,41612,6,416定义,称该组件范围为一级传播;第二轮实验,查找直接依赖一级传6,416125倍,二级传播影响范围扩173倍图17组件漏洞依赖层级传播范围6,416801,164125倍。第1,109,5196,416173发现十三:npm2轮传播,影响组件数量最多图18各仓库组件漏洞传播范围RubygemsPyPIComposerNuget61,962Maven6npm仓库。1,962459,876个组件,漏洞的影响范围扩大了234倍;二级传播共波及601,5741,962307Composer图19各仓库一级传播影响范围Composer380个,为651播波影响范围最广的仓库是Composer。经过一级传播共波及99,611262发现十五:二级传播影响范围最广的仓库是Nuget1726组2广的仓库是Nuget23,24013584,995172个494图20各仓库二级传播影响范围发现十六:传播影响范围最小的仓库是Maven图21两轮漏洞传播组件漏洞影响范围分布图Maven2,289个,经2次传播,6Maven94,72441145,8272,28964倍。从整体上看,开源组件生态中漏洞影响范围远超预期,组件间的依赖层级关系会导致组件之间漏洞存在传播风险。因此,要保证软件的安全风险控制,应通过自动化的手段识别软件工程中的组件成分,梳理组件间的依赖关系;在已知成分清单基础上对组件漏洞风险实施管控;同时,还要对已知成分进行动态监控,建立组件生态的漏洞威胁警报,在动态变化中将安全漏洞风险降到最低。四、开源文件潜在漏洞风险传播分析开源项目中往往存在相互引用关系,同一开源文件可能被多个项目所引用或包含。考虑到开源文件这一特性,本研究选取已公开漏洞17,5701317,570发现十七:超80%漏洞文件在开源项目具有同源文件图22漏洞文件同源占比分布17,57080.35%14,1183,452个文件未找到同源文件。54倍图23漏洞文件在开源项目中传播范围分布14,118766,877个542,410,476个开源项目171案例分析LibTIFF项目中tif_next.c2个中危漏洞CVE-2015-1547CVE-2015-8784tif_next.c237tif_next.c1000tif_next.c26大托管平台引用tif_next.c表26大托管平台tif_next.c文件的同源开源项目举例托管平台开源项目名称版本号同源文件路径GitHubreactos/reactos14backups/ros-branch-0_4_2@73087见注释15Giteemirrors-opencv162.4.10见注释17Gitlablimbo18v2.2.1-Limbo-armv7-hf见注释19Bitbucketxray20FirstAddedTBB见注释21Sourceforgewxhaskell22wxInstall-Abriline-32-0.1见注释23CodePlexcasaengine24master见注释25从整体上看,本次研究发现相同的文件被多个开源项目所引用的现象远多于预期。考虑到漏洞利用的复杂性,本研究团队认为这些结构一致的同源文件具有潜在漏洞风险,漏洞是否能真正的被利用,还需要深入研究。五、开源安全风险建议开源生态带来的正面效应已在信息经济生活中发挥重要影响,如何在安全可控的情况下使用开源,已成为开源生态的关键任务。开源安全风险防范措施应贯穿软件开发的整个生命周期。本报告给出了如下六点建议:(一)建立开源管理领导组织。随着软件开发过程中开源软件的使用越来越多,开源软件事实上已经成为了软件开发的核心基础设施。开源软件由于其特殊性,从软件供应链视角看,将横跨采购、选型设计、研发编码、运维交付等多个环节,需要跨组织、跨部门协同管理。具备条件的企业、机构建议设立开源管理办公室或领导小组,全面学习开源生态知识,了解开源生态运作机制,开展开源风险意识培训,强化开源风险管控手段。(二)识别开源成分。开源软件全面渗透至软件供应链体系中,需准确识别软件中的开源成分(包括开源源代码成分、开源二进制成分、引用依赖的开源组件成分等),形成开源成分清单和图谱,做到对软件开源成分的可知可控。同时精确绘制开源组件依赖链条,防止安全风险随着开源组件依赖链条的逐层传播,是进行开源安全风险防范的基础。(三)修复已知开源漏洞。已知软件的开源成分清单和图谱,明确开源成分及依赖链条后,通过相关工具检测或知识库查询,可有效识别已知开源漏洞。结合项目实际情况进行漏洞修复,降低软件安全明确相关应急响应机制,最大程度降低风险。已知的开源漏洞修复,相较于代码安全审计,往往是将带有漏洞的组件升级至最新或较安全的组件版本,操作简单,易于实施,是一个投入产出比较高的风控措施。(四)建立开源威胁情报体系。软件安全是动态发展的,开源软(共同贡献分享。开源威胁情报呈现无统一组织,散落在互联网海量信息中。需建立对已知开源成分及依赖链条漏洞威胁情报的实时监控跟踪机制,搜集多维度多渠道的开源威胁情报,并针对企业、机构已有的开源成分清单和图谱,在第一时间内将有效的开源威胁情报同步给(五)弃用过老的开源组件和版本,及时安全更

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论