fastjson 遠程代碼執行漏洞處置建議

發布時間 2019-06-26

漏洞編號和級別


CVE編號:暫無,危險級別:高危,CVSS分值:官方未評定


影響版本


受影響的版本


fastjson < 1.2.30

1.2.41 < fastjson < 1.2.45


漏洞概述


fastjson是阿里巴巴的開源JSON解析庫,它可以解析JSON格式的字符串,支持將Java Bean序列化為JSON字符串,也可以從JSON字符串反序列化到JavaBean,由于具有執行效率高的特點,應用范圍很廣。


近日,收集到關于fastjson javaweb框架的0day漏洞情報,由于fastjson在進行實例化對象時沒有對輸入數據進行嚴格限制,攻擊者只要精心構造json數據,即可造成遠程代碼執行。


默認開啟了autoType功能,可以在json中通過@type指定類進行自動實例化。例如,“{“@type”:“com.cmbc.Test”}”在使用Fastjson內JSON.parse()、JSON.parseObject()、JSONObject.parseObject(  )、 JSON.parseAarry(  )等接口處理上述json格式的時,會調用com.cmbc.Test類的默認構造函數實例化一個對象。如果我們構造json格式如: {“@type”:“com.cmbc.Test”,“val1”:“test”,“val2”:“test2”},那么Fastjson在實例化對象的時候會同時去調用com.cmbc.Test的setVal1(String val1)和setVal2(String val2)函數。利用Fastjson的這種特性,只要構造相應代碼,發送給存在fastjson處理的模塊就會造成遠程代碼執行。


對于當前項目,可通過查看版本來判斷是否受影響,進入項目目錄找到fastjson組件,通過文件名可獲取當前版本,如果當前版本在受影響范圍內,則說明當前系統存在風險。


使用maven部署的項目,可打開pom.xml文件,搜索如下內容:


<dependency>

    <groupId>com.alibaba</groupId>

    <artifactId>fastjson</artifactId>

    <version>x.x.x</version>

</dependency>


其中 x.x.x 即為版本號。


漏洞驗證


暫無POC/EXP。


修復建議


根據現有的情報,最新的1.2.58版本不受影響,可訪問以下鏈接進行下載:http://repo1.maven.org/maven2/com/alibaba/fastjson/1.2.58/。


使用maven部署的項目可修改依賴進行版本更新:


<dependency>

    <groupId>com.alibaba</groupId>

    <artifactId>fastjson</artifactId>

    <version>1.2.58</version>

</dependency>


參考鏈接