漏洞深度分析|CVE-2022-1471 SnakeYaml 命令执行漏洞

这篇具有很好参考价值的文章主要介绍了漏洞深度分析|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文件并实例化。

漏洞深度分析|CVE-2022-1471 SnakeYaml 命令执行漏洞

 

漏洞分析

该漏洞并不被官方认可,官方认为通过yaml文件反序列化对象是正常功能并不会修复。

漏洞深度分析|CVE-2022-1471 SnakeYaml 命令执行漏洞

 

这里我仅对snakeyaml反序列化的流程进行分析,为了简洁易懂,下面仅列举关键代码:

漏洞深度分析|CVE-2022-1471 SnakeYaml 命令执行漏洞

 

上述代码需要层层展开,简单说就是根据snakeyaml的构造器解析yaml文件内容并返回对应实例。下面对实例化的关键步骤展开介绍:

  1. 获取构造器

在下面代码中根据节点获取对应的类并从yamlClassConstructors中获得对应的构造器。

漏洞深度分析|CVE-2022-1471 SnakeYaml 命令执行漏洞

 

这里的Constructor有三种类型,分别对应不同的yaml

漏洞深度分析|CVE-2022-1471 SnakeYaml 命令执行漏洞

 

2. 实例化对象

获得构造器后就是装配对象。这里仅分析ConstructSequence。在下面代码中,根据节点的不同类型分别进行处理。

漏洞深度分析|CVE-2022-1471 SnakeYaml 命令执行漏洞

 

如果不是上述三种基本类型,那么获取默认的构造函数并递归构造参数节点

漏洞深度分析|CVE-2022-1471 SnakeYaml 命令执行漏洞

 

最后通过反射初始化实例

漏洞深度分析|CVE-2022-1471 SnakeYaml 命令执行漏洞

 

以上梳理了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文章来源地址https://www.toymoban.com/news/detail-426548.html

到了这里,关于漏洞深度分析|CVE-2022-1471 SnakeYaml 命令执行漏洞的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 漏洞复现:Apache Spark 命令注入(CVE-2022-33891)

      Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需

    2024年02月09日
    浏览(27)
  • Spring Rce 漏洞分析CVE-2022-22965

    Spring Framework 是一个开源的轻量级J2EE应用程序开发框架。 3月31日,VMware发布安全公告,修复了Spring Framework中的远程代码执行漏洞(CVE-2022-22965)。在 JDK 9 及以上版本环境下,可以利用此漏洞在未授权的情况下在目标系统上写入恶意程序从而远程执行任意代码。 影响组件:

    2024年02月05日
    浏览(49)
  • 网络靶场实战-RouterOS漏洞分析(CVE-2022-45315)

    本环境是蛇矛实验室基于\\\"火天网演攻防演训靶场\\\"进行搭建,通过火天网演中的环境构建模块,可以灵活的对目标网络进行设计和配置,并且可以快速进行场景搭建和复现验证工作。火天网演中,内置大量固件设备,包含大型网络设备及物联网设备,可以灵活选取进行测试验

    2024年02月11日
    浏览(33)
  • Django SQL注入漏洞分析(CVE-2022-28346)

    Django 在2022年发布的安全更新,修复了在 QuerySet 的 annotate(), aggregate(), extra() 等函数中存在的 SQL 注入漏洞。 2.2= Django Django 2.2.28 3.2= Django Django 3.2.13 4.0= Django Django 4.0.4 需要使用了 annotate 或者 aggregate 或 extra 方法 利用 pycharm 创建一个 python 项目 ​ 创建完成项目后在 Setti

    2024年02月03日
    浏览(38)
  • MICROSOFT OFFICE MSDT操作系统命令注入漏洞(CVE-2022-30190)

    目录 漏洞概述 受到影响的产品和版本 漏洞复现 1、搭建靶场 2、攻击复现 一、执行系统程序 二、执行系统命令 修复 Microsoft Windows Support Diagnostic Tool是美国微软(Microsoft)公司的收集信息以发送给 Microsoft 支持的工具(Windows上的微软支持诊断工具中存在此漏洞)。当从Word等

    2024年02月06日
    浏览(26)
  • Docker Dirtypipe(CVE-2022-0847)漏洞复现与分析容器逃逸

    同脏牛,通过写只读内存,对映射的内存做篡改 GitHub - greenhandatsjtu/CVE-2022-0847-Container-Escape: CVE-2022-0847 used to achieve container escape 利用CVE-2022-0847 (Dirty Pipe) 实现容器逃逸 云原生之容器安全实践-安全客 - 安全资讯平台 (anquanke.com) 从脏管道(CVE-2022-0847)到docker逃逸 - 先知社区 (aliy

    2024年02月13日
    浏览(35)
  • CVE-2022-42889 Apache Commons Text RCE漏洞分析

    最近一直在对刚研发出来的自动化Web/API漏洞Fuzz的命令行扫描工具进行维护更新(工具地址:https://github.com/StarCrossPortal/scalpel),目前扫描工具已更新至第三个版本,新增了5条2022年CVE漏洞POC,修复了例如Content- Type和body类型不一致等问题。最新版本测试稳定,满足Web/API的漏洞

    2024年02月13日
    浏览(41)
  • 【Linux系统进阶详解】Linux核心命令深度实战实现原理详解和每个命令使用场景以及实例分析

    在Linux系统中, find 、 xargs 、 sed 、 grep 、正则表达式和通配符是非常常用的命令和技巧。它们可以结合使用,实现更复杂的文件查找、过滤和操作。下面将详细介绍它们的实现原理和使用场景。 find命令 ``find`命令通过遍历指定目录及其子目录来查找符合条件的文件或目录。

    2024年02月08日
    浏览(212)
  • 【linux命令讲解大全】045.网络数据分析利器:深度解读 tcpdump 抓包工具的使用方法

    tcpdump是一款在Linux上的抓包工具,用于嗅探网络数据。 补充说明 tcpdump命令是一款抓包、嗅探器工具。它可以打印所有经过网络接口的数据包的头信息,并可使用-w选项将数据包保存到文件中,以便以后进行分析。 语法 选项 -a:尝试将网络和广播地址转换成名称 -c 数据包数

    2024年02月10日
    浏览(33)
  • CVE-2022-30190分析以及复现和POC利用 //Microsoft Office MSDT 远程代码执行漏洞

    在微软官方的介绍里,是从 Word 等调用应用程序使用 URL 协议调用 MSDT 时存在远程执行代码漏洞。成功利用此漏洞的攻击者可以使用调用应用程序的权限运行任意代码。 意思是恶意 Word 文档可以使用远程模板功能从远程服务器获取 HTML 文件,并且 HTML 代码可以使用 Microsoft 的

    2024年02月04日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包