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

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

✍前言

你好,我是YourBatman。web

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

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

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

附:FasterXML/jackson-databind是一個簡單基於Java應用庫,Jackson能夠輕鬆的將Java對象轉換成json對象和xml文檔,一樣也能夠將json、xml轉換成Java對象。Jackson是美國FasterXML公司的一款適用於Java的數據處理工具。jackson-databind是其中的一個具備數據綁定功能的組件。
再爆安全漏洞,此次輪到Jackson了,竟由阿里雲上報app

✍正文

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

關於本次漏洞

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

漏洞詳情

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

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

漏洞評級

評定方式 等級
威脅等級 高危
影響面 「有限」
漏洞評分 75
對此評級沒有概念?那就來個參照物比一比嘛,我把Fastjson上次(2020-05)的安全漏洞評級給你作對比:component

評定方式 等級
威脅等級 高危
影響面 「普遍」
漏洞評分 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官方上報了這個安全漏洞:
再爆安全漏洞,此次輪到Jackson了,竟由阿里雲上報
當天,官方回覆預計會在8-15左右發佈bug修復版本修復次問題(waht?知道問題了還得10後修復?):
再爆安全漏洞,此次輪到Jackson了,竟由阿里雲上報
可結果是10天都不止。直到8.25這天,Jackson發佈2.9.10.6版本修復了此問題,並向外界發公告公佈此漏洞:
再爆安全漏洞,此次輪到Jackson了,竟由阿里雲上報
從8.5號Jackson官方知曉此漏洞,到8.25號最終發版解決此問題,「整整20天」,爲什麼須要這麼久?我想真像只有一個:此漏洞影響真的不大,或者說影響範圍較窄。回憶下上次Fastjson出現的那個安全漏洞,24h內就給與了修復版本,並非由於咱們反映迅速,而是由於影響重大等不了...

修復建議

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

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

  1. 對公網提供API接口
  2. Jackson版本小於2.9.10.6
  3. 工程內「有」使用(或者引入)以下4個類任意一個:
    a,br.com.anteros.dbcp.AnterosDBCPDataSource
    b.com.pastdev.httpcomponents.configuration.JndiConfiguration
    c.com.nqadmin.rowset.JdbcRowSetImpl
    d.org.arrah.framework.rdbms.UpdatableJdbcRowsetImpl

條件3的理論支撐是我對比2.9.10.6版本release改動源碼 + 我和我司安全組人員的討論結果。修復方案也僅僅是在黑名單裏新增了這4個類,截圖以下:
再爆安全漏洞,此次輪到Jackson了,竟由阿里雲上報

✍總結

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

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

✔推薦閱讀:

  • Fastjson到了說再見的時候了
    1. 初識Jackson -- 世界上最好的JSON庫
    1. 媽呀,Jackson原來是這樣寫JSON的
    1. 懂了這些,方敢在簡歷上說會用Jackson寫JSON
    1. JSON字符串是如何被解析的?JsonParser瞭解一下
    1. JsonFactory工廠而已,還蠻有料,這是我沒想到的
    1. 二十不惑,ObjectMapper使用也再也不迷惑
    1. Jackson用樹模型處理JSON是必備技能,不信你看

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

關注A哥,開啓專欄式學習
再爆安全漏洞,此次輪到Jackson了,竟由阿里雲上報再爆安全漏洞,此次輪到Jackson了,竟由阿里雲上報

掃碼關注後,回覆「專欄」進入更多Spring專欄學習
右側爲私人微信(加好友備註:Java入羣)
我的站點(本文已收錄):https://www.yourbatman.cn

相關文章
相關標籤/搜索