2022年11月1日,OpenSSL發(fā)布了3.0.7版,以修復(fù)OpenSSL 3.0.x加密庫中的兩個高危漏洞:CVE-2022-3602和CVE-2022-3786。Cloudflare不受這些漏洞的影響,因?yàn)槲覀兊漠a(chǎn)品使用BoringSSL。
這些漏洞是內(nèi)存損壞問題,可被攻擊者利用在受害者的機(jī)器中執(zhí)行任意代碼。CVE-2022-3602最初宣布時被定為嚴(yán)重級別,但后來被降為高級別,因?yàn)檫@個漏洞被認(rèn)為難以通過遠(yuǎn)程代碼執(zhí)行(RCE)利用。與之前OpenSSL用戶幾乎普遍受到攻擊的情況不同,使用其他版本OpenSSL的軟件(例如1.1.1)的軟件不易受到這種攻擊。
這些問題如何影響客戶端和服務(wù)器?
這些漏洞存在于負(fù)責(zé)X.509證書驗(yàn)證的代碼中——大多在客戶端執(zhí)行,用于驗(yàn)證服務(wù)器和提供的證書。要受到這些漏洞的影響,受害者(客戶端或服務(wù)器)需要滿足以下幾個條件:
·惡意證書需要由受害者信任的證書頒發(fā)機(jī)構(gòu)(CA)簽名。
·受害者需要驗(yàn)證惡意證書,或忽略來自瀏覽器的一系列警告。
·受害者需要運(yùn)行3.0.7以前的OpenSSL 3.0.x版本。
客戶端受到這個漏洞影響的條件是,訪問一個惡意站點(diǎn),且后者提供的證書包含利用漏洞的有效負(fù)載。此外,該惡意證書必須由受信任的證書頒發(fā)機(jī)構(gòu)(CA)簽名。
如果運(yùn)行受影響版本OpenSSL的服務(wù)器支持雙向驗(yàn)證(在此情況下,客戶端和服務(wù)器均提供一個有效和簽名的X.509證書,且客戶端能向服務(wù)器提交一個帶有利用負(fù)載的證書),則服務(wù)器可受到攻擊。
應(yīng)該如何處理這個問題?
如果你正在管理運(yùn)行OpenSSL的服務(wù),你應(yīng)該給存在漏洞的OpenSSL包進(jìn)行修補(bǔ)。在Linux系統(tǒng)上,可以使用lsof命令確定是否有進(jìn)程動態(tài)加載OpenSSL。如下示例中,發(fā)現(xiàn)NGINX正在使用OpenSSL。
root@55f64f421576:/#lsof|grep libssl.so.3nginx 1294 root mem REG 254,1 925009/usr/lib/x86_64-linux-gnu/libssl.so.3(path dev=0,142)
一旦Linux發(fā)行版的包維護(hù)者發(fā)布OpenSSL 3.0.7,你就可以通過更新包源和升級libssl3包來進(jìn)行修補(bǔ)。在Debian和Ubuntu上,這可以通過apt-get upgrade命令來完成
root@55f64f421576:/#apt-get--only-upgrade install libssl3
盡管如此,你有可能正在運(yùn)行一個受影響版本的OpenSSL,但lsof命令無法發(fā)現(xiàn),因?yàn)槟愕倪M(jìn)程是靜態(tài)編譯的。必須對你負(fù)責(zé)的靜態(tài)編譯軟件進(jìn)行更新,并確保在未來幾天內(nèi)更新你的操作系統(tǒng)和其他安裝的軟件,其中可能包含易受攻擊的OpenSSL版本。
關(guān)鍵要點(diǎn)
Cloudflare使用BoringSSL,因而確信在漏洞發(fā)布日期之前,該問題不會對我們造成影響。
更普遍而言,該漏洞提醒人們,內(nèi)存安全仍然是一個重要問題。這個問題可能難以被利用,因?yàn)樗枰粋€惡意制作并由受信任CA簽名的證書,而證書頒發(fā)機(jī)構(gòu)很可能將開始驗(yàn)證其簽名的證書不包含利用這些漏洞的有效負(fù)載。然而,鑒于問題的嚴(yán)重性,打補(bǔ)丁并將易受攻擊的OpenSSL包升級到OpenSSL 3.0.7仍然很重要。