阿里巴巴fastjson漏洞攻击

一 前言

Fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean

二 漏洞介绍

Fastjson 1.2.60版本以下存在字符串解析异常

该漏洞会导致java进程的占用内存迅速涨到JVM允许的最大值(-Xmx参数,默认为1/4物理内存大小),并且CPU飙升。

该漏洞并不能直接打挂java进程,但是可能由于java进程占用内存过大,导致被系统的OOM Killer杀掉

三 漏洞危害

经斗象安全应急响应团队分析Fastjson多个版本存在远程拒绝服务漏洞,Fastjson 1.2.60版本以下存在字符串解析异常,可导致远程拒绝服务攻击。攻击者即可通过精心构造的请求包对使用Fastjson的服务器造成远程拒绝服务攻击,可导致服务器宕机。

四 影响范围

产品

Fastjson

版本

1.2.60以下版本

组件

Fastjson

五 修复方案

1、升级Fastjson到1.2.60版本

2、建议尽可能使用Jackson或者Gson

六 分析

1.复现

采用1.6.49 fastjson

public static void main(String[] args) throws UnsupportedEncodingException {
        //{"a":"x
        //漏洞是由于fastjson处理字符串中x这种HEX字符表示形式出现的问题。
        //输入字符串长度为8
        final String DEATH_STRING = "{\"a\":\"\\x";
        try{
            Object obj = JSON.parse(DEATH_STRING);
            System.out.println(obj);
        }catch (JSONException ex){
            ex.printStackTrace();
            System.out.println(ex);
        }
}


阿里巴巴fastjson漏洞攻击_第1张图片

 


 升级1.2.60之后再次运行如下 :

阿里巴巴fastjson漏洞攻击_第2张图片

解析可以参考:

1.2.60增加了阿里巴巴fastjson漏洞攻击_第3张图片

详解可以参考  http://www.sohu.com/a/339253119_120045376

意思是 输入以 x结尾的字符串会导致next方法程序进入死循环,无限扩充数组最终导致head space;

七 参考

https://www.anquanke.com/post/id/185964

https://github.com/alibaba/fastjson

 

 

你可能感兴趣的:(java)