第三方庫漏洞通用解決方案

fastjson近期曝出代碼執行漏洞,惡意用戶可利用此漏洞進行遠程代碼執行,入侵服務器,該漏洞評級爲“高危”。公司要求立即進行版本升級解決該安全漏洞。

那什麼是fastjson呢?

fastjson是阿里巴巴的開源JSON解析庫,它可以解析JSON格式的字符串,支持將Java Bean序列化爲JSON字符串,也可以從JSON字符串反序列化到JavaBean。

那漏洞的修復方案是什麼呢?

針對本次0day缺陷,官方建議升級到1.2.61版本。

那在升級版本前,需要考慮哪些問題呢?

1、兼容性問題:衆所周知,fastjson各版本間存在較大的兼容性問題。諸如1.2.28版本中Content-Type不支持通配符*,1.2.3之後的版本中Map的序列化沒有做排序再輸出,高版本反序列化對list類型的支持等。在此我們可以通過 https://github.com/alibaba/fastjson/wiki/incompatible_change_list 查看已知的不兼容問題,然後通過實際使用場景分析,來有選擇的使用相應的sec01版本。

2、autotype報錯:安全升級包禁用了部分autotype的功能,也就是"@type"這種指定類型的功能會被限制在一定範圍內使用。如果你的使用場景中包括了這個功能,可以通過https://github.com/alibaba/fastjson/wiki/enable_autotype 所示的方法添加白名單或者打開autotype功能。但由於打開autotype之後可能會存在風險,不建議打開,而是使用一個較小範圍的白名單。至於安卓客戶端,目前未發生安全風險,可以暫時不升級。

以上就是開發同學需要在升級版本時考慮的問題。那fastjson升級結束後,測試應該如何入手呢?
1、服務是否能夠正常啓動。

2、因爲fastjson用於Json字符串的序列化及反序列化,可以重點關注遠程調用及相關存儲場景(redis及數據庫存儲)。業務場景可以重點關注登錄、驗籤及其他涉及存儲的場景,通過重點回歸的方式保證升級的正確性。迴歸後需要關注相關應用日誌的異常及相關錯誤。由於涉及存儲場景可以考慮通過新老版本的數據對比的方法,保證新老數據的一致性。

3、內外服務中fastjson的版本一致性,特別是第三方依賴庫及公司外部系統是否有用到fastjson,如有,則需要考慮對應升級。

4、發佈時關注新老服務並存的時候的業務正確性。

5、代碼檢視,是否有用到諸如TreeMap或者List的類型,是否需要保證相關元素的順序性,如有可以構造相對複雜類型對象,提前進行單元測試。

以上是關於fastjson升級過程中,需要考慮的點,希望能給你帶來思考。

其他文章可以關注微信公衆號測試架構師養成記獲取呀。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章