查看原文
其他

《2021中国软件供应链安全分析报告》节选

常华Andy Andy730 2024-03-16

来源:奇安信代码安全实验室,2021中国软件供应链安全分析报告,2021年6月


2020年4月,Rubygems开源软件包生态系统被放入了数百个恶意软件包,这些恶意软件包的下载总量近10万次。例如,atlas-client是一个诱骗的诱饵程序包,用来仿冒“atlas_client”,被下载了超过2100次。


2020年5月,GitHub披露了针对Apache NetBeans IDE项目的开源软件供应链攻击Octopus Scanner,最终统计显示,有26个开源项目被植入了Octopus Scanner后门


2020年12月,全球著名的网络安全管理软件供应商SolarWinds遭遇国家级APT团伙高度复杂的供应链攻击。该攻击直接导致包括美国关键基础设施、军队、政府等在内的超过18000家客户全部受到影响,可任由攻击者完全操控


2021年2月,安全研究人员通过利用开源生态安全机制上的漏洞,成功侵入了微软、苹果、PayPal、特斯拉、优步等35家国际大型科技公司的内网,这种新颖的软件供应链攻击方式被定义为依赖混淆攻击。


2021年3月,PHP的Git服务器被攻击,攻击者向git.php.net服务器上的phpsrc存储库推送了两次恶意提交,在PHP代码中植入了一个后门,其目标是可以通过该后门获得运行PHP的网站系统的远程代码执行权限。


2021年4月,知名代码测试公司Codecov宣布其产品的bash uploader脚本被攻击者修改,导致用户在使用Codecov产品时,会向攻击者的服务器发送敏感信息从而导致攻击者可以获取用户的软件源代码等机密信息。



开源软件生态发展状况分析


据奇安信代码安全实验室监测和统计,2019年底和2020年底主流开源软件包生态系统中开源项目总量分别为2841314个和3814194个,一年间增长了34.2%;截至2020年底,主流开源软件包生态系统中平均每个开源项目有10.2个版本。可以看出,2020年开源软件生态更加繁荣,整体发展非常迅猛。


本报告中对八个典型的开源软件包生态系统进行了进一步的分析和比较,这八个包生态系统为Maven、NPM、Packagist、Pypi、Godoc、Nuget、Rubygems、Swift。


NPM包生态项目数量最多,Godoc包生态增速最快。八个典型的开源软件包生态系统中开源项目数量和增长率情况如下图所示,其中开源项目数量最多的是NPM包生态系统截至2020年底,其开源项目数量达到了1559835个;开源项目数量增速最快的是Godoc包生态系统2020年一年间的项目总量增速达到了36.2。


Maven、Nuget、NPM态系统的开源项目开发者比较“勤奋”,开源项目的平均版本数超过11个。截至2020年底,八个典型的开源软件包生态系统的开源项目数量和版本数量如下表所示。其中,Maven包生态系统平均每个开源项目有18.0个版本Nuget包生态系统平均每个开源项目有11.7个版本,NPM包生态系统平均每个开源项目有11.0个版本。



开源软件源代码安全状况分析


2020年全年,“奇安信开源项目检测计划“ 对1364个开源软件项目的源代码进行了安全检测,代码总量为124296804行,共发现安全缺陷1859129个,其中高危缺陷117738个。2020年检测的1364个开源软件项目整体缺陷密度为14.96个千行,高危缺陷密度为0.95个千行。



典型安全缺陷检出情况


输入验证、路径遍历、跨站脚本、注入、NULL引用、资源管理、密码管理、API误用、配置管理、日志伪造等十类安全缺陷是程序员在编写软件代码时经常会出现的典型安全缺陷。典型安全缺陷的检出率可以体现出软件源代码的基本安全状况(检出率指含有某类缺陷的软件项目数占软件项目总数的比例)。在2020年检测的1364个开源软件项目中,十类典型安全缺陷的总体检出率为56.3%。



61.6%的开源软件项目处于不活跃状态


我们将一年内未更新发布过版本的开源软件项目定义为不活跃项目。2020年全年,主流开源软件包生态系统中不活跃的开源软件项目数量为2347794个占比达到61.6%。


本报告中对八个典型的开源软件包生态系统进行了进一步的分析和比较,这八个包生态系统为Maven、NPM、Packagist、Pypi、Godoc、Nuget、Rubygems、Swift其中NPM的不活跃项目数量最多,达到1018533个Rubygems的不活跃项目比例最高占比达到86.5%。



13000多个开源软件一年内更新发布超过100个版本


2020年全年,主流开源软件包生态系统中,更新发布100个以上版本的开源项目有13411个。



国内企业软件开发中开源软件应用状况


2020年全年,奇安信代码安全实验室对2557个国内企业软件项目中使用开源软件的情况进行了分析,这些软件项目的应用领域涉及政府、金融、能源等重要行业。分析发现,国内企业在软件开发中普遍使用存在已知漏洞的开源软件,存在巨大的软件供应链安全风险。


经过后续的调研和访谈,我们还发现,软件项目中使用的开源软件数量大大超出了软件项目管理者和程序员自身的认知。由于开源软件之间的依赖关系错综复杂,且软件开发中依赖包的管理通常通过包管理器程序自动管理,软件开发者常常意识不到自己使用了数量巨大的开源软件,因此当某个开源软件曝出安全漏洞时,软件开发者常常“躺枪”而不自知,这中间隐含了巨大的软件供应链安全风险。



开源软件漏洞风险分析


一、近9成软件项目存在已知开源软件漏洞分析发现。在2557个国内企业软件项目中,存在已知开源软件漏洞的项目有2280个,占比高达892存在已知高危开源软件漏洞的项目有2062个,占比为80.6存在已知超危开源软件漏洞的项目有1802个,占比为70.5。


二、平均每个软件项目存在66个已知开源软件漏洞。在2557个国内企业软件项目中,共检出168604个已知开源软件漏洞(涉及到4166个唯一CVE漏洞编号),平均每个软件项目存在66个已知开源软件漏洞最多的软件项目存在1200个已知开源软件漏洞。


三、影响最广的开源软件漏洞存在于44.3%的软件项目中。从漏洞的影响度来分析,影响范围最大的开源软件漏洞为CVE20205421,影响了44.3%的软件项目。


四、15年前的开源软件漏洞仍然存在于多个软件项目中。分析发现部分软件项目中存在十几年前公开的古老开源软件漏洞最古老的漏洞是2005年11月公开的CVE20053510,仍然存在于31个项目中。

继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存