2023 中国软件供应链安全分析报告 奇安信代码安全实验室2023年7月 1 目录 一、概述1 1、软件供应链安全攻击事件依然高发1 2、开源软件安全是软件供应链安全的重中之重3 二、国内企业自主开发源代码安全状况5 1、编程语言分布情况5 2、典型安全缺陷检出情况6 三、开源软件生态发展与安全状况7 1、开源软件生态发展状况分析7 2、开源软件源代码安全状况分析9 (1)编程语言分布情况10 (2)典型安全缺陷检出情况10 (3)安全问题修复确认情况11 3、开源软件公开报告漏洞状况分析11 (1)大型开源项目漏洞总数及年度增长TOP2012 (2)主流开源软件包生态系统漏洞总数及年度增长TOP2014 4、开源软件活跃度状况分析15 (1)超7成开源软件项目处于不活跃状态16 (2)超2.2万个开源软件一年内更新发布超过100个版本16 5、关键基础开源软件分析17 (1)主流开源生态关键基础开源软件TOP5017 (2)从未公开披露过漏洞的关键基础开源软件占比进一步升高 ............................................................................................................20 (3)关键基础开源软件的整体运维风险仍处于较高水平20 四、国内企业软件开发中开源软件应用状况21 1、开源软件总体使用情况分析21 (1)平均每个软件项目使用155个开源软件21 (2)流行开源软件被超4成的软件项目使用22 2、开源软件漏洞风险分析22 (1)近8成软件项目存在容易利用的开源软件漏洞22 (2)平均每个软件项目存在110个已知开源软件漏洞23 (3)影响最广的开源软件漏洞存在于超4成的软件项目中24 (4)20多年前的开源软件漏洞仍然存在于多个软件项目中25 3、开源软件许可协议风险分析26 (1)最流行的开源许可协议在超半数的项目中使用26 (2)1/6的项目使用了含有超、高危许可协议的开源软件26 4、开源软件运维风险分析28 (1)近30年前的老旧开源软件版本仍在被使用28 (2)开源软件各版本使用依然混乱29 5、不同行业软件项目开源使用风险分析29 (1)各行业软件项目分布情况29 (2)各行业软件项目使用开源软件情况30 (3)各行业软件项目含已知开源软件漏洞情况31 五、典型软件供应链安全风险实例分析32 1、某主流企业级无线路由器供应链攻击实例分析32 2、ZCS协同办公系统供应链攻击实例分析33 3、多款国产操作系统供应链攻击实例分析35 4、某国产CMS系统供应链攻击实例分析37 六、总结及建议39 附录:奇安信代码安全实验室简介42 一、概述 过去的一年,各界对软件供应链安全的关注度依然高涨,相关安全攻击事件也持续增加。为此,奇安信代码安全实验室在前两期《中国软件供应链安全分析报告》(https://www.qianxin.com/threat/reportdetail?report_id=161)的基础上,推出本分析报告。 作为该系列年度分析报告的第三期,本报告继续针对国内企业自主开发的源代码、开源软件生态、国内企业软件开发中开源软件应用等的安全状况,以及典型应用系统供应链安全风险实例进行深入分析,并总结趋势和变化。相比于去年的报告,本报告有以下新增之处:在开源软件生态发展与安全部分新增了开源项目维护者对他人提交安全问题的修复确认情况;在企业软件开发中的开源软件应用部分新增了对不同行业软件项目开源使用风险的分析,对开源许可协议的风险分析分别统计了超危和高危开源许可协议的使用情况;在典型软件供应链安全风险实例部分,通过多个新的实例再次验证了因软件供应链的复杂性,开源软件的“老漏洞”发挥“0day漏洞”攻击作用的状况。感兴趣的读者阅读时可重点关注上述变化之处。 1、软件供应链安全攻击事件依然高发 在过去的一年中,针对软件供应链的安全攻击事件持续增加,造成的危害也愈发严重。 2022年7月,攻击者通过在NPM上发布包时绕过双因子认证 (2FA),创建了1000多个用户账号,攻击者利用这些账号自动投放1283个包含挖矿脚本eazyminer的恶意模块,利用数据库、Web等所在服务器的机器闲置资源进行挖矿,如果开发者安装了这些包,则会在被调用时挖掘门罗币。 2022年11月,美国FBI和CISA发布联合公告指出,未具名的伊朗组织利用Log4Shell漏洞入侵了美联邦民事行政部门FCEB下属机构的一台未修复的VMwareHorizon服务器,并部署了挖矿恶意软件XMRig。FBI和CISA提到,所有尚未修复VMware系统中Log4Shell漏洞的机构都可能遭受此类攻击。 2022年12月,安全研究人员发现了GitHubActions的一个严重漏洞,该漏洞可造成恶意软件植入攻击,进而影响使用GitHubActions的软件项目,如下游软件项目以恶意代码编译更新等。GitHub证实了该问题的存在,并颁发了赏金,Rust修复了易受攻击的管道。2023年2月,半导体行业技术巨头AppliedMaterials称:其 一家主要的供应商因遭受勒索软件攻击而被迫中断生产,这将影响其第二季度的交付。该攻击事件及正在进行的其他供应链挑战将使其第二季度的成本增加约2.5亿美元。 2023年3月,安全研究人员发现,互联网语音协议交换机(VoIPIPBX)软件开发厂商3CX的VoIP桌面客户端在通过Git进行构建时,注入了因供应链攻击而引入的恶意代码,并使用合法的3CXLtd证书进行了数字签名,其中一个恶意DLL是利用了一个存在近10年的Windows签名验证漏洞(CVE-2013-3900)通过签名的。当用户安装应 用时,会加载恶意DLL,进而收集系统信息、窃取数据和凭据等,造成敏感数据泄露。3CXPhoneSystem被全球超60万家企业使用,每天用户超过1200万。 2023年5月,网络安全研究员对适用于Linux和Unix平台的热门开源互联网路由协议套件FRRouting中网关协议BGP的7种不同实现软件进行了分析,发现存在三个漏洞,它们的CVSS评分均为6.5,可被用于在易受攻击的BGP对等体上实现拒绝服务条件。目前FRRouting用于多家厂商如NVIDIACumulus、DENT和SONiC中。 2、开源软件安全是软件供应链安全的重中之重 奇安信代码安全实验室通过数据分析发现,与前两年相比,开源软件自身的安全状况持续下滑,国内企业软件开发中因使用开源软件而引入安全风险的状况更加糟糕。此外,开源项目维护人员对安全问题的修复积极性较低。开源软件供应链安全风险管控依然值得持续关注,需要更大的投入。 1)开源生态发展依然迅猛,开源软件自身安全状况持续下滑过去一年,主流开源软件包生态系统中开源项目总量增长了 25.1%,开源生态发展依然迅猛。与此同时,开源软件漏洞数量也持续增长,2022年新增的开源软件漏洞为7682个;三年来不活跃的开源项目占比从61.6%、69.9%逐渐升高至72.1%。根据“奇安信开源项目检测计划”的实测数据显示,三年来开源软件的总体缺陷密度和高危缺陷密度呈现出逐年上升的趋势,均处于较高水平;十类典型缺陷 的总体检出率为72.3%,与去年73.5%相当,远高于前年的56.3%。总体来看,开源软件自身的安全问题愈发严峻。 2)开源项目维护者对安全问题的重视度和修复积极性较低 2022年,“奇安信开源项目检测计划”共向各被测开源项目的维 护者反馈1484个安全问题,仅有547个得到确认并修复,其他937个反馈不修复、未反馈,或无人处理,安全问题的修复率仅为36.9%。另据统计发现,一个安全问题从提交到维护人员反馈确认并修复,时间较长的可长达一年甚至更久。 3)国内企业因使用开源软件而引入安全风险的状况更加糟糕 2022年,奇安信代码安全实验室对2631个国内企业软件项目中 使用开源软件的情况进行分析发现:平均每个项目使用155个开源软 件,远高于之前的126和127个;存在已知开源软件漏洞的项目占比达91.6%,平均每个项目存在110个已知开源软件漏洞,项目中最古老的开源软件漏洞的发现时间可追溯至21年前;1/6的项目中使用了含有超危或高危许可协议的开源软件;近30年前的老旧开源软件版本仍然在使用,同一开源软件各版本的使用依然混乱。整体的安全风险状况与前两年相比更加糟糕,风险水平仍处于较高状态。 另一方面,我们发现2022年许多机构和企业更加关注开源软件供应链安全,一些机构和企业基于规范的流程,在开源安全治理工具的辅助下开展相关工作。但从目前国内企业软件开发中使用开源软件的安全风险状况来看,这些经验、方法和工具还需要进一步的持续推广和应用。 二、国内企业自主开发源代码安全状况 软件源代码安全是软件供应链安全的基础。2022年全年,奇安信代码安全实验室对1589个国内企业自主开发的软件项目源代码进行 了安全缺陷检测,检测的代码总量为347814428行,共发现安全缺陷 3751450个,其中高危缺陷300459个,整体缺陷密度为10.78个/千 自主开发软件平均缺陷密度三年对比 12 10 8 6 4 2 0 10.11 10.78 9.85 1.08 0.65 0.85 2020年2021年2022年 缺陷密度(个/千行) 高危缺陷密度(个/千行) 行,高危缺陷密度为0.85个/千行。与前两年相比,整体缺陷密度略微升高,高危缺陷密度较去年有所反弹,但低于前年水平。 1、编程语言分布情况 在1589个国内企业自主开发的软件项目中,共使用了14种编程语言,使用数量排名前3的为Java、C/C++、NodeJS,对应的软件项目数量分别为1209个、105个和60个,其中Java语言项目占比达76.1%。可以看出,国内企业在进行软件开发时,Java语言仍然是首选,且比例更大。编程语言的分布情况如下图所示。 OC,8,0.5% Ruby,8,0.5% SQL,7,0.4% Scala,6,0.4% Swift,5,0.3% Go,24,1.5% Cobol,5,0.3% Python,40,2.5% C#,54,3.4% PHP,54,3.4% NodeJS,60,3.8% Kotlin,4,0.3% C/C++,105,6.6% 国内企业自主开发 的软件项目编程 语言总体分布情况 JAVA,1209, 76.1% 2、典型安全缺陷检出情况 排名 2022检出率及排名 2021检出率及排名 2020检出率及排名 1 输入验证(50.5%) 输入验证(41.8%) 输入验证(50.8%) 2 跨站脚本(44.2%) 跨站脚本(35.1%) 路径遍历(39.6%) 3 资源管理(43.3%) API误用(31.5%) 跨站脚本(39.5%) 4 NULL引用(43.1%) NULL引用(30.2%) 注入(37.3%) 5 注入(40.1%) 资源管理(29.9%) NULL引用(31.8%) 6 路径遍历(40.0%) 路径遍历(28.4%) 资源管理(31.6%) 7 密码管理(30.3%) 注入(26.3%) 密码管理(31.0%) 8 API误用(30.1%) 密码管理(22.8%) API误用(28.7%) 分析1589个软件项目的源代码缺陷检测结果发现,注入、密码管理、日志伪造、跨站脚本、NULL引用、配置管理、输入验证、资源管理、路径遍历、API误用等十类典型安全缺陷的总体检出率(检出率指含有某类缺陷的软件项目数占软件项目总数的比例)为74.1%,高于去年报告的59.9%,与前年的77.8%相当。每类典型缺陷近三年的检出率及排名情况如下表所示。 9 配置管理(24.8%) 配置管理(18.2%) 配置管理(28.0%) 10 日志伪造(17.6%) 日志伪造(12.5%) 日志伪造(18.2%) 从表中可以