再爆安全漏洞,此次輪到Jackson了,竟由阿里雲上報

冤冤相報什麼時候了,得饒人處且饒人。本文已被 https://www.yourbatman.cn 收錄,裏面一併有Spring技術棧、MyBatis、JVM、中間件等小而美的 專欄供以避免費學習。關注公衆號【 BAT的烏托邦】逐個擊破,深刻掌握,拒絕淺嘗輒止。

✍前言

你好,我是YourBatman。git

今天中午收到我司安所有發了一封郵件:Jackson存在安全漏洞。查了一下,這件事並不算很新鮮了(已通過了10天的樣子),本文來聊聊吧。github

提及來還蠻戲劇化:阿里雲向Jackson官方提交了一個Jackson序列化安全漏洞。衆所周知,在國內關於JSON庫使用有兩大主要陣營:國際著名的Jackson庫國內阿里巴巴出品的Fastjsonweb

一樣的功能定位,不存在競爭想一想也以爲不可能嘛。因此當我看到這個漏洞竟是阿里雲上報的,就以爲這關係還蠻微妙呢,默默的腹黑了3秒鐘,哈哈。json

附:FasterXML/jackson-databind是一個簡單基於Java應用庫,Jackson能夠輕鬆的將Java對象轉換成json對象和xml文檔,一樣也能夠將json、xml轉換成Java對象。Jackson是美國FasterXML公司的一款適用於Java的數據處理工具。jackson-databind是其中的一個具備數據綁定功能的組件。
segmentfault

✍正文

熟悉A哥的小夥伴知道,自從Fastjson上次爆出重大安全漏洞以後,我完全的投入到了Jackson的陣營,工做中也慢慢去Fastjson化。這不還專門撰寫了一篇文章來講明此事:Fastjson到了說再見的時候了。爲了順利完成「遷移」,我還專門寫了一個,也有多是全網惟一一個Jackson專欄,雖然很小衆但就是幹了~安全

關於本次漏洞

2020年8月25日,jackson-databind(官方)發佈了Jackson-databind序列化漏洞的安全通告,漏洞編號爲CVE-2020-24616。app

漏洞詳情

該漏洞源於不安全的反序列化。遠程攻擊者可經過精心構造的惡意載荷利用該漏洞在系統執行任意代碼。工具

其實上它的底層原理是利用某些類的反序列化利用鏈,能夠繞過 jackson-databind 黑名單限制,遠程攻擊者經過向使用該組件的web服務接口發送特製請求包(精心構造的JSON),能夠形成遠程代碼執行影響。post

漏洞評級

評定方式 等級
威脅等級 高危
影響面 有限
漏洞評分 75

對此評級沒有概念?那就來個參照物比一比嘛,我把Fastjson上次(2020-05)的安全漏洞評級給你作對比:學習

評定方式 等級
威脅等級 高危
影響面 普遍
漏洞評分 75

有限和普遍的的區別到底有多大,用文字不太好描述。打個比方,我以爲可類比艾滋病和新冠病毒的區別,前者對社會生態影響並不大,然後者巴不得讓全球都停擺了,即便它致死率還遠沒有前者那麼高,這就是影響範圍的「力量」。

影響版本

jackson-databind < 2.9.10.6

由於如今你們都基於Spring Boot開發,針對版本號我擴展一下,方便你對號入座哈:

Spring Boot版本 Jackson版本
1.5.22.RELEASE 2.8.x
2.0.9.RELEASE 2.9.x
2.1.16.RELEASE 2.9.10.5
2.2.9.RELEASE 2.10.x
2.3.3.RELEASE 2.11.x

Spring Boot2.1.x應該是現行主流使用版本,所以從版本號上來看,大機率都在這次漏洞的射程範圍內。

安全版本

jackson-databind 2.9.10.6或者2.10.x及之後版本

故事時間軸

2020-08-05,阿里雲安全組同窗向Jackson官方上報了這個安全漏洞:

當天,官方回覆預計會在8-15左右發佈bug修復版本修復次問題(waht?知道問題了還得10後修復?):

可結果是10天都不止。直到8.25這天,Jackson發佈2.9.10.6版本修復了此問題,並向外界發公告公佈此漏洞:

從8.5號Jackson官方知曉此漏洞,到8.25號最終發版解決此問題,整整20天,爲什麼須要這麼久?我想真像只有一個:此漏洞影響真的不大,或者說影響範圍較窄。回憶下上次Fastjson出現的那個安全漏洞,24h內就給與了修復版本,並非由於咱們反映迅速,而是由於影響重大等不了...

修復建議

一股腦的所有升級到2.9.10.6或以上版本固然能規避此安全問題,可是你是否想過,你負責多少個服務?你團隊、公司一共有多少個服務?你品,你細品,頭大嗎?

從官方對這次漏洞作出的反射弧時間來看,本次漏洞影響是相對較小的,所以我總結了下修復建議,假若你同時知足以下三個條件,那麼須要立馬修復,不然可暫不理會:

  1. 對公網提供API接口
  2. Jackson版本小於2.9.10.6
  3. 工程內使用(或者引入)以下4個類任意一個:

    1. br.com.anteros.dbcp.AnterosDBCPDataSource
    2. com.pastdev.httpcomponents.configuration.JndiConfiguration
    3. com.nqadmin.rowset.JdbcRowSetImpl
    4. org.arrah.framework.rdbms.UpdatableJdbcRowsetImpl

條件3的理論支撐是我對比2.9.10.6版本release改動源碼 + 我和我司安全組人員的討論結果。修復方案也僅僅是在黑名單裏新增了這4個類,截圖以下:

✍總結

外行看熱鬧,內行看門道。千萬不能說Fastjson出了個漏洞,Jackson也來一個就得出結論說打平手了,那會稍顯外行。正所謂假設能夠大膽,但當心求證,下結論須要謹慎。

總的來講,這次漏洞影響甚小,不用大驚小怪,我就繼續個人Jackson之旅啦。

✔推薦閱讀:

♥關注A哥♥

Author A哥(YourBatman)
我的站點 www.yourbatman.cn
E-mail yourbatman@qq.com
微 信 fsx641385712
活躍平臺
公衆號 BAT的烏托邦(ID:BAT-utopia)
知識星球 BAT的烏托邦
每日文章推薦 每日文章推薦

BAT的烏托邦

相關文章
相關標籤/搜索