2017年反序列化漏洞年度报告v1.0
2019-11-28
背景
2017年OWASP发布了新的十大web漏洞威胁,其中A8:2017就是不安全的反序列化,A9:2017-使用含有已知漏洞的组件也和反序列化紧密相连,这是因为在Java开发中很多代码都依赖于第三方组件,而这些组件可能会存在反序列漏洞,典型的例子就是Jackson,fastjson,XStream,XMLDecoder等开源组件。序列化是对象转换成二进制,json,xml等存储格式。而反序列化恰好相反,则是将二进制,json,xml转换成相应的类。
在2017年海博网论坛科技NS-SRC 处理的漏洞应急中就有很大一部分是反序列化漏洞,下面我们来一一分析2017年我们应急的那些反序列化漏洞。 总得来说,2017年出现的反序列化漏洞和以往反序列漏洞在漏洞形成方式上不太一样,在以往都是由于Java自身的反序列特征导致的漏洞,2017年则多了fastjson,Jackson等,这两个库都能将json文本转换成具体的java bean,在这个转换过程中会调用相应的setter方法和getter方法从而导致远程代码执行。2017年还出现关于XMLDecoder和XStream的应急,都是因为依赖问题导致的缺陷。 本报告重点回顾2017年海博网论坛科技重点应急,影响面非常广的那些反序列化漏洞。从这个报告中能看出反序列化漏洞的发展,攻击方和防御方不停的对抗过程,bypass和反bypass在这个过程中体现得淋漓尽致。
概述
应急路线
从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,所以备受黑产亲睐。