一、fastjson是什麼?
Fastjson是一個Java語言編寫的高性能支持JSON格式的解析器,它可以把Json文本數據轉換成Java對象、更高效的方式是將Json文本直接解析成一個Java對象。
fastjson相對於其他json解析庫的優勢是解析性能極快。它的特點是:
- 速度快,性能是所有Java json parser中最快的
- 功能強大,支持普通Javabean,集合,Map,日期及Enum
- 零依賴,不需要額外的依賴
二、fastjson1.2.68反序列化漏洞是什麼?
在fastjson1.2.68版本之前,fastjson存在反序列化漏洞。攻擊者可以通過構造特定的json字符串,使得fastjson在反序列化時執行攻擊者精心構造的惡意代碼,造成系統被攻擊者完全控制。
三、產生fastjson1.2.68反序列化漏洞的原因是什麼?
fastjson在進行反序列化的時候,會根據json字符串中的類型信息,生成相應的對象。攻擊者可以構造json字符串中的類型信息,來導致fastjson生成攻擊者精心構造的對象。
此外,fastjson默認情況下會開啟autoType功能,即自動檢測類型。攻擊者可以通過構造json字符串中的type類型,來達到執行惡意代碼的目的。
四、fastjson1.2.68反序列化漏洞的危害有多大?
fastjson1.2.68反序列化漏洞可能導致攻擊者完全控制系統,在後期難以修復。攻擊者可以在反序列化時運行任意命令,並在系統內執行其他惡意操作,例如獲取系統權限、竊取數據等。因此,如果系統受到此類攻擊,則可能會帶來嚴重的安全隱患。
五、如何防範fastjson1.2.68反序列化漏洞?
1、升級fastjson版本。 fastjson官方已經修復了1.2.68版本的漏洞,升級fastjson版本是目前最有效的防範方式。
2、關閉fastjson的autoType功能。關閉fastjson的autoType功能是很好的防範fastjson1.2.68反序列化漏洞的方法。 方法是設置ParserConfig.getGlobalInstance().setAutoTypeSupport(false);
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.parser.ParserConfig; public class TestFastjson { public static void main(String[] args) { ParserConfig.getGlobalInstance().setAutoTypeSupport(false); //關閉fastjson的autoType功能 String jsonString = "{\"@type\":\"com.xxx.XXX\",\"name\":\"xxx\"}"; try { XXX obj = JSON.parseObject(jsonString, XXX.class); } catch (Exception e) { e.printStackTrace(); } } }
3、過濾特殊字符。發現存在非正常的字符或者請求,可以進行過濾特殊字符或者剔除請求,避免攻擊者通過構造特殊數據串進行攻擊。
六、小結
fastjson是一款非常高效的json解析器,但在1.2.68版本之前存在反序列化漏洞。攻擊者可以通過精心構造json字符串來執行惡意代碼,造成系統被攻擊者完全控制。
防範fastjson1.2.68反序列化漏洞需要升級fastjson版本,關閉fastjson的autoType功能或者過濾特殊字符。保障系統安全是每個程序員都應該非常注重的事情。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/153148.html