漏洞深度分析|CVE-2022-1471 SnakeYaml 命令执行漏洞
项目介绍
YAML是一种数据序列化格式,设计用于人类的可读性和与脚本语言的交互。
SnakeYaml是一个完整的YAML1.1规范Processor,支持UTF-8/UTF-16,支持Java对象的序列化/反序列化,支持所有YAML定义的类型。
项目地址
https://github.com/snakeyaml/snakeyaml
漏洞概述
SnakeYaml通常使用方法如下:
new Yaml(new Constructor(TestDataClass.class)).load(yamlContent);
默认情况下,SnakeYaml在解析用户提供恶意yamlContent时,即使yamlContent不满足TestDataClass类型,也会执行恶意代码。
影响版本
Snakeyaml 全版本
环境搭建
导入存在漏洞的Snakeyaml组件并编写demo测试即可
漏洞复现
下面demo通过反序列化一个恶意类,该恶意类可以请求远程jar文件并实例化。
漏洞分析
该漏洞并不被官方认可,官方认为通过yaml文件反序列化对象是正常功能并不会修复。
这里我仅对snakeyaml反序列化的流程进行分析,为了简洁易懂,下面仅列举关键代码:
上述代码需要层层展开,简单说就是根据snakeyaml的构造器解析yaml文件内容并返回对应实例。下面对实例化的关键步骤展开介绍:
- 获取构造器
在下面代码中根据节点获取对应的类并从yamlClassConstructors中获得对应的构造器。
这里的Constructor有三种类型,分别对应不同的yaml
2. 实例化对象
获得构造器后就是装配对象。这里仅分析ConstructSequence。在下面代码中,根据节点的不同类型分别进行处理。
如果不是上述三种基本类型,那么获取默认的构造函数并递归构造参数节点
最后通过反射初始化实例
以上梳理了snakeyaml大概的反序列化流程。当yaml可以被攻击者控制时,通过传入恶意的yaml内容就可以实例化任意对象,从而造成命令执行。
修复方式
在参考链接中,官方认为snakeyaml的使用场景仅接收可信的数据源,因此不认为cve-2022-1471是漏洞,因此目前还没有修复,后续可能也不会修复。这里建议开发人员排查snakeyaml的使用情况,判断是否接收外部数据,并加入new SafeConstructor()类进行过滤,如下:
Yaml yaml = new Yaml(new SafeConstructor());
参考链接
snakeyaml / snakeyaml / issues / #561 - CVE-2022-1471 (vulnerability in deserialization) — Bitbucket
https://github.com/advisories/GHSA-mjmj-j48q-9wg2
https://nvd.nist.gov/vuln/detail/CVE-2022-1471
漏洞深度分析|CVE-2022-1471 SnakeYaml 命令执行漏洞相关推荐
- [ vulhub漏洞复现篇 ] GhostScript 沙箱绕过(任意命令执行)漏洞CVE-2018-16509
- struts2漏洞_十大常见web漏洞——命令执行漏洞
命令执行漏洞在不同框架下都有存在,也是十分普遍且危害极大,下面我们介绍一个最具代表性的,也是影响范围最大的一个命令执行漏洞--Struts2远程代码执行漏洞. Struts2 漏洞介绍 ApacheS ...
- php代码审计命令执行,PHP代码审计笔记--命令执行漏洞
命令执行漏洞,用户通过浏览器在远程服务器上执行任意系统命令,严格意义上,与代码执行漏洞还是有一定的区别. 0x01漏洞实例 例1: $target=$_REQUEST['ip']; $cmd = sh ...
- Web安全 RCE漏洞(命令执行漏洞的 测试和利用).
系统命令执行的概括 系统命令执行一般是 在Web应用中,可能有时候需要调用一些系统命令来执行,而程序在开发的时候没有对输入进行严格的过滤,导致恶意用户可以构造一些恶意的系统命令,从而达成系统命令执行攻 ...
- 【web安全】——命令执行漏洞(RCE)详解
作者名:Demo不是emo 主页面链接:主页传送门 创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷 座右铭:不要让时代的悲哀 ...
- cve-2019-11076 Cribl UI 1.5.0 未授权命令执行漏洞分析
Cribl是一款日志分析工具.Cribl UI是其中的一个用户界面. Cribl UI 1.5.0版本中存在安全漏洞.远程攻击者可借助未认证的Web请求利用该漏洞运行任意命令. 前言 前几天瞎逛 Gi ...
- 【安全漏洞】Rocket.Chat 远程命令执行漏洞分析
简述 Rocket.Chat 是一个开源的完全可定制的通信平台,由 Javascript 开发,适用于具有高标准数据保护的组织. 2021年3月19日,该漏洞在 HackerOne 被提出,于2021 ...
- 又被野外利用了!新曝光Office产品多个远程命令执行漏洞分析
本文讲的是又被野外利用了!新曝光Office产品多个远程命令执行漏洞分析, 早在2015年,FireEye曾发布过两次关于Office的Encapsulated PostScript (EPS)图形文 ...
- 分区起始位置参数溢出_IIS6.0缓冲区溢出漏洞深度分析(CVE-2017-7269)
漏洞描述 开启WebDAV服务的IIS6.0存在缓冲区溢出漏洞可以任意代码执行,目前针对 Windows Server 2003 R2 可以稳定利用.在WebDAV服务的ScStoragePathFr ...
最新文章
- c语言inline详解
- Java 7 Concurrency Cookbook – Javier Fernández González -前言
- 在 SQL Server 2K 中实现 大小写敏感的查询条件(WHERE ...),类似 Access(VB) 的 StrComp 函数...
- numpy维度交换_15年!NumPy论文终出炉,还登上了Nature
- php post请求后端拿不到值_php服务器能获取post请求的数值不能获取get请求的数值...
- 2018计算机领域大事件,吕伟:2018年计算机行业回顾
- Android之Service与IntentService的比较
- JavaScript语义基础
- restful和rest_HATEOAS的RESTful服务:JVM上的REST API和超媒体
- springCloud五大组件--Eureka
- 如何设置硬盘安装linux,linux用硬盘安装时所设置选项
- 力扣-1880(243 周赛) 检查某单词是否等于两单词之和
- 软件工程之系统建模篇【设计接口类模型】
- 计算机内无法使用搜狗,电脑搜狗输入法不能用怎么办
- HNUST OJ 2292 烟花易逝
- bzoj1052 覆盖问题 二分答案 dfs
- word该值小于列表中的前一条目_文本主题发现(一)-- 数据预处理
- mysql怎么分组计算逾期率_Tableau分享第一篇:如何计算分组留存率(Cohort Analysis)!...
- Win10开启ssh和scp
- 来自北京大学NOIP金牌选手yxc的常用代码模板3——搜索与图论
热门文章
- 邮箱满了,但是Web邮箱又登陆不上怎么办?
- SP技术培训班(二):IVR、SMS、MSM、WAP、MO、MT。。。
- 灾害预警实时监控中心(大数据平台系列)
- nexus7二代升级android8,添横屏模式 Nexus7升级至Android4.1.2
- SQL 触发器的缺点 坏处 弊端 哼╭(╯^╰)╮
- 电器类目主图设计(洗衣机主图)
- 你会成为屋里最有趣的人
- 关于Walkman NW-ZX300A利用Music Center分析歌曲使用sensme频道的方法(填坑)
- python支持wps_python程序的一个应用wps的实例
- 2022-2028全球与中国固态继电器市场现状及未来发展趋势