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