Fastjson反序列化遠端程式碼執行漏洞產生原因及修復建議
Fastjason是阿里巴巴的開源JSON解析庫,它可以解析JSON格式的字串,支援將Java Bean序列化為JSON字串,也可以從JSON字串反序列化到JavaBean。由於其序列化jason檔案速度快且中文文件非常全面,所以為國內廣大開發人員所應用。
fastjson是目前java語言中最快的json庫,比自稱最快的jackson速度要快。
第三方獨立測試結果可參考:
一、漏洞產生原因:
Fastjson使用黑白名單用於防禦反序列化漏洞,並允許使用者在輸入JSON串時通過“@type”鍵對應的value指定任意反序列化類名。在特定條件下可繞過預設autoType關閉限制,攻擊遠端伺服器,風險影響較大(也就是通常所指的“Gadget”)。
二、受影響的版本:
特定依賴存在下影響 ≤1.2.80
三、漏洞等級:
風險評級:高危
四、官方修復方案:
1. 升級到1.2.83版本
從原始碼可以看到:
- 該版本原始碼刪除了很多白名單對應的hash;
- checkAutoType(String typeName, Class<?> expectClass, int features)方法,新增了新的校驗包含mask和autoTypeSupport,用來規避未經驗證的autoType的注入。
2. 原來1.2.68以後到1.2.80的版本:開啟配置safeMode,讓白名單和黑名單都不支援autoType,從而可杜絕反序列化Gadgets類變種攻擊。
在1.2.68版本中,fastjson增加了safeMode的支援。safeMode開啟後,完全禁用autoType。所有的安全修復版本sec10也支援SafeMode配置。
開啟SafeMode功能(1.2.68之後的版本)
有三種配置SafeMode方式,如下:
①在程式碼中配置
ParserConfig.getGlobalInstance().setSafeMode(true);
注意,如果使用new ParserConfig的方式,需要注意單例處理,否則會導致低效能full gc。
②加上JVM啟動引數
-Dfastjson.parser.safeMode=true
如果有多個包名字首,用逗號隔開
③通過fastjson.properties檔案配置。
通過類路徑的fastjson.properties檔案來配置,配置方式如下:
fastjson.parser.safeMode=true
safeMode場景如何做autoType
在1.2.68之後的版本,提供了AutoTypeCheckHandler擴充套件,可以自定義類接管autoType, 通過ParserConfig#addAutoTypeCheckHandler方法註冊。
怎麼判斷是否用到了autoType
看序列化的程式碼中是否用到了SerializerFeature.WriteClassName
JSON.toJSONString(obj, SerializerFeature.WriteClassName); // 這種使用會產生@type
使用JSONType.autoTypeCheckHandler
在fastjson 1.2.71版本中,提供了通過JSONType配置autoTypeCheckHandler的方法,比如:
來源:
中科天齊 漏洞治理專家
中科天齊由中科院研究員李煉博士創立,以自主研究成果WuKong靜態軟體安全測試工具為主打產品,團隊憑藉多年在程式分析領域的技術積累,致力打造安全漏洞治理領域新生態的高新技術企業。
WuKong靜態軟體安全測試工具
WuKong是一款國產信創SAST產品,採用自主專利技術的程式分析引擎,多種創新性的靜態分析技術,結合深度學習和人工智慧等多種方法,能夠對軟體程式碼進行全方位的 安全掃描和安全分析。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70000012/viewspace-2898407/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 高危漏洞!Apache Log4j 遠端程式碼執行漏洞(附修復建議)Apache
- 關於fastjson出現反序列化遠端程式碼執行漏洞的通知ASTJSON
- 高危!Fastjson反序列化遠端程式碼執行漏洞風險通告,請儘快升級ASTJSON
- Weblogic遠端程式碼執行漏洞(CVE-2020-14750)修復方案Web
- RCE(遠端程式碼執行漏洞)原理及漏洞利用
- Chrome 77釋出,修復遠端程式碼執行漏洞!請儘快更新!Chrome
- VxWorks釋出安全更新修復多個高危遠端程式碼執行漏洞
- 核彈級漏洞——Apache Log4j 2 遠端程式碼執行漏洞事件詳情及修復方式Apache事件
- ThinkPHP遠端程式碼執行漏洞PHP
- phpunit 遠端程式碼執行漏洞PHP
- Windows漏洞:MS08-067遠端程式碼執行漏洞復現及深度防禦Windows
- CVE-2019-1181 windows遠端桌面程式碼執行漏洞詳情與修復方案Windows
- ThinkPHP 5.0.23 遠端程式碼執行漏洞PHP
- OpenWRT 曝遠端程式碼執行漏洞
- Joomla遠端程式碼執行漏洞分析OOM
- 最新漏洞:Spring Framework遠端程式碼執行漏洞SpringFramework
- Fastjson 1.2.24遠端程式碼執行漏洞(com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl)ASTJSONApache
- WindowsJScript元件曝遠端程式碼執行漏洞WindowsJS元件
- .NET Remoting 遠端程式碼執行漏洞探究REM
- 什麼是遠端程式碼執行漏洞?
- Apache Kylin遠端程式碼執行漏洞復現(CVE-2020-1956)Apache
- Apache log4j2 遠端程式碼執行漏洞復現?Apache
- PHPMailer遠端命令執行漏洞復現PHPAI
- Fastjson 程式碼執行漏洞 CVE-2022-25845ASTJSON
- Fastjson反序列化漏洞復現ASTJSON
- phpcms網站漏洞修復遠端程式碼寫入快取漏洞利用PHP網站快取
- Tomcat CGIServlet enableCmdLineArguments遠端程式碼執行_CVE-2019-0232漏洞復現TomcatServlet
- CVE-2017-7269 IIS6.0遠端程式碼執行漏洞復現
- Discuz! X系列遠端程式碼執行漏洞分析
- PHP CGI Windows下遠端程式碼執行漏洞PHPWindows
- log4j遠端程式碼執行漏洞
- crash_for_windows_pkg遠端程式碼執行漏洞Windows
- OGNL設計及使用不當造成的遠端程式碼執行漏洞
- 谷歌修復Android嚴重遠端程式碼執行漏洞,無需使用者互動即可利用谷歌Android
- Apache Struts 再曝高危遠端程式碼執行漏洞Apache
- 四款D-Link路由器爆遠端執行程式碼漏洞,且不可修復路由器行程
- [漏洞預警]Laravel <= 8.4.2 Debug模式 _ignition 遠端程式碼執行漏洞Laravel模式
- Fastjson1.2.24反序列化漏洞復現ASTJSON