2017年反序列化漏洞年度报告

Posted 绿盟科技

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2017年反序列化漏洞年度报告相关的知识,希望对你有一定的参考价值。

2017年OWASP发布了新的十大web漏洞威胁,其中A8:2017就是不安全的反序列化,A9:2017-使用含有已知漏洞的组件也和反序列化紧密相连,这是因为在Java开发中很多代码都依赖于第三方组件,而这些组件可能会存在反序列漏洞,典型的例子就是Jackson、fastjson、XStream、XML Decoder等开源组件。序列化是对象转换成二进制、json、xml等存储格式。而反序列化恰好相反,则是将二进制、json、xml转换成相应的类。

在2017年绿盟科技NS-SRC 处理的漏洞应急中就有很大一部分是反序列化漏洞,下面我们来一一分析2017年我们应急的那些反序列化漏洞。 总得来说,2017年出现的反序列化漏洞和以往反序列漏洞在漏洞形成方式上不太一样,在以往都是由于Java自身的反序列特征导致的漏洞,2017年则多了fastjson、Jackson等,这两个库都能将json文本转换成具体的java bean,在这个转换过程中会调用相应的setter方法和getter方法从而导致远程代码执行。2017年还出现关于XMLDecoder和XStream的应急,都是因为依赖问题导致的缺陷。 本报告重点回顾2017年绿盟科技重点应急,影响面非常广的那些反序列化漏洞。从这个报告中能看出反序列化漏洞的发展,攻击方和防御方不停的对抗过程,bypass和反bypass在这个过程中体现得淋漓尽致。

概述

2017年反序列化漏洞年度报告

应急路线


从3月份爆出Fastjson的反序列化特性导致的远程代码执行,四月份则是Jackson,Log4j2,Jenkins的反序列化造成的远程代码执行,接着6月份流出了Weblogic CVE-2017-3248的利用代码。稍微消停了一会,Struts2又被安全研究人员盯上,爆出Struts2-052,又是一个远程代码执行。在11月份,由于Jackson官方对漏洞不敏感,接着又被曝CVE-2017-15095,又一个绕过。进入12月份,Fastjson和Jackson相继发布了几个补丁修复那些黑名单的绕过;Weblogic XMLDecoder(CVE-2017-10352)的漏洞被广泛应用于于挖坑。由于很多漏洞都是远程代码执行,有的一个HTTP POST请求就能getshell,所以备受黑产亲睐。

反序列化漏洞

01

fastjson反序列化漏洞

2017年3月15日,fastjson官方发布安全公告表示fastjson在1.2.24及之前版本存在远程代码执行高危安全漏洞。攻击者可以通过此漏洞远程执行恶意代码来入侵服务器。fastjson官方建议直接升级到1.2.28/1.2.29或者更新版本来保证系统安全。4月29日,本文作者绿盟科技安全研究员廖新喜(xxlegend)构造出了Fastjson的反序列漏洞的PoC,引起了安全圈的广泛讨论。详细的分析可参照1,下面做简单的回顾。

后续官方修补

fastjson官方后续又添加了一些补丁,本文作者给fastjson官方提交了两次绕过,fastjson官方都发布了相应更新。具体如下:

1. fastjson-1.2.34版本发布,当autoType=true时增强安全防护

2. fastjson-1.2.42版本发布 Bug修复安全加固

3. fastjson-1.2.43版本发布 Bug修复安全加固

4. fastjson-1.2.44版本发布 Bug修复安全加固

在fastjson-1.2.42版本中通过异或操作混淆了其黑名单,可以阻挡一部分人分析其黑名单内容,其实这是自欺欺人的。具体的黑名单分析读者可以自行研究。

02

 Jackson反序列化

Jackson是一个开源的Java序列化与反序列化工具,可以将java对象序列化为xml或json格式的字符串,或者反序列化回对应的对象,由于其使用简单,速度较快,且不依靠除JDK外的其他库,被众多用户所使用。但是其组件Jackson-databind可以指定特定的反序列化类,这样就存在代码执行的风险。


后续官方修补

CVE-2017-15095是CVE-2017-7525的延续,这个漏洞同样也是本文作者报告的。同样是黑名单的绕过。 CVE-2017-17485是CVE-2017-7525的延续,这个漏洞引入的类是org.springframework.context.support.ClassPathXmlApplicationContext,利用这个库的bean重新生成类,而这个bean所依赖的xml是由攻击者来定制的。从这里也可以看出黑名单就是个无底洞,深不可见,bypass也是不完。由于Jackson的特性,可以预测,Jackson在2018年还将出现更多的绕过。

03

Struts2

struts2号称漏洞之王,2017应急中就处理了S2-045,S2-046,S2-48,S2-052,S2-055,都是远程代码执行级别的漏洞。S2-045的PoC现在还被黑客用于各种漏洞扫描,挖矿。既然是漏洞之王,那自然少不了反序列化,S2-052(CVE-2017-9805)就是XStream使用不当造成的反序列化。S2-055则是由于Jackson-databind导致的反序列化。这两个漏洞的典型特点都是不恰当的使用第三方库导致的。

S2-052分析

根据官方的描述信息来看,是REST插件使用到XStreamHandler处理xml数据的时候,由于未对xml数据做任何过滤,在进行反序列将xml数据转换成Object时导致的RCE。

S2-055分析

2017年12月1日,Apache Struts发布最新的安全公告,Apache Struts 2.5.x REST插件存在远程代码执行的中危漏洞,漏洞编号与CVE-2017-7525相关。漏洞的成因是由于使用的Jackson版本过低在进行JSON反序列化的时候没有任何类型过滤导致远程代码执行。当然官方说的影响是未知,其实这里是远程代码执行。

04

Weblogic

在2017年,整个Oracle的产品线都深受反序列化影响,其中Weblogic影响面尤其广泛,很多漏洞的CVSS评分都是9.8,9.9甚至为10。

2017年反序列化漏洞年度报告

而且CVE-2017-3248的PoC已经在github上,并且被用于黑产,CVE-2017-10352 PoC也被泄露同样被用于黑产。

CVE-2017-3248 分析

这个漏洞(CVE-2017-3248)就是利用rmi机制的缺陷,通过JRMP协议达到执行任意反序列化payload的目的。利用步骤可以分为两步,第一步建立JRMP监听端口,第二步执行反序列化操作,其反序列化内容指向外部的JRMP监听端口,这样在反序列的过程中就会从远程JRMP监听端口加载内容并执行序列化操作,详细的利用工具可以使用ysoserial。

CVE-2017-10352 分析

这个漏洞是由于XMLDecoder这个缺陷库存在代码执行问题,同样也是由于被黑产利用而被大家广泛得知。其实在CVE-2017-3506中,Weblogic官方已经做了一次修补,只是当时的修补不够彻底,后来有研究员给Weblogic提供了绕过的PoC,Weblogic官方再次完整修补。同时这个PoC也被泄露,非常多的用户中招。

对srcip:173.212.217.181溯源跟踪,从绿盟科技威胁情报中心NTI中的数据也能看出,该IP从2017年8月份开始,一直被用于特定漏洞扫描以便发现更多具有脆弱性的主机。

2017年反序列化漏洞年度报告


总结

点击“阅读原文”查看完整内容


2017年反序列化漏洞年度报告



请点击屏幕右上方“…”

关注绿盟科技公众号
NSFOCUS-weixin

↑↑↑长按二维码,下载绿盟云APP

以上是关于2017年反序列化漏洞年度报告的主要内容,如果未能解决你的问题,请参考以下文章

Jboss反序列化漏洞复现(CVE-2017-12149)

CVE-2017-12149JBoss 反序列化漏洞利用

漏洞预警JBoss再次曝出反序列化高危漏洞(CVE-2017-12149)

Jboss反序列化漏洞复现(CVE-2017-12149)

Jboss反序列化漏洞复现(CVE-2017-12149)

JBoss反序列化漏洞(CVE-2017-12149)分析