漏洞背景
Fastjson是阿里巴巴的開源JSON解析庫,它可以解析JSON格式的字符串,支持將Java Bean序列化為JSON字符串,也可以從JSON字符串反序列化到JavaBean。
Fastjson多處補丁修補出現紕漏,Fastjson在1.2.68版本以下,無需Autotype開啟,或者可繞過autoType限制,攻擊者即可通過精心構造的請求包在使用Fastjson的服務器上進行遠程代碼執行。
受影響的版本:
fastjson <=1.2.68
fastjson sec版本 <= sec9
1. 漏洞危害
惡意攻擊者可以利用漏洞攻擊做到:
1、執行遠程命令,獲取服務數據
2、執行遠程命令,植入后門,控制服務器
2. 修復思路
1.升級至安全版本.
2.對fastjson進行一定的安全加固措施
3.采用其他json處理組件替換,jackson-databind漏洞也頻發,建議使用Gson
4.使用WAF緊急漏洞攔截,再升級到安全版本
3. 代碼修復
1.升級至安全版本,參考下載鏈接:https://repo1.maven.org/maven2/com/alibaba/fastjson/
2.對fastjson進行一定的安全加固措施
fastjson在1.2.68及之后的版本中引入了safeMode,配置safeMode后,無論白名單和黑名單,都不支持autoType,可一定程度上緩解反序列化Gadgets類變種攻擊(關閉autoType注意評估對業務的影響)
開啟方法參考:
打開SafeMode功能
在1.2.68之后的版本,在1.2.68版本中,fastjson增加了safeMode的支持。safeMode打開后,完全禁用autoType。所有的安全修復版本sec10也支持SafeMode配置。
有三種方式配置SafeMode,如下:
A.在代碼中配置
ParserConfig.getGlobalInstance().setSafeMode(true);
B.加上JVM啟動參數
-Dfastjson.parser.safeMode=true
如果有多個包名前綴,用逗號隔開
C.通過fastjson.properties文件配置。
通過類路徑的fastjson.properties文件來配置,配置方式如下:
fastjson.parser.safeMode=true
3.采用其他json處理組件替換,jackson-databind漏洞也頻發,建議使用Gson