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

2022中国软件供应链安全分析报告

信息技术2022-12-03奇安信小***
2022中国软件供应链安全分析报告

2022 中国软件供应链安全分析报告 奇安信代码安全实验室2022年6月 1 目录 一、概述1 1、软件供应链安全攻击事件保持持续高发1 2、开源软件安全风险是当前软件供应链安全的焦点问题3 二、国内企业自主开发源代码安全状况5 1、编程语言分布情况5 2、典型安全缺陷检出情况6 三、开源软件生态发展与安全状况7 1、开源软件生态发展状况分析7 2、开源软件源代码安全状况分析9 (1)编程语言分布情况9 (2)典型安全缺陷检出情况10 3、开源软件公开报告漏洞状况分析10 (1)大型开源项目漏洞总数及年度增长TOP2010 (2)主流开源软件包生态系统漏洞总数及年度增长TOP2012 4、开源软件活跃度状况分析14 (1)7成开源软件项目处于不活跃状态14 (2)近2万个开源软件一年内更新发布超过100个版本15 5、关键基础开源软件分析16 (1)主流开源生态关键基础开源软件TOP5016 (2)2/3的关键基础开源软件从未公开披露过漏洞19 (3)关键基础开源软件的整体运维风险较高20 四、国内企业软件开发中开源软件应用状况20 1、开源软件总体使用情况分析21 (1)平均每个软件项目使用127个开源软件21 (2)流行开源软件被超过1/3的软件项目使用21 2、开源软件漏洞风险分析22 (1)77%的软件项目存在容易利用的开源软件漏洞22 (2)平均每个软件项目存在69个已知开源软件漏洞23 (3)影响最广的开源软件漏洞存在于超3成的软件项目中23 (4)16年前的开源软件漏洞仍然存在于多个软件项目中25 3、开源软件许可协议风险分析25 (1)最流行的开源许可协议在超3/4的项目中使用26 (2)45.6%的项目使用了含有高风险许可协议的开源软件26 4、开源软件运维风险分析27 (1)20年前的老旧开源软件版本仍在被使用27 (2)开源软件各版本使用更加混乱28 五、典型软件供应链安全风险实例分析29 1、某主流网络接入存储(NAS)设备供应链攻击实例分析29 2、某主流VPN路由器供应链攻击实例分析31 3、三款国产操作系统供应链攻击实例分析33 4、某国产邮件系统供应链攻击实例分析35 5、Edge浏览器供应链攻击实例分析36 六、总结及建议38 附录:奇安信代码安全实验室简介40 一、概述 数字化时代,软件的重要性和软件供应链安全问题的严峻性已成为各方共识。为此,奇安信代码安全实验室去年发布了《2021中国软件供应链安全分析报告》(https://h5.qianxin.com/threat/report /detail/132),从多个维度分析了软件供应链的安全风险,并提供了详实的统计数据。 本报告是该系列年度分析报告的第二期,继续针对国内企业自主开发的源代码、开源软件生态、国内企业软件开发中开源软件应用等的安全状况,以及典型应用系统供应链安全风险实例进行深入分析,并总结趋势和变化。本年度报告相比于去年的报告新增了以下内容:在开源软件生态发展与安全部分新增了关键基础开源软件分析;在企业软件开发中的开源软件应用部分新增了漏洞利用难度的统计分析和开源许可协议风险分析;在典型软件供应链安全风险实例部分,重点分析了利用开源软件“老漏洞”攻破最新主流产品的实例,通过多个实例验证了由于软件供应链的复杂性,开源软件的“老漏洞”也可以起到“0day漏洞”的攻击效果。上述报告内容的变化,感兴趣的读者在阅读时可以重点关注。 1、软件供应链安全攻击事件保持持续高发 在过去的一年中,针对软件供应链的安全攻击事件依然呈现出高发态势,造成的危害也非常严重。 2021年8月,台湾芯片设计厂商Realtek称,其WiFi模块的三款开发包(SDK)中存在4个严重漏洞。攻击者可利用这些漏洞攻陷目标设备并以最高权限执行任意代码。这些SDK用于至少65家厂商制造的近200款物联网设备中。 2021年10月,攻击者劫持了NPM包ua-parser-js作者的账户约4小时,意图安装恶意软件。ua-parser-js每周下载量超过700万次,广泛应用于Facebook、苹果、亚马逊、微软、IBM等硅谷巨头企业中。 2021年11月,热门NPM包coa和rc连续遭劫持,并被植入恶意代码,影响全球React管道。coa库每周下载量约900万,用于GitHub上近500万个开源库中,rc库每周下载量达1400万。 2021年12月,ApacheLog4j2曝出Log4Shell漏洞(CVE-2021-44228),ApacheLog4j2是Java应用最广泛的开源日志组件,广泛应用于政府、企业和公共服务机构的平台、应用和业务系统中,该漏洞覆盖范围广而且利用门槛低,对大量系统和机构造成了严重影响。 2022年3月,俄乌冲突中,NPM开源包Node-ipc的作者RIAEvangelist作为反战人士,在代码仓库中进行了“供应链投毒”,添加的恶意js文件能够在包使用者的桌面创建反战标语。Node-ipc使用非常广泛,每周下载量超过100万次。 2022年4月,以色列安全公司发现高通和联发科芯片的音频解码器存在三个漏洞(CVSS评分为9.8、7.8和5.5),来源于11年前苹果公司开发的开源无损音频编解码器AppleLossless。利用这些 漏洞进行攻击,可获取受影响移动设备媒体、音频会话的访问权限及摄像头数据流等,漏洞影响范围包括数百万安卓设备。 2022年5月,安全研究人员在NPM注册表中发现了一些恶意软件包,与大多数恶意软件相比,其危险性更大,攻击者可以通过后门完全控制被感染的机器。分析人员称,这是一次依赖混淆攻击,其目标非常明确,并且掌握了非常机密的内部信息。德国的著名媒体、物流和工业企业等机构受到攻击。 2、开源软件安全风险是当前软件供应链安全的焦点问题 奇安信代码安全实验室通过数据对比分析发现,与前一年度相比,国内企业自主开发源代码的安全状况有较明显的改善,千行代码缺陷密度和十类典型安全缺陷的总体检出率均有明显下降,这应该得益于软件源代码安全缺陷分析工具的持续应用,以及程序员编写代码时的安全意识提高。但开源软件安全风险仍然居高不下,开源软件的安全风险管控是当前软件供应链安全保障需要解决的核心焦点问题。 1)国内企业自主开发源代码安全性明显改善 2021年,国内企业自主开发源代码的整体缺陷密度和高危缺陷 密度相比2020年均有所下降,其中高危缺陷密度下降较为明显,从 1.08个/千行降为0.65个/千行;十类典型安全缺陷的总体检出率从2020年的77.8%下降到59.9%,下降了近18%。 2)开源生态保持蓬勃发展,开源软件自身安全问题更加严峻 2020年底和2021年底,主流开源软件包生态系统中开源项目总 量分别为3814194个和4395386个,一年间增长了15.2%,开源生态依然保持蓬勃发展的态势。与此同时,开源软件漏洞数量持续增长,2021年新增的开源软件漏洞达到6346个;不活跃的开源项目占比从去年报告的61.6%提升至69.9%。根据“奇安信开源项目检测计划”的实测数据显示,所检测开源软件的总体缺陷密度和高危缺陷密度略高于去年,依然处于较高的水平;十类典型缺陷的总体检出率为73.5%,远高于去年的56.3%。总体来看,开源软件自身的安全问题日益严峻。 3)国内企业软件开发中,开源软件安全风险问题未见改善 2021年,奇安信代码安全实验室对3354个国内企业软件项目中使用开源软件的情况进行了分析,从数据分析情况来看,国内企业使用开源软件时的安全风险问题没有得到改善,开源软件安全风险是当前企业软件开发中亟待解决的首要问题。 在2021年分析的3354个软件项目中,平均每个项目使用127个开源软件;存在已知开源软件漏洞的项目占比86.4%,平均每个项目存在69个已知开源软件漏洞,十几年前的古老开源软件漏洞依然存在于多个项目中;20年前的老旧开源软件版本仍然在使用,同一开源软件各版本的使用更加混乱,被使用版本最多的开源软件有235个版 本在使用。整体的安全风险状况与2020年相比没有任何改善,风险水平仍处于较高状态。 与此同时,我们观察到2021年很多机构和企业开始关注开源软件供应链安全,但仅有少数的机构和企业应用了相关的开源安全治理工具。相信随着开源安全治理工具的推广和持续应用,国内企业软件 开发中的开源软件安全风险问题会逐步得到改善。 二、国内企业自主开发源代码安全状况 源代码安全是软件供应链安全的基础。2021年全年,奇安信代码安全实验室对2406个国内企业自主开发的软件项目源代码进行了安 全缺陷检测,检测的代码总量为550808816行,共发现安全缺陷 5427125个,其中高危缺陷359055个,整体缺陷密度为9.85个/千 行,高危缺陷密度为0.65个/千行。与2020年相比,整体缺陷密度 和高危缺陷密度均有下降,其中高危缺陷密度下降较为明显,从1.08 个/千行下降至0.65个/千行。 1、编程语言分布情况 在2406个国内企业自主开发的软件项目中,使用数量排名前3 的编程语言为Java、C/C++、PHP,对应的软件项目数量分别为1441个、516个和102个,其中Java语言项目占比达60%。相关国内企业在进行软件开发时,Java语言仍然是首选。编程语言的分布情况如下图所示。 2、典型安全缺陷检出情况 输入验证、路径遍历、跨站脚本、注入、NULL引用、资源管理、密码管理、API误用、配置管理、日志伪造等十类典型安全缺陷的总体检出率(检出率指含有某类缺陷的软件项目数占软件项目总数的比例)为59.9%,低于去年报告的77.8%。 排名 缺陷类型 检出率 排名变化 1 输入验证 41.8% 0 2 跨站脚本 35.1% ↑1 3 API误用 31.5% ↑5 4 NULL引用 30.2% ↑1 5 资源管理 29.9% ↑1 6 路径遍历 28.4% ↓4 7 注入 26.3% ↓3 每类典型缺陷的检出率、排名及排名变化情况如下表所示。除API误用类缺陷的检出率从去年报告中的28.7%升至31.5%外,其他缺陷的检出率均有不同程度的下降。 8 密码管理 22.8% ↓1 9 配置管理 18.2% 0 10 日志伪造 12.5% 0 三、开源软件生态发展与安全状况 开源软件是现代软件开发最基础的原材料,其代码自身的安全状况,会直接影响最终软件的安全性。本年度报告从开源软件生态发展状况、开源软件源代码安全状况、开源软件公开报告漏洞状况、开源软件活跃度状况、关键基础开源软件分析等五个方面对2021年开源软件生态发展与安全状况进行综合分析。相比于去年的报告,本章节新增了“关键基础开源软件分析”部分,针对使用广泛的关键性、基础性开源软件进行分析,希望能够初步刻画当前软件世界的“底座”及其安全状况。 1、开源软件生态发展状况分析 据奇安信代码安全实验室监测和统计,2020年底和2021年底,主流开源软件包生态系统中开源项目总量分别为3814194个和 4395386个,一年间增长了15.2%;截至2021年底,主流开源软件包 生态系统中平均每个开源项目有11.8个版本,较去年报告的10.2个版本有所增加。可以看出,2021年开源软件生态依然繁荣。 对Maven、NPM、Packagist、Pypi、Godoc、Nuget、Rubygems、Swift等八个典型开源软件包生态系统的具体分析如下: NPM包生态项目数量最多,Godoc包生态增速最快。这一状况与 去年报告保持一致。八个典型的开源软件包生态系统中开源项目数量和增长率情况如下图所示,其中开源项目数量最多的是NPM包生态系统,截至2021年底,其开源项目数量达到了1892984个;开源项目数量增速最快的是Godoc包生态系统,2021年一年间的项目总量增速达到了39.9%。 序号 包生态系统 2021年项目数 2021年版本数 平均版本数 1 Maven 542743 10803