OpenSSL 出現(xiàn)嚴重漏洞,可被用于改變應(yīng)用數(shù)據(jù)
OpenSSL Project 本周正式推出了 OpenSSL 1.1.1l,該版本修補了一個高嚴重性漏洞,該漏洞能夠讓攻擊者改變應(yīng)用程序的行為或?qū)е聭?yīng)用程序崩潰。
該漏洞的 CVE ID 為 CVE-2021-3711,被描述為一個與 SM2 解密有關(guān)的緩沖區(qū)溢出漏洞。
為了解密 SM2 加密的數(shù)據(jù),應(yīng)用程序通常會調(diào)用 API 函數(shù) EVP_PKEY_decrypt()。一般情況下,一個應(yīng)用程序?qū)⒄{(diào)用這個函數(shù)兩次。第一次在進入時,"out" 參數(shù)可以是 NULL,而在退出時,"outlen" 參數(shù)填充了為容納解密明文所需的緩沖區(qū)大小。然后,應(yīng)用程序可以分配一個足夠大的緩沖區(qū),并再次調(diào)用 EVP_PKEY_decrypt(),但這次為 "out" 參數(shù)傳遞一個非 NULL 的值。
SM2 解密代碼實現(xiàn)中的這個漏洞意味著第一次調(diào)用 EVP_PKEY_decrypt() 并計算出的容納明文所需的緩沖區(qū)大小,可能要小于第二次調(diào)用時實際所需的大小。因此當應(yīng)用程序第二次調(diào)用 E VP_PKEY_decrypt() 時,就可能導(dǎo)致緩沖區(qū)溢出。
惡意攻擊者如果能夠向應(yīng)用程序提供 SM2 內(nèi)容進行解密,就能導(dǎo)致攻擊者所選擇的數(shù)據(jù)溢出緩沖區(qū),最多可溢出 62 個字節(jié),從而改變緩沖區(qū)后其他數(shù)據(jù)的內(nèi)容。進一步改變應(yīng)用程序行為或?qū)е聭?yīng)用程序崩潰。
OpenSSL Project 的 Matt Caswell 解釋說:"應(yīng)用程序可能在內(nèi)存中保存有任何一種數(shù)據(jù)(如財務(wù)數(shù)據(jù)、憑證等),如果攻擊者能夠改變它,那引起的后果不堪設(shè)想"。安全研究人員 John Ouyang 表示,這個安全漏洞影響 1.1.1 版本之前的 OpenSSL。
除了上述這個高嚴重性漏洞以外,OpenSSL 還報告了一個 CVE ID 為 CVE-2021-3712 的中等程度漏洞,該漏洞可以被利用進行拒絕服務(wù)(DoS)攻擊。這個問題也已經(jīng)隨著 1.1.1l 版本的發(fā)布得到了修復(fù)。
截止到目前,今天已發(fā)現(xiàn)了五個與 OpenSSL 相關(guān)的漏洞,其中有兩個被評為高嚴重性的漏洞。而在 2020 全年,OpenSSL 只發(fā)現(xiàn)了三個漏洞。