Hutool證書驗證漏洞 CVE-2022-22885

0x01 概述
Hutool 是一個Java工具庫,提供了豐富的工具和方法,方便開發(fā)者在Java應(yīng)用程序中進行各種常見任務(wù)的處理。它具有簡單易用、功能豐富、性能優(yōu)越等特點,被廣泛用于Java開發(fā)中。
筆者通過對數(shù)百個真實項目引入組件的分析選出了該組件的常見漏洞進行分析。本次分析的是CVE-2022-22885,Hutool-http執(zhí)行HttpRequest操作時的證書驗證漏洞
0x02 組件使用場景
Hutool-http組件是基于HttpUrlConnection的Http客戶端封裝 。其中的HttpRequest類有發(fā)送Http請求的功能。
0x03 漏洞信息
3.1 漏洞簡介
漏洞名稱:證書驗證漏洞
漏洞編號:CVE-2022-22885
漏洞類型:CWE-295 證書驗證不正確
CVSS評分:CVSS v3.1:9.8
漏洞危害等級:超危
3.2 漏洞概述
該庫的HttpRequest類默認的HostnameVerifier信任所有的hostname,并不對服務(wù)器證書進行校驗。
3.3 漏洞利用條件
使用Hutool默認的HostnameVerifier。
3.4 影響版本
Hutool < 5.7.19
3.5 漏洞分析
該漏洞是證書驗證漏洞,該漏洞會導(dǎo)致服務(wù)器遭受中間人攻擊從而造成信息泄露等問題。若泄露的信息涉及密鑰等可供驗證的內(nèi)容,會導(dǎo)致密鑰對應(yīng)設(shè)備被入侵。
該漏洞產(chǎn)生的原因在于Hutool HttpUtil的setInfo函數(shù)傳入的hostNameVerfier默認的為TRUST_ANY_HOSTNAME_VERIFIER。

其恒返回true。

HostnameVerifier是一種fallback機制,當要連接的host與服務(wù)端證書server name不匹配進行調(diào)用。Hutool默認放行所有這類請求。故而服務(wù)器易遭受不安全站點的攻擊。
3.6 漏洞復(fù)現(xiàn)
1.使用未封裝的Java函數(shù)請求不安全頁面
Java自帶HttpsURLConnection訪問hostname與證書不匹配時報錯。

2.使用Hutool的HttpRequest類訪問不安全頁面
成功返回頁面內(nèi)容。

3.7 漏洞修復(fù)
使用自定義的HostnameVerifier
使用自定義的HostnameVerifier對證書主體名稱和hostname進行校驗。

修復(fù)后,如下圖所示,在執(zhí)行Https請求時,程序會自動校驗hostname和從證書獲取的主體名稱。具體需要根據(jù)請求URL改變傳入hostname.equals(),principalName.equals()。如此就不會遭受證書域名不匹配的不安全站點的攻擊。

該修復(fù)方案需要根據(jù)請求URL的hostname和證書信息配置verify代碼。
安全工程師:hu1y40
2023 年 8 月 25?日晚?
?作者:洞源實驗室

??
Hutool證書驗證漏洞 CVE-2022-22885的評論 (共 條)
