版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、概述当前,软件供应链安全依然是网络安全中备受关注的方向,基于自研产品的技术能力和第一手实测数据,奇安信代码安全实验室继续推出《2024
中国软件供应链安全分析报告》,即本系列年度分析报告的第四期。软件由自主开发的代码与开源代码等第三方代码集成后,形成混源代码,然后通过编译、连接等构建过程形成软件产品,交付给用户使用。在这一软件供应链模型中,每个阶段中的代码或工件都可能引入安全问题,从而导致最终软件供应链安全事件的爆发。本期报告仍以此模型为基础,分析各阶段的代码安全问题对软件供应链安全性的潜在威胁,分析内容分别在后续的国内企业自主开发的源代码安全状况、开源软件生态发展与安全状况、国内企业软件开发中开源软件应用状况、典型软件供应链安全风险实例分析等章节中呈现。在此基础上,本报告还总结了趋势和变化。与往年报告相比,本期报告在开源软件生态发展与安全部分新增了对
NPM
生态中恶意开源软件分析的内容;在典型软件供应链安全风险实例部分,通过实例再次验证了因软件供应链的复杂性,“外来”组件的“老漏洞”发挥“0day
漏洞”攻击作用的状况。感兴趣的读者可重点关注。1、软件供应链安全攻击手段依然花样百出过去的一年中,软件供应链安全攻击事件没有丝毫减少的趋势,1攻击手段依然花样百出。2023
年
10
月,安全人员分析发现了一种新型供应链攻击。整个9
月,某黑客组织都在使用域名仿冒(Typosquatting)和星标劫持(Starjacking)技术向开源包管理器
PyPi
植入一系列恶意包,并引诱开发人员使用,而这些恶意包与
Telegram、AWS
和阿里云等热门通信和电子商务平台所使用的流行软件包高度对应,被认为是故意攻击这些平台的特定用户。攻击者可以攻陷平台用户设备,窃取金融和个人信息、登录凭据等敏感数据,可能影响数百万人。2023
年
12
月,AI
安全公司
Lasso
Security
的研究人员,在
GitHub和
Hugging
Face
平台上发现了
1500
多个不安全的
API
访问令牌,可用来访问
772
个组织机构的仓库,包括谷歌、微软、VMware
等公司。其中部分令牌可帮助攻击者获得
Meta
公司
Bloom、Meta-Liama、Pythia
等大语言模型(LLM)仓库的完全读写权限,攻击者可利用该漏洞实施
LLM
训练数据投毒、模型和数据集窃取等恶意行为,从而将使用这些仓库把
LLM
能力集成到应用和运营中的组织置于供应链风险中,危及数百万下游用户的安全。2024
年
2
月,Cycode
研究团队披露了谷歌重要的开源构建和测试工具
Bazel
的一个供应链安全漏洞的详细信息。Bazel
所依赖的CI\CD
平台
GitHub
Actions
的工作流程中存在命令注入漏洞,可导致攻击者将恶意代码植入
Bazel
代码库、创建后门并影响
Bazel
用户的生产环境。该漏洞可能影响数百万个依赖于
Bazel
的项目和平台,包括
Kubernetes、Angular、Uber、LinkedIn、Dababricks、Dropbox、Nvidia2和谷歌自身等。2024
年
3
月初,安全研究人员发现,机器人平台
Top.gg
Discord托管在
GitHub
上的源代码遭受到大规模严重供应链投毒攻击,该平台拥有超
17
万成员。分析发现,攻击者劫持了
Top.gg
的
GitHub
账户,上传了至少
14
个伪造的恶意
Python
流行软件包,并通过这些恶意软件窃取用户
Chrome、Edge
等浏览器中的敏感数据,包括浏览历史记录、信用卡详细信息等,并通过出售信息实现盈利。攻击者还试图窃取
Telegram
会话数据以侵犯用户隐私。这些攻击同时也影响到了大量与平台相关的开发人员。2024
年
3
月底,某开发人员在调查
SSH
性能问题时发现了涉及XZ
Utilѕ工具库的供应链攻击,溯源发现
SSH
使用的上游
liblzma
库被植入了恶意后门漏洞(CVE-2024-3094),满足一定条件时会解密流量里的
C2
命令并执行,从而使攻击者能够破坏
SSHD
身份验证并远程获得对整个系统的未经授权访问。XZ
是一种由
Tukaani
项目开发的高压缩比数据压缩格式,几乎应用于每个
Linux
发行版中,包括社区项目和商业产品发行版,liblzma
是一个用于处理
XZ
压缩格式的开源软件库。庆幸的是,该漏洞主要影响的
XZ
5.6.0
和
5.6.1
版本尚未被Linux
发行版广泛集成,而且大部分是在预发行版本中。2024
年
5
月,攻击者通过与英国国防部核心网络链接的一个外部系统,即由英国国防部的一家提供薪资处理服务的外部承包商维护的薪资处理系统,访问了部分军队支付网络,造成严重的信息泄露。据统计,攻击者访问了超过
22.5
万名英国陆军、海军和皇家空军现3役军人、退役军人和预备役军人的姓名、银行账号详情等个人信息。第三方承包商未能充分的保护系统是这次事件的主要诱因,而这一事件是在不到一年的时间内发生的第二起因外部承包商而导致的英国军队数据遭泄露事件。OpenSSH
可以在
CS
架构中提供网络安全信道,被众多企业用于远程服务器管理和数据安全通信。2024
年
7
月初,网络安全公司Qualys
发
现
,
OpenSSH
服
务
器
进
程
存
在
“regreSSHion”
漏
洞(CVE-2024-6387),攻击者可利用其以
root
权限在基于
glibc
的Linux
系统上实现未认证的远程代码执行,从而实施系统完全接管、恶意程序安装和后门创建等攻击行为,严重程度堪比
Log4Shell。具不完全统计,互联网上有
1400
多万台易受攻击的
OpenSSH
实例,仅Qualys
公司自身的客户中就有约
70
万个暴露在互联网上的系统可能易受攻击。2、国内企业软件供应链安全状况有所改善奇安信代码安全实验室通过数据分析发现,与以往历年相比,2023
年,国内企业自主开发软件的源代码高危缺陷密度明显下降,并且因使用开源软件而引入安全风险的状况有所改善。尽管如此,软件供应链安全风险的管控依然值得持续关注,需要更多的投入。1)国内企业自主开发软件的源代码高危缺陷密度明显下降通过对
2023
年国内企业自主开发源代码的分析发现,虽然整体缺陷密度达到
12.76
个/千行,高于以往各年,但高危缺陷的密度为40.52
个/千行,比之前三年有明显的下降;此外,NULL
引用类缺陷的检出率为
25.7%,较往年也有较大降低。上述趋势的出现,应该在很大程度上得益于以下措施的采取:软件开发过程中,研发企业对重点缺陷逐渐重视,针对重点问题的安全编码规范进一步普及,并且代码审计工具的使用持续推广。2)国内企业因使用开源软件而引入安全风险的状况有所改善2023
年,奇安信代码安全实验室对
1763
个国内企业软件项目中使用开源软件的情况进行分析发现,平均每个项目使用了
166
个开源软件,数量再创新高。但另一方面,平均每个项目存在
83
个已知开源软件漏洞,含有容易利用的开源软件漏洞的项目占比为
68.1%,以上两项指标与去年相比降幅较大;此外,存在已知开源软件漏洞、高危漏洞、超危漏洞的项目占比分别为
88.0%、81.0%和
71.9%,与去年相比均有所下降。其他方面,如项目中存在古老开源软件漏洞、老旧开源软件版本使用、同一开源软件各版本使用混乱等方面的状况基本与之前历年持平。总体而言,国内企业使用开源软件的安全状况有所好转。虽然从趋势来看,上述的软件供应链安全问题有一定程度的缓解,但另一方面,这些指标数据仍处于高位,软件供应链的安全问题并没有得到根本性的改变。值得高兴的是,越来越多的机构和企业开始关注并实施软件供应链的安全,一些机构和企业基于规范的流程和实践,落地了相应的解决方案和检测平台。但就目前的形势而言,这些经验、方法和工具还需要进一步的持续完善、推广和应用。5二、国内企业自主开发源代码安全状况源代码的安全是软件供应链安全的基础。2023
年全年,奇安信代码安全实验室对
1858
个国内企业自主开发的软件项目的源代码进行了安全缺陷检测,检测的代码总量为
408909802
行,共发现安全缺陷
5216473
个,其中高危缺陷
211355
个,整体缺陷密度为
12.76
个/千行,高危缺陷密度为
0.52
个/千行。与以往历年相比,整体缺陷密度升高较快,但高危缺陷密度有较大幅度的降低。这应该与开发者对高危缺陷类型的重点防范及相应安全编码规范的使用有关。1、编程语言分布情况在
1858
个国内企业自主开发的软件项目中,共使用了
17
种编程语言,使用项目数排名前
3
的分别为
Java、C/C++和
Python,对应的软件项目数量分别为
1258
个、246
个和
118
个,Python
取代
NodeJS6再次回到第三的位置。Java
语言项目占比达
67.7%,但低于去年的76.1%。国内企业在进行软件开发时,Java
语言仍然最受欢迎。编程语言的分布情况如下图所示。2、典型安全缺陷检出情况对
1858
个软件项目的源代码缺陷检测结果进行分析和统计发现,注入、密码管理、日志伪造、跨站脚本、NULL
引用、配置管理、输入验证、资源管理、路径遍历、API
误用等十类典型安全缺陷的总体检出率(即含有某类缺陷的软件项目数占项目总数的比例)为
71.1%,与去年的
74.1%基本持平。每类典型缺陷历年的检出率及对比情况如下图所示。7可以看出,输入验证类和跨站脚本类缺陷的检出率较高,依然排在前两位,特别是输入验证类缺陷,检出率依旧高达
49%;同时,配置管理类和日志伪造类缺陷的检出率依然排在最后两位;与过去历年相比,NULL
引用类缺陷的检出率有较大下降,这可能与研发人员对此类问题的特别关注有关;其他类型缺陷的检出率在正常的波动范围内。国内企业在自主开发软件时,应继续关注针对这些缺陷类型的代码修复问题。三、开源软件生态发展与安全状况开源软件在现代软件开发中持续发挥着基础支持的作用。本期报告除了延续开源软件生态发展状况、开源软件源代码安全状况、开源软件公开报告漏洞状况、开源软件活跃度状况、关键基础开源软件分析五部分内容外,在对
2023
年开源软件生态发展与安全状况进行综合分析时,还增加了针对
NPM
生态中恶意开源软件的分析。81、开源软件生态发展状况分析根据奇安信代码安全实验室的监测和统计,2022
年底和
2023
年底,主流开源软件包生态系统中开源项目总量分别为
5499977
和7959049,一年间增长了
44.7%,增速迅猛;截至
2023
年底,主流开源软件包生态系统中平均每个开源项目有
11.3
个版本,与前几年基本持平。2023
年开源软件生态持续繁荣。对
Maven、NPM、Packagist、Pypi、Godoc、Nuget、Rubygems、Swift
等八个典型开源软件包生态系统的具体分析如下:NPM
包生态开源项目数量和增速均位列第一。与前三年相比,NPM超越
Godoc,成为开源项目数增速最快的包生态系统。八个典型的开源软件包生态系统中开源项目数量和增长率情况如下图所示,其中开源项目数量最多的是
NPM
包生态系统,截至
2023
年底,其开源项目数量达到了
4170641,依然远高于其他生态;开源项目数量增速最快的也是
NPM,2023
年一年间的项目总量增速高达
79.1%,Godoc
的项目数增长也很快,达
58.1%。9Maven
包生态系统的开源项目开发者依然“最勤奋”,开源项目的平均版本数超过
23
个。截至
2023
年底,八个典型的开源软件包生态系统的开源项目数量和版本数量如下表所示。其中,Maven
包生态系统平均每个开源项目有高达
23.6
个版本,比去年的
21.9
又有增加;NPM
和
Godoc
的开源项目平均版本数有所降低,分别从
13.4
和
9.4
降至
10.2
和
8.8。序号
包生态系统2023
年项目数7272282023
年版本数17191582426928065380809平均版本数23.612345678MavenNPM417064142193510.2PackagistPypi12.8536523554033010.3Godoc80906171078328.8Nuget640966809115112.6RubygemsSwift1786939488614236316665248.07.0102、开源软件源代码安全状况分析2023
年全年,“奇安信开源项目检测计划”对
2248
个开源软件项目的源代码进行了安全检测,代码总量为
309522947
行,共发现安全缺陷
5108161
个,其中高危缺陷
355721
个,整体缺陷密度为
16.50个/千行,高危缺陷密度为
1.15
个/千行。两项缺陷密度指标较去年均有所下降。(1)编程语言分布情况2023
年检测的
2248
个开源项目中,共涉及
10
种编程语言,分别是
Java、C/C++、JavaScript、Python、Groovy、C#、Lua、Kotlin、Ruby
和
Go,编程语言的分布情况如下图所示。被测项目中,使用
Java、C/C++、JavaScript
和
Python
四种语言开发的开源软件约占
3/4。11(2)典型安全缺陷检出情况对
2248
个开源软件项目的缺陷检测结果分析发现,注入、密码管理、日志伪造、跨站脚本、NULL
引用、配置管理、输入验证、资源管理、路径遍历、API
误用等十类典型安全缺陷的总体检出率为76.7%,与前两年相比,有小幅升高。每类典型缺陷历年的检出率及对比情况如下图所示。12可以看出,除了密码管理类缺陷的检出率较往年,特别是去年有较大幅度的提升外,其他均在正常的波动范围内。从历年数据来看,输入验证、路径遍历和资源管理三类缺陷的检出率较高,均在
30%左右或以上;日志伪造、跨站脚本和配置管理三类缺陷检出率较低,均在
20%左右或以下。3、开源软件公开报告漏洞状况分析根据奇安信代码安全实验室监测与统计,截至
2023
年底,CVE/NVD、CNNVD、CNVD
等公开漏洞库中共收录开源软件相关漏洞
64938
个,其中有
7107
个漏洞为
2023
年新增。(1)大型开源项目漏洞总数及年度增长
TOP20截至
2023
年底,历史漏洞总数排名前
20
的大型开源项目信息如下表所示。Linux
Kernel、Chromium
Chrome)和
Mozilla
Firefox13一如既往,依然排名前
3。历史漏洞总数序号大型开源项目Linux
KernelChromium主页地址/159832/3369(Google
Chrome)Mozilla
FirefoxThunderbirdMySQL345678/en-US/firefox//zh-CN//263715461430125611791155linux-aws/linux-gcp/linux-azure/zh-cn//en-US/firefox/enterprise/9Firefox
ESR10971088Adobe
Flash
Player
/products/flashplay10pluginer/end-of-life.html11
GitLab///95176475069769666312
SeaMonkey13
PHP14
WebKitGTK15
OpenJDK16
Wireshark///1417
ImageMagick18
Jenkins/index.phphttps://www.jenkins.io/65857252719
Moodle/XenProject20/515(Hypervisor)2023
年一年间,公开报告漏洞数量增长排名前
20
的大型开源项目信息如下表所示,Linux
Kernel
依然是一年来增加漏洞最多的项目,达到
607
个。2023年漏洞增量序号大型开源项目Linux
KernelChromium
(GoogleChrome)主页地址1/60723/275186/en-US/firefox/Mozilla
Firefox4567GitLab///165142141138linux-awslinux-gcplinux-azure/zh-cn//en-US/firefox/enterprise/89Firefox
ESRThunderbird120119/zh-CN/1510
XWiki//https://www.jenkins.io//http://gpac.io/1119792858479625811
Android12
Jenkins13
MySQL14
gpac15
Mattermost16
phpMyFAQ17
Discourse
(.org)Electron
-/https://www.phpmyfaq.de/Cross-platform1858desktopapplication
shell19
pimcore//574920
WebKitGTK(2)主流开源软件包生态系统漏洞总数及年度增长
TOP20截至
2023
年底,主流开源软件包生态系统中历史漏洞总数排名前
20
的开源软件信息如下表所示。排名前两位的依然是
TensorFlow和
Chakra
Core。序号开源软件所属包生态系统
历史漏洞总数12TensorFlowChakra
CorePypi430347Nuget16Electron
-
Cross-platformdesktop
application
shellElectron
-
Cross-platformdesktop
application
shellJenkins34NPM314252Maven56789MavenMaven24620016916315912812212112011310710610298Apache
TomcatXWikiMavenTYPO3
CMSPackagistConanOpenSSL10
Ruby
on
Rails11
Magento
Core12
FFmpeg-iOS13
phpMyAdmin14
OpenSSLRubyPackagistSwiftPackagistSwift15
DjangoPypi16
Dolibarr
ERP
&
CRM17
keycloakPackagistMaven18
Drupal
(core)19
phpMyFAQPackagistPackagistPypi9420
Plone932023
年一年间,主流开源软件包生态系统中公开报告漏洞数量增长排名前
20
的开源软件信息如下表所示。17序号开源软件所属包生态系统
2023
年漏洞增量123XWikiMavenGodoc11169MattermostphpMyFAQPackagist62Electron
-
Cross-platformdesktop
application
shellpimcore4NPM5856789PackagistMavenPypi57292828272322jfinalincubator-airflowGo
programming
language.NET
RuntimeGodocNugetConanConda10
libTIFF11
mlflowElectron
-
Cross-platformdesktop
application
shell12Maven2213
mlflowPypiMaven22222118171614
XWiki
Platform15
TensorFlow16
keycloak17
JenkinsPypiMavenMaven18
PrestaShopPackagist1819
cryptographyConda151520
aheinze/cockpitPackagist4、开源软件活跃度状况分析本年度报告依然把活跃度作为衡量开源软件安全性的一个维度。太过活跃的开源软件,其版本更新发布频率过高,会增加使用者运维的成本和安全风险;不活跃的开源软件,一旦出现安全漏洞,难以得到及时的修复。因此,两者都会给运维带来一些风险。(1)68.7%的开源软件项目处于不活跃状态,比例下降报告中依然将超过一年未更新发布版本的开源软件项目定义为不活跃项目。2023
年全年,主流开源软件包生态系统中不活跃的开源软件项目数量为
5469685
个,占比为
68.7%,低于去年的
72.1%,与前年的
69.9%基本持平。对八个典型的开源软件包生态系统进行分析和比较发现,NPM
从去年的
72.7%大幅度下降为
60.4%,Nuget
从去年的
54.3%迅速上升至79.0%。除此之外,其他包生态系统中不活跃项目的占比均与去年持平。NPM
的不活跃项目数量依然最多,达
2520717
个,Rubygems
的不活跃项目占比依然最高,达
90.7%。具体数据见下表。序号
包生态系统项目总数不活跃项目数不活跃项目比例12MavenNPM72722850436269.4%4170641252071760.4%19345678PackagistPypi421935536523809061640966178693948863229153584886092645062131621448375576.5%66.8%75.3%79.0%90.7%88.3%GodocNugetRubygemsSwift(2)版本频繁更新的项目较去年增长
21.6%2023
年全年,主流开源软件包生态系统中,更新发布
100
个以上版本的开源项目有
27234
个,较去年增长
21.6%。八个典型的开源软件包生态系统中,一年内更新发布超过
100
个版本的项目数量见下表。一年内发布超过
100
个排名包生态系统NPM对应的开发语言JavascriptJava版本的项目数量1234567816229Maven3192274621561495952Nuget.NETGodocGoPypiPythonPHPPackagistRubygemsSwiftRuby275Swift18205、关键基础开源软件分析一般而言,如果开源软件出现漏洞后,造成的放大效应越大,影响范围越广,那么这个软件就应当越重要。因此,本期报告继续分析“关键基础开源软件”(被多于
1000
个其他开源软件直接依赖的一类开源软件)的安全状况。这类开源软件一旦出现漏洞,影响范围巨大且消除困难,其安全性应得到更多关注。Apache
Log4j2
就是一款关键基础开源软件,截止
2023
年底,其直接依赖数为
7919。(1)主流开源生态关键基础开源软件
TOP50分析发现,截止
2023
年底,Maven、NPM、Nuget、Pypi、Packagist、Rubygems
等主流开源生态中的关键基础开源软件共有
1709
款,较2022
年底上涨
36.3%,直接依赖数排名
TOP50
的软件如下表所示。开源软件
junit:junit
的直接依赖数已连续三年位居榜首。ApacheLog4j2
仅排在第
139
名,未进入
TOP50,也就是说,如果
TOP50
表中的任何一款开源软件曝出严重漏洞,其影响都可能会大过“Log4Shell”漏洞。排名开源软件所属包生态系统Maven直接依赖数997641234junit:junitrakeRubygemsMaven81212org.scala-lang:scala-librarybundler75893Rubygems70327215tiktokapi-srcNPMNPM640216345662980614266058959480566405549644720423374147139894388383776936717353826tiktok-src7Newtonsoft.JsonNugetNPM8tslib9rspecRubygemsPypi1011121314151617181920numpyrequestsPypiorg.slf4j:slf4j-apiMavenNPMchalkcommanderNPMlodashNPMpandasPypiorg.jetbrains.kotlin:kotlin-stdlibMavenPackagistPypiilluminate/supportpytestguzzlehttp/guzzlePackagistorg.jetbrains.kotlin:kotlin-stdlib21Maven34507-commonaxios222324NPMNPMNPM341383349430475expressreact222526272829inquirerNPMMavenMavenPypiNPM2890127293270962650125831com.google.guava:guavach.qos.logback:logback-classicmatplotlibrequestorg.jetbrains.kotlin:kotlin-stdlib-jdk830Maven25826313233org.mockito:mockito-corefs-extraMavenNPM243972413323994scipyPypicom.fasterxml.jackson.core:jackson-databind34Maven23581353637383940414243mons:commons-lang3typescriptMavenNPM218172093920849203142030618670180641798717202commons-io:commons-ioreact-domMavenNPMjectlombok:lomboklaravel/frameworkorg.clojure:clojureclickMavenPackagistMavenPypitqdmPypi23444546pytest-covPypiNPM165431579615391momentcom.google.code.gson:gsonMicrosoft.Extensions.DependencyInjection.AbstractionspryMaven47NugeubygemsPypi149781458814556odooorg.assertj:assertj-coreMaven(2)关键基础开源软件的漏洞披露情况未见改善分析发现,历年来,有较大比例的关键基础开源软件从未公开披露过漏洞,造成这种现象的原因主要有两个,一方面,有的关键基础开源软件,特别是有的开源社区中的软件,漏洞虽然已被修复了,但没有记录和公开;另一方面,维护和安全研究等相关人员对一些关键基础开源软件安全性的关注程度不够,对它们漏洞挖掘的研究还不多。2023
年,对
1709
款关键基础开源软件分析发现,有
1313
款从未公开披露过漏洞,占比达
76.8%,呈现出逐年升高的趋势,如下图所示。但另一方面,关键基础开源软件中也不乏漏洞披露流程非常正规的优秀开源项目。24(3)关键基础开源软件的整体运维风险有所改观本期报告依然从“版本更新时间”和“周提交频率”两个维度来分析判断关键基础开源软件的运维状况。首先,关键基础开源软件新版本发布的活跃度有较大提升。截止2023
年底,半年内没有发布过新版本的关键基础开源软件有
453
款,占比为
26.5%,较去年的
41.5%有较大的下降。其次,关键基础开源软件提交的积极性有所降低。去年一年内,周平均提交次数小于
5
和小于
1
的关键基础开源软件数量分别为
1245和
916,占比分别为
72.8%、53.6%,两项指标较前两年持续升高。此外,在
TOP50
的关键基础开源软件中,有
34
款软件明确已获得大厂或者基金会支持,比前两年的
23
和
24
款有明显增加;Github贡献者数量小于
100
的有
8
款,比去年和前年减少
1
款。256、NPM
生态中恶意开源软件分析分析发现,NPM
包生态系统较容易受到恶意代码投毒攻击。2023年,奇安信代码安全实验室通过开源仓库监控平台,共检测出该包生态系统中的
381
个恶意开源组件。(1)超
95%的恶意开源组件以窃取敏感信息为目标其中,大部分恶意组件的攻击集中在下载安装阶段,恶意行为包括用户敏感信息窃取、主机敏感信息窃取、Git
账户信息窃取、主机失陷攻击、恶意域名访问,各类恶意开源组件的数量和占比如下图所示。可以看出,95.3%的恶意组件以窃取敏感信息为最终目标,这些敏感信息包括用户名、密码、DNS、服务器
IP、Github
配置等。26(2)典型恶意开源组件及恶意行为剖析针对各种恶意行为的典型恶意开源组件如下表所示。恶意行为组件版本slotbooking-ui2.18.04.45.01.1.2@sber-ufs-sbert/iconsbanca-movil-ionic-v4dlw.scbase.staticsitefio-registrations主机敏感信息窃取9999.10.92.0.0npm_package_devdependencies_sassupdate-material-outline-gaplifi-contracts2.69.53.7.141.0.0用户敏感信息窃取@testvijaysimha/gd-utilunit-testing-controllersqr-emvco1.0.01.0.31.1.2vader-pack1.0.3主机失陷攻击
doneidadeuna-lib-tl-react-native-biocatch1.0.71.1.2capacitor-selphi-plugin@zscaler/ec-domain1.5.55.0.0恶意域名访问
backbone.picky1.0.0testepocdep1.1.1Git
账户信息窃取@gusmano/reext0.0.249本节以恶意开源组件
slotbooking-ui
2.18.0
为例,介绍其进行主机敏感信息窃取的过程。使用者在安装该组件时,它会运行脚本来窃取服务器信息,具体步骤如下:271)安装过程中,该恶意组件通过
package.json
里定义的命令,执行预先编写好的
index.js
脚本;2
)
脚
本
获
取
服
务
器
内
环
境
变
量
,
以
及
/etc/hosts
和/etc/resolv.conf
的文件内容,如下图所示;3)文件内容通过
get_file()函数进行
base64
编码,以便于进行传输;4)该恶意组件将收集到的信息通过
post
请求发送给攻击者,如下图所示。28四、国内企业软件开发中开源软件应用状况2023
年,奇安信代码安全实验室对
1763
个国内企业软件项目中使用开源软件的情况进行了分析,包括其中开源软件的使用,以及由此所带来的漏洞和许可证风险等安全问题的情况。291、开源软件总体使用情况分析(1)平均每个软件项目使用
166
个开源软件,再创新高与往年一样,在被分析的
1763
个国内企业软件项目中,全部使用了开源软件,使用率为
100%。平均每个项目使用了
166
个开源软件,此项数据再创新高。本次分析的软件项目中使用开源软件最多的数量为
6168
个,使用开源软件排名前
10
的项目的情况如下图所示。30(2)最流行的开源软件被
37.2%的软件项目使用在被分析的
1763
个国内企业软件项目中,使用最多的开源软件为
SLF4J
API
Module,被
656
个项目所使用,占比为
37.2%,低于去年
43.6%的水平。被使用最多的前
10
名开源软件如下表所示。开源软件名称使用的项目数
被使用率SLF4J
API
Module65662762559157957155354537.2%35.6%35.5%33.5%32.8%32.4%31.4%30.9%Commons
Io
:
Commons
IoApache
Commons
CodecFasterxml
Jackson
Core
:
Jackson
DatabindFasterxml
Jackson
Core
:
Jackson
CoreFasterxml
Jackson
Core
:
Jackson
AnnotationsGoogle
Guava
:
GuavaApache
Commons
:
Commons
Lang331fastjson1-compatible53251830.2%29.4%Apache
Commons
Logging2、开源软件漏洞风险分析(1)存在容易利用的开源软件漏洞的项目占比大幅下降统计发现,在被分析的
1763
个国内企业软件项目中,存在已知开源软件漏洞的项目有
1551
个,占比为
88.0%;存在已知高危开源软件漏洞的项目有
1428
个,占比为
81.0%;存在已知超危开源软件漏洞的项目有
1268
个,占比为
71.9%。这三个比例均略低于去年水平,与2021
和
2020
年基本持平。综合漏洞的
POC/EXP
情况以及
CVSS
可利用性指标等因素,我们将漏洞的利用难度分为容易、一般、困难,容易利用的漏洞风险极高。在被分析的
1763
个项目中,存在容易利用的漏洞的项目有
1200
个,占比为
68.1%,较前两年降幅较大。历年存在各类开源软件漏洞的软件项目的占比情况如下图所示。32(2)平均每个项目包含的已知开源软件漏洞数明显回落在
1763
个国内企业软件项目中,共检出
146568
个已知开源软件漏洞(涉及到
13135
个唯一
CVE
漏洞编号),平均每个软件项目存在83
个已知开源软件漏洞,与去年的
110
个相比,降幅明显,但仍高于之前两年的水平。33本次分析的软件项目中,引入已知开源软件漏洞最多的数量为1929
个。存在已知开源软件漏洞数量排名前
10
的项目的情况如下图所示。34(3)影响最广的开源软件漏洞的影响范围有所减小从漏洞的影响度来分析,影响范围最大的开源软件漏洞为CVE-2023-35116,存在于
33.4%的软件项目中,比去年最高的
41.9%有较大减小,说明本年度检测出的开源软件漏洞的影响范围较为分散。2023
年影响度排名前
10
的开源软件漏洞如下表所示。影响项目数量漏洞名称FasterXML
jackson-databind
代码问题漏洞CVE
编号影响度CVE-2023-3511658833.4%Google
Guava
安全漏洞CVE-2023-2976CVE-2024-22243CVE-2024-22262CVE-2024-2225950547047047028.6%26.7%26.7%26.7%Spring
Framework
安全漏洞Spring
Framework
安全漏洞Spring
Framework
安全漏洞FasterXML
jackson-databind
代码问题漏洞CVE-2022-4200346026.1%Apache
HTTP/2
资源管理错误漏洞Vmware
Spring
Framework
代码问题漏洞Spring
Framework
安全漏洞FasterXML
jackson-databind
代码问题漏洞CVE-2023-44487CVE-2016-1000027CVE-2023-2086146046045826.1%26.1%26.0%CVE-2022-4200445625.9%容易利用的漏洞更易被用来发起攻击,风险极高。影响度排名前10
的容易利用的开源软件漏洞情况如下表所示。35影响项目数量容易利用的漏洞名称Vmware
Spring
Framework
代码问题漏洞jQuery
跨站脚本漏洞CVE
编号影响度26.1%23.4%23.4%22.7%21.8%21.4%19.6%19.5%18.7%17.1%CVE-2016-1000027CVE-2020-11022CVE-2020-11023CVE-2019-11358CVE-2022-22965CVE-2015-9251CVE-2021-22096CVE-2021-22060CVE-2021-3711CVE-2020-13956460412412401384378345344329302jQuery
跨站脚本漏洞jQuery
跨站脚本漏洞Spring
Framework
代码注入漏洞jQuery
跨站脚本漏洞Vmware
Spring
Framework
安全漏洞Vmware
Spring
Framework
安全漏洞OpenSSL
缓冲区错误漏洞Apache
HttpClient
安全漏洞(4)20
多年前的开源软件漏洞仍然存在于多个软件项目中分析发现,与往年报告结果一样,部分软件项目中仍然存在很久之前公开的古老开源软件漏洞,其中,最古老的漏洞是
2001
年
7
月12
日公开的
CVE-2001-1267,距今已
23
年,这一时间比去年报告中的最古老开源软件漏洞的发布时间还早一年。部分古老开源软件漏洞的影响情况如下表所示,它们的发布时间距今都已超过
20
年。影响项目数量漏洞名称CVE
编号发布日期2001-07-12GNU
Tar
敌对目标路径漏洞GZip
超长文件名缓冲区溢出漏洞CVE-2001-12671CVE-2001-1228
2001-11-113682002-03-1zlib
安全漏洞CVE-2002-0059CVE-2002-1216CVE-2002-1363CVE-2003-0107CVE-2003-0367CVE-2004-0421CVE-2004-0603CVE-2004-05978125121252002-10-2GNU
tar
任意文件覆盖漏洞8Portable
Network
Graphics
任意脚本远程执行漏洞2002-12-262003-02-2zlib
安全漏洞32003-07-0GNU
Gzip
输入验证错误漏洞2LibPNG
不合法
PNG
越界访问拒绝服务漏洞2004-04-302004-06-2GNU
gzexe
临时文件命令执行漏洞4Microsoft
MSN
Messenger
PNG
图片解析远程代码执行漏洞2004-07-123、开源软件许可协议风险分析(1)最流行的开源许可协议在
46.9%的项目中使用在
1763
个被分析的国内企业软件项目中,共发现
545
个开源许37可协议。涉及项目数最多的协议与前两年一样,依然是
Apache
License2.0,在
827
个项目中使用,占比为
46.9%。涉及软件项目数排名前
10的许可协议如下表所示。开源许可协议Apache
License
2.0涉及项目数827所占比例46.9%39.0%13.2%7.5%MIT
License688BSD
3-Clause
"New"
or
"Revised"
LicenseBSD
2-Clause
"Simplified"
LicenseGNU
General
Public
License
v2.0
onlyGNU
General
Public
License
v1.0
or
laterPublic
Domain2331321317.4%1066.0%989184815.6%5.2%4.8%4.6%GNU
General
Public
License
v3.0
onlyISC
LicenseGNU
General
Public
License
v2.0
or
later(2)超
1/5
的项目使用了含有超、高危许可协议的开源软件有些类型的开源许可协议中包含了一些限制性条款,在使用过程中一旦违反这些条款,可能对企业的商业利益和声誉造成严重的损害。这些限制性条款包括如:“禁止本软件及其衍生品用于商业目的”、“禁止在未支付费用和版税的情况下将该软件用于非公开、非商业用途”、“软件发布时必须公开软件的源代码”等。奇安信代码安全实验室将限制性较为苛刻的一类协议定义为超38危许可协议,将限制性较大而未达到超危水平的一类协议定义为高危许可协议。在
2023
年分析的
1763
个国内企业软件项目中,存在超危许可协议的项目
124
个,占比
7.0%;存在高危许可协议的项目
256
个,占比
14.5%。含超危和高危许可协议的项目合计占比约为
21.5%,超过1/5,高于去年约
1/6
的占比。本次分析的软件项目中使用到的超危许可协议如下表所示。涉及项目数超危开源许可协议简称GNU
General
Public
License
v3.0
onlyGNU
General
Public
License
v3.0
or
laterGNU
Affero
General
Public
License
v3.0
onlyGNU
Lesser
General
Public
License
v3.0
onlyGPL-3.0-onlyGPL-3.0-or-laterAGPL-3.0-onlyLGPL-3.0-only9144372011GNU
Lesser
General
Public
License
v3.0
or
later
LGPL-3.0-or-laterCreative
Commons
Attribution
Non
CommercialCC-BY-NC-SA-2.5Share
Alike
2.5
Generic87GNU
Free
Documentation
License
v1.2
onlyGFDL-1.2-only涉及软件项目数排名前
10
的高危许可协议如下表所示。涉及项目数高危开源许可协议简称GNU
General
Public
License
v2.0
onlyGNU
General
Public
License
v2.0
or
laterGNU
Lesser
General
Public
License
v2.1
onlyGPL-2.0-onlyGPL-2.0-or-laterLGPL-2.1-only1318176GNU
Library
General
Public
License
v2
or
later
LGPL-2.0-or-later6539GNU
Lesser
General
Public
License
v2.1
or
later
LGPL-2.1-or-later59585631Mozilla
Public
License
1.1MPL-1.1EPL-1.0Eclipse
Public
License
1.0GNU
Library
General
Public
License
v2
onlyCreative
Commons
Attribution
Share
Alike
3.0UnportedLGPL-2.0-onlyCC-BY-SA-3.02310Creative
Commons
Attribution
Non
CommercialShare
Alike
3.0
UnportedCC-BY-NC-SA-3.04、开源软件运维风险分析开源软件运维风险复杂多样,本期报告依然从老旧开源软件的使用和开源软件多个版本混乱使用的角度进行分析。(1)多个二三十年前的老旧开源软件版本仍在使用分析发现,与前几年报告数据一致,许多软件项目中仍然在使用老旧的开源软件版本,有的版本已经超过
30
年,存在极大的运维风险。被使用的老旧开源软件版本中,最早的一款是
1993
年
3
月
3
日发布的
byacc
1.9,已经发布
31
年。按老旧程度排名前
10
的开源软件如下表所示。开源软件名称byaccchecker版本号1.9版本发布日期1993-03-031999-03-09涉及项目的数量110.8-2140journalGNU
tarsdc1-41.131999-03-091999-09-052000-08-182000-08-282000-11-152001-01-112001-02-052001-03-26112141311.0.8beta-82.24Getopt-LongGNU
bcURI1.061.10zlib1.1.3libpng1.0.9(2)开源软件各版本使用依然混乱分析发现,与往年一样,开源软件版本使用混乱的状况依然非常严重,并非使用的都是最新版本。Spring
Framework:
Spring
Core
是被使用版本最多的开源软件,有
169
个版本在被使用。按照被使用版本的数量排序,排名前
10
的开源软件情况如下表所示。开源软件名称Springframework:
Spring
CoreSpringframework:
Spring
BeansSpringframework:
Spring
ContextSpring
AOP被使用的版本数量169165163161159Springframework:
Spring
WebSpring
Expression
Language
(SpEL)Spring
Web
MVC15414941Spring
Transaction147146136Spring
JDBCSpringframework:
Spring
Context
Support五、典型软件供应链安全风险实例分析1、多款主流操作系统供应链攻击实例分析Ubuntu
是一款被广泛使用的
Linux
操作系统发行版,具有多种用途,可用作个人计算机的操作系统,提供办公、媒体播放、游戏等的图形用户界面;同时它也是开发人员的首选操作系统之一,因为它支持
Python、Java、C++等多种编程语言,还提供了
GCC
编译器和版本控制系统等开发库和工具。使用者通常使用
apt
install
命令在Ubuntu
上安装
MiniDLNA,以获得媒体播放服务。MiniDLNA
是一款兼容
DLNA/UPnP-AV
客户端的开源媒体服务软件,支持音乐、图片、视频等媒体文件的播放,可帮助用户通过
DLNA
兼容的智能电视、音响等设备,访问和播放存储在计算机上的多媒体文件。MiniDLNA
被广泛部署在
Linux
服务器上,同时也广泛应用于路由器、NAS
等嵌入式设备上。CVE-2023-33476
是
MiniDLNA
的一个越界写类型的超危历史漏洞,由于
MiniDLNA
在处理采用分块传输编码的
HTTP
请求时存在逻辑缺陷,攻击者可通过伪造较大的分块长度,触发后续拷贝时出现越界写问题。利用该漏洞,远程未授权的攻击者可实现任意代码执行攻击。该漏洞42影响
MiniDLNA
的
1.1.15-1.3.2
版本。以
Ubuntu
20.04
为例,可通过
apt
install
命令安装
MiniDLNA1.2.1。运行该软件后,会监听
8200
端口。利用上述历史漏洞,未认证的攻击者可通过发送伪造的数据包,实现任意代码执行,如下图所示,可以看到成功获取反弹
shell,表示攻击成功。除此之外,Debian11、多个型号的路由器等也有类似问题。本实例中,软件供应链风险传播链条为:多款主流操作系统的某些版本,在通过常规方式安装开源媒体服务软件
MiniDLNA
后,远程未授权的攻击者可能会利用
MiniDLNA
的历史漏洞
CVE-2023-33476
对这些操作系统版本发起任意代码执行的软件供应链攻击。2、PHP
软件供应链攻击实例分析PHP
是一种被广泛使用的开源脚本语言,可以嵌入到
HTML
中,特别适用于
Web
开发。PHP
在运行时会依赖于底层的系统库
Linux43glibc(GNU
C
库)来进行文件读写、网络通信等操作,可以认为
PHP利用
Linux
glibc
来支持其程序的运行及与操作系统的交互。Linux
glibc
是
GNU
按照
LGPL
许可协议发布的开源
libc
库,即
C运行库,是
Linux
系统中最底层的
API,几乎其他任何运行库都会依赖于
glibc。glibc
被广泛应用于各种应用和设备中,包括大部分
Linux发行版以及路由器等。glibc
除了封装
Linux
操作系统所提供的系统服务外,它自身也提供了许多必要功能服务的实现,为各种应用程序提供了基础的接口和功能。CVE-2024-2961
是
Linux
glibc
库的一个中危历史漏洞,该漏洞源于
iconv()函数存在缓冲区溢出问题,可导致应用程序崩溃或覆盖相邻变量。如果某
PHP
应用程序中存在任意文件读取漏洞,攻击者便可以利用其实施文件读取操作,在读取过程中,会调用到
glibc
的
iconv()函数,攻击者可进一步利用
CVE-2024-2961
对
PHP
开发的应用实施远程命令执行攻击,从而提升了漏洞的危害程度。该漏洞影响
Linuxglibc
2.39
及更早版本。下图展示了该漏洞对
PHP
8.1
的影响验证结果。PHP
8.1
中使用了
glibc
2.35,利用上述历史漏洞后,可以看到执行了给定的命令“whoami>/tmp/16666.txt”,对应权限为“www”,成功实现了远程命令执行攻击。44本实例中,软件供应链风险传播链条为:PHP
程序运行时使用Linux
glibc
库,如果某
PHP
应用程序存在任意文件读取问题,攻击者便可以基于
glibc
的历史漏洞
CVE-2024-2961
对该
PHP
程序发起远程命令执行的软件供应链攻击。3、某国产数据库供应链攻击实例分析某国产数据库是一款自主研发的数据库,可用作数据仓库系统、BI
系统和决策支持系统的承载数据库,具有高性能、高可用性、跨平台支持、兼容性和可扩展性等特点,被规模化应用于金融、电信、能源、政企等行业。分析发现,为方便用户进行数据迁移,实现与开源数据库
MySQL
的适配,该国产数据库的最新版本基于
MySQL
JDBC5.1.11
实现了建立到数据库服务端连接的功能。JDBC(Java
Database
Connectivity)是
Java
提供的一套用于连接数据库的标准
API,它定义了一套标准的接口,使得开发者可以使用相同的代码来连接不同类型的数据库。而
MySQL
JDBC(或
MySQLConnector/J
组件)是一种用于连接
MySQL
数据库的
JDBC
驱动,允许Java
程序通过
JDBC
API
访问
MySQL
数据库中的数据。45CVE-2021-2471
是
MySQL
JDBC
的一个
XML
外部实体注入类型的中危历史漏洞。由于
MySQL
JDBC
中的
getSource()方法对传入的
XML数据校验不足,导致攻击者可以通过构造恶意的
XML
数据,实现远程特权用户读取敏感数据或使应用程序崩溃等攻击。该漏洞影响
MySQLJDBC
8.0.27
以下版本。MySQL
JDBC
的另一个代表性的高危历史漏洞是
2019
年爆出的某反序列化漏洞。攻击者向
MySQL
服务器发送恶意数据,然后通过控制JDBC
连接设置项,将其配置指向该服务器。MySQL
客户端处理结果集时会调用
ObjectInputStream.readObject()方法,从而执行恶意的反序列化操作,从而引发远程命令执行等攻击。该漏洞影响
MySQL
JDBC8.0.21
以下版本。分析发现,上述两个历史漏洞依然能够影响本例中的国产数据库的最新版本。以下展示了在其上利用两个漏洞的效果,可以实现远程命令执行等攻击,具体效果如下所示:
成功利用
CVE-2021-2471
漏洞的效果HTTP
服务收到
PoC
中
XML
外部实体解析发起的
HTTP
请求,成功实现服务端请求伪造攻击,如下图所示。
成功利用
2019
年某
MySQL
JDBC
反序列化漏洞的效果客户端触发了该反序列化漏洞,成功实现远程命令执行攻击,如46下图所示。本实例中,软件供应链风险传播链条为:某国产数据库的最新版本基于
MySQL
JDBC
5.1.11
实现连接数据库服务端的特定功能,MySQLJDBC
的
XML
外部实体注入、反序列化等历史漏洞依然可以影响该国产数据库,实现远程命令执行等软件供应链攻击。六、总结及建议过去的一年,软件供应链安全依然是网络安全领域的热点,但各方的态度更加趋于理性和谨慎,各项工作也正处于循序渐进向深水区探索的阶段。欧美国家
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 英语编制课程设计小学
- 石灰法烟气脱硫课程设计
- 英语兴趣班音标课程设计
- 挤压模课程设计
- 人教部编版七年级历史下册全册教案
- 椭球形塑料模课程设计
- 自制小乐器托班课程设计
- 幼儿园远足课程设计
- 电力行业前台服务总结
- 物流仓储行业配送优化建议
- 2024-2025学年上学期重庆四年级英语期末培优卷3
- 2024年01月11344金融风险管理期末试题答案
- 浙江省杭州市八县区2024-2025学年高二数学上学期期末学业水平测试试题
- 绍兴文理学院元培学院《操作系统》2022-2023学年第一学期期末试卷
- 湖南省长沙市明德教育集团初中联盟2020-2021学年八年级上学期期末考试地理试题
- 期末复习综合卷(试题)-2024-2025学年一年级上册数学人教版
- 施工员岗位述职报告
- 第47届江苏省选拔赛化学实验室技术项目技术文件
- 2024年精美《婚姻法》课件模板:法律教育的新趋势
- 项目管理年终总结汇报
- 夫妻共同房产变更为一方单独所有协议书(2篇)
评论
0/150
提交评论