阿里巴巴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);
        }
}


 


 升級1.2.60之後再次運行如下 :

解析可以參考:

1.2.60增加了

詳解可以參考  http://www.sohu.com/a/339253119_120045376

意思是 輸入以 x結尾的字符串會導致next方法程序進入死循環,無限擴充數組最終導致head space;

七 參考

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

https://github.com/alibaba/fastjson

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章