项目介绍

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文件内容并返回对应实例。下面对实例化的关键步骤展开介绍:

  1. 获取构造器

在下面代码中根据节点获取对应的类并从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 命令执行漏洞相关推荐

  1. [ vulhub漏洞复现篇 ] GhostScript 沙箱绕过(任意命令执行)漏洞CVE-2018-16509

  2. struts2漏洞_十大常见web漏洞——命令执行漏洞

    命令执行漏洞在不同框架下都有存在,也是十分普遍且危害极大,下面我们介绍一个最具代表性的,也是影响范围最大的一个命令执行漏洞--Struts2远程代码执行漏洞. Struts2 漏洞介绍 ApacheS ...

  3. php代码审计命令执行,PHP代码审计笔记--命令执行漏洞

    命令执行漏洞,用户通过浏览器在远程服务器上执行任意系统命令,严格意义上,与代码执行漏洞还是有一定的区别. 0x01漏洞实例 例1: $target=$_REQUEST['ip']; $cmd = sh ...

  4. Web安全 RCE漏洞(命令执行漏洞的 测试和利用).

    系统命令执行的概括 系统命令执行一般是 在Web应用中,可能有时候需要调用一些系统命令来执行,而程序在开发的时候没有对输入进行严格的过滤,导致恶意用户可以构造一些恶意的系统命令,从而达成系统命令执行攻 ...

  5. 【web安全】——命令执行漏洞(RCE)详解

    作者名:Demo不是emo  主页面链接:主页传送门 创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷 座右铭:不要让时代的悲哀 ...

  6. cve-2019-11076 Cribl UI 1.5.0 未授权命令执行漏洞分析

    Cribl是一款日志分析工具.Cribl UI是其中的一个用户界面. Cribl UI 1.5.0版本中存在安全漏洞.远程攻击者可借助未认证的Web请求利用该漏洞运行任意命令. 前言 前几天瞎逛 Gi ...

  7. 【安全漏洞】Rocket.Chat 远程命令执行漏洞分析

    简述 Rocket.Chat 是一个开源的完全可定制的通信平台,由 Javascript 开发,适用于具有高标准数据保护的组织. 2021年3月19日,该漏洞在 HackerOne 被提出,于2021 ...

  8. 又被野外利用了!新曝光Office产品多个远程命令执行漏洞分析

    本文讲的是又被野外利用了!新曝光Office产品多个远程命令执行漏洞分析, 早在2015年,FireEye曾发布过两次关于Office的Encapsulated PostScript (EPS)图形文 ...

  9. 分区起始位置参数溢出_IIS6.0缓冲区溢出漏洞深度分析(CVE-2017-7269)

    漏洞描述 开启WebDAV服务的IIS6.0存在缓冲区溢出漏洞可以任意代码执行,目前针对 Windows Server 2003 R2 可以稳定利用.在WebDAV服务的ScStoragePathFr ...

最新文章

  1. c语言inline详解
  2. Java 7 Concurrency Cookbook – Javier Fernández González -前言
  3. 在 SQL Server 2K 中实现 大小写敏感的查询条件(WHERE ...),类似 Access(VB) 的 StrComp 函数...
  4. numpy维度交换_15年!NumPy论文终出炉,还登上了Nature
  5. php post请求后端拿不到值_php服务器能获取post请求的数值不能获取get请求的数值...
  6. 2018计算机领域大事件,吕伟:2018年计算机行业回顾
  7. Android之Service与IntentService的比较
  8. JavaScript语义基础
  9. restful和rest_HATEOAS的RESTful服务:JVM上的REST API和超媒体
  10. springCloud五大组件--Eureka
  11. 如何设置硬盘安装linux,linux用硬盘安装时所设置选项
  12. 力扣-1880(243 周赛) 检查某单词是否等于两单词之和
  13. 软件工程之系统建模篇【设计接口类模型】
  14. 计算机内无法使用搜狗,电脑搜狗输入法不能用怎么办
  15. HNUST OJ 2292 烟花易逝
  16. bzoj1052 覆盖问题 二分答案 dfs
  17. word该值小于列表中的前一条目_文本主题发现(一)-- 数据预处理
  18. mysql怎么分组计算逾期率_Tableau分享第一篇:如何计算分组留存率(Cohort Analysis)!...
  19. Win10开启ssh和scp
  20. 来自北京大学NOIP金牌选手yxc的常用代码模板3——搜索与图论

热门文章

  1. 邮箱满了,但是Web邮箱又登陆不上怎么办?
  2. SP技术培训班(二):IVR、SMS、MSM、WAP、MO、MT。。。
  3. 灾害预警实时监控中心(大数据平台系列)
  4. nexus7二代升级android8,添横屏模式 Nexus7升级至Android4.1.2
  5. SQL 触发器的缺点 坏处 弊端 哼╭(╯^╰)╮
  6. 电器类目主图设计(洗衣机主图)
  7. 你会成为屋里最有趣的人
  8. 关于Walkman NW-ZX300A利用Music Center分析歌曲使用sensme频道的方法(填坑)
  9. python支持wps_python程序的一个应用wps的实例
  10. 2022-2028全球与中国固态继电器市场现状及未来发展趋势