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