首頁>技術>

0x00 漏洞背景

2019年9月5日,fastjson在commit 995845170527221ca0293cf290e33a7d6cb52bf7上提交了旨在修復當字串中包含\\\\x轉義字元時可能引發OOM的問題的修復。

360CERT 判斷該漏洞危害中。影響面較大。攻擊者可以通過傳送構造好的請求而致使當前執行緒癱瘓,當傳送的惡意請求過多時有可能使業務直接癱瘓。

建議廣大使用者對自身的業務/產品進行元件自查,確認fastjson版本至少升級到1.2.60

0x01 漏洞詳情

漏洞的關鍵點在com.alibaba.fastjson.parser.JSONLexerBase#scanString中,當傳入json字串時,fastjson會按位獲取json字串,當識別到字串為\\\\x為開頭時,會預設獲取後兩位字元,並將後兩位字元與\\\\x拼接將其變成完整的十六進位制字元來處理:

而當json字串是以\\\\x結尾時,由於fastjson並未對其進行校驗,將導致其繼續嘗試獲取後兩位的字元。也就是說會直接獲取到\\\\u001A也就是EOF:

當fastjson再次向後進行解析時,會不斷重複獲取EOF,並將其寫到記憶體中,直到觸發oom錯誤:

最終效果為:

0x02 影響版本

fastjson < 1.2.60版本

0x03 修復建議1.1.15~1.1.31版本更新到1.1.31.sec07版本1.1.32~1.1.33版本更新到1.1.33.sec06版本1.1.34 版本更新到1.1.34.sec06版本1.1.35~1.1.46版本更新到1.1.46.sec06版本1.2.3~1.2.7版本更新到1.2.7.sec06版本或1.2.8.sec04版本1.2.8 版本更新到1.2.8.sec06版本1.2.9~1.2.29 版本更新到1.2.29.sec06版本0x04 時間線

2019-09-03 fastjson提交修補commit

2019-09-05 360CERT釋出預警

2019-09-07 週末加班升級!

PS:jackson最近也釋出了多個版本進行漏洞修復。

88

JSON

  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 面試經常問你什麼是PHP垃圾回收機制?