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