CSSA 獨家預警9.8 超危
fastjson2 autoType白名單校驗缺陷導致遠程代碼執行
漏洞源於fastjson2在默認配置下未啓用SupportAutoType時,其AutoType禁用校驗分支僅使用FNV-1a增量哈希與默認接受哈希進行前綴匹配,命中後不再回校輸入文本是否等同於白名單類名。攻擊者可通過對任意前綴構造FNV chosen-prefix哈希碰撞,將jar:/file:/http:等URL形態類型名注入到JSON請求體的@type字段,使字符串被應用的上下文類加載器加載並解析,最終在服務端觸發任意遠程代碼執行;漏洞利用無需鑑權、無需用户交互、無需目標系統存在已知危險類,僅需攻擊者控制JSON請求體。
組件
fastjson2是阿里巴巴開源的高性能Java JSON序列化與反序列化庫,其架構採用流式解析與增量哈希校驗機制,核心能力涵蓋對象映射、類型自動推斷及AutoType安全策略管控,該組件通過標準化接口支撐高併發業務場景下的數據交換,旨在為分佈式系統與微服務架構提供低延遲、高吞吐的結構化數據編解碼能…
類型
Deserialization of Untrusted Data (CWE-502)
倉庫
github.com/alibaba/fastjson2 · Star 4343
處置建議
- 參考 PR #7695 補丁;補丁在 ContextAutoTypeBeforeHandler 與 ObjectReaderProvider 中新增 acceptNameSet 白名單文本回校,且在類型名包含 ':' 或 '!' 時直接拒絕,從而杜絕 FNV chosen-prefix 哈希碰撞繞過;臨時緩解可通過啓用 SafeMode(JVM 參數 -Dfastjson2.parser.safeMode=true)或改用 noneautotype 版本完全禁用 AutoType,並在 WAF 層攔截請求體中鍵包含 @type 的 JSON 數據;同時建議對反序列化輸入實施嚴格類型白名單、下線不必要的類加載路徑,並結合安全監控(RASP、DAST)對可疑 @type 載荷進行持續檢測。


