GLSA-202210-02:OpenSSL:多個弱點

critical Nessus Plugin ID 166162

語系:

描述

遠端主機受到 GLSA-202210-02 中所述的弱點影響 (OpenSSL:多個弱點)

- Raccoon 攻擊惡意利用了 TLS 規格中的一個瑕疵,可導致攻擊者能夠在使用 Diffie-Hellman (DH) 型加密套件的連線中計算 pre-master 密碼。在這種情況下,這會導致攻擊者能夠竊聽透過該 TLS 連線傳送的所有加密通訊。只有當實作在多個 TLS 連線中重複使用 DH 密碼時,才能惡意利用此攻擊。請注意,此問題只會影響 DH 加密套件,而不會影響 ECDH 加密套件。
此問題會影響 OpenSSL 1.0.2 ,其不再支援且不再接收公開更新。OpenSSL 1.1.1 不受此問題影響。已在 OpenSSL 1.0.2w 中修復 (受影響的是 1.0.2-1.0.2v)。(CVE-2020-1968)

- 為了解密 SM2 加密資料,應用程式應呼叫 API 函式 EVP_PKEY_decrypt()。通常,應用程式會呼叫此函式兩次。第一次進入時,out 參數可以是 NULL,而在結束時,outlen 參數會填入保留解密純文字所需的緩衝區大小。然後,應用程式可以配置足夠大的緩衝區,並再次呼叫 EVP_PKEY_decrypt(),但這次會為 out 參數傳遞一個非 NULL 值。SM2 解密程式碼實作中有一個錯誤,表示保留第一次呼叫 EVP_PKEY_decrypt() 傳回的純文字所需的緩衝區大小計算結果可能小於第二次呼叫所需的實際大小。當應用程式使用過小的緩衝區第二次呼叫 EVP_PKEY_decrypt() 時,這可導致緩衝區溢位。能夠向應用程式呈現 SM2 解密內容的惡意攻擊者可造成攻擊者選擇的資料溢出緩衝區最多 62 個位元組,進而改變保留在緩衝區之後的其他資料內容,這可能會改變應用程式行為或造成應用程式損毀。緩衝區的位置與應用程式相關,但通常是配置的堆積。已在 OpenSSL 1.1.1l 中修正 (受影響的是 1.1.1-1.1.1k)。
(CVE-2021-3711)

- 在 OpenSSL 內部,ASN.1 字串以 ASN1_STRING 結構表示,其中包含一個保留字串資料的緩衝區,以及一個保留緩衝區長度的欄位。與此相對照的是,一般 C 字串表示為以 NUL (0) 位元組結束的字串資料緩衝區。雖然不是嚴格要求,但使用 OpenSSL 自己的 d2i 函式 (和其他類似剖析函式) 剖析 ASN.1 字串,以及已使用 ASN1_STRING_set() 函式設定值的任何字串,都會以額外的 NUL 結束 ASN1_STRING 結構中的位元組陣列。但是,應用程式可以透過直接設定 ASN1_STRING 陣列中的資料和長度欄位,直接建構非以 NUL 結束位元組陣列的有效 ASN1_STRING 結構。使用 ASN1_STRING_set0() 函式也可發生此情況。目前發現多個列印 ASN.1 資料的 OpenSSL 函式會假設 ASN1_STRING 位元組陣列將以 NUL 結束,但直接建構的字串並不一定如此。若應用程式要求列印 ASN.1 結構,且該 ASN.1 結構包含由應用程式直接建構的 ASN1_STRING,並且非以 NUL 結束資料欄位,則可能發生讀取緩衝區滿溢。在處理憑證的名稱限制期間也會發生同樣的情況 (例如,如果憑證是由應用程式直接建構,而非透過 OpenSSL 剖析函式載入,且憑證包含非以 NUL 結束的 ASN1_STRING 結構)。X509_get1_email()、X509_REQ_get1_email() 和 X509_get1_ocsp() 函式中也可能發生此情況。如果惡意執行者可造成應用程式直接建構 ASN1_STRING,然後透過其中一個受影響的 OpenSSL 函式加以處理,則可能會發生此問題。這可能會導致當機 (造成拒絕服務攻擊)。
也可能導致私密記憶體內容 (例如私密金鑰或敏感的純文字) 洩漏。已在 OpenSSL 1.1.1l 中修正 (受影響的是 1.1.1-1.1.1k)。已在 OpenSSL 1.0.2za 中修正 (受影響的是 1.0.2-1.0.2y)。(CVE-2021-3712)

- MIPS32 和 MIPS64 平方程序中有一個進位傳送錯誤。許多 EC 演算法都受到影響,包括某些 TLS 1.3 預設曲線。未詳細分析影響的原因在於,無法滿足攻擊的各項先決條件,而且涉及到重複使用私密金鑰。分析資料指出,因此缺陷而對 RSA 與 DSA 所發動的攻擊極難執行,而且可能性不高。對 DH 發動攻擊是可行的 (但難度極高),因為推算私密金鑰相關資訊所需的多數工作可以於離線執行。此類攻擊所需的資源量極大。但是,若要成功在 TLS 上發起攻擊,伺服器必須在多個用戶端之間共用 DH 私密金鑰 (自 CVE-2016-0701 版本以來,已不提供此選項)。OpenSSL 1.0.2、 1.1.1 和 3.0.0 會受到此問題影響。此問題已在 2021 年 12 月 15 日發布的 1.1.1m 和 3.0.1 版中解決。針對 1.0.2 版本,此問題已在僅提供給高級支援客戶的 git commit 6fc1aaaf3 中解決。發布 1.0.2zc 版本時,將提供 git commit 6fc1aaaf3。此問題僅影響 MIPS 平台上的 OpenSSL。已在 OpenSSL 3.0.1 中修正 (受影響的是 3.0.0)。已在 OpenSSL 1.1.1m 中修正 (受影響的是 1.1.1-1.1.1l)。已在 OpenSSL 1.0.2zc-dev 中修正 (受影響的是 1.0.2-1.0.2zb)。(CVE-2021-4160)

- BN_mod_sqrt() 函式專用於計算模組化平方根,其中包含一個可導致其針對非質數模數永遠執行迴圈的錯誤。在內部剖析包含壓縮形式的橢圓曲線公開金鑰或具有以壓縮形式編碼之基點的顯式橢圓曲線參數時,會使用此函式。透過建構具有無效顯式曲線參數的憑證,可能會觸發無限迴圈。由於憑證剖析發生在驗證憑證簽章之前,因此任何剖析外部提供之憑證的處理程序都可能遭受拒絕服務攻擊。也可以在剖析建構的私密金鑰時造成無限迴圈,因為這些金鑰中可能包含顯式橢圓曲線參數。因此,易受攻擊的情況包括:- 使用伺服器憑證的 TLS 伺服器 - 使用用戶端憑證的 TLS 伺服器 - 從客戶處取得憑證或私密金鑰的主機供應商 - 剖析來自使用者憑證要求的認證機構 - 剖析 ASN.1 橢圓曲線參數的任何其他應用程式,以及使用 BN_mod_sqrt() 的任何其他應用程式 (其中攻擊者可控制容易受到此 DoS 問題影響的參數值)。在 OpenSSL 1.0.2 版本中,最初剖析憑證期間並未剖析公開金鑰,進而導致觸發無限迴圈變得略微困難。不過,任何需要憑證公開金鑰的作業都會觸發無限迴圈。特別是,攻擊者可在驗證憑證簽章期間使用自我簽署憑證觸發迴圈。OpenSSL 1.0.2、 1.1.1 和 3.0 會受到此問題影響。此問題已在 2022 年 3 月 15 日發布的 1.1.1n 和 3.0.2 版本中得到解決。已在 OpenSSL 3.0.2 中修正 (受影響的是 3.0.0、3.0.1)。已在 OpenSSL 1.1.1n 中修正 (受影響的是 1.1.1-1.1.1m)。已在 OpenSSL 1.0.2zd 中修正 (受影響的是 1.0.2-1.0.2zc)。(CVE-2022-0778)

- c_rehash 指令碼未正確清理殼層中繼字元以防止命令插入。某些作業系統會以自動執行的方式發佈此指令碼。在這類作業系統上,攻擊者可以透過指令碼的權限執行任意命令。c_rehash 指令碼的使用已過時,應由 OpenSSL rehash 命令行工具取代。
已在 OpenSSL 3.0.3 中修正 (受影響的是 3.0.0、3.0.1、3.0.2)。已在 OpenSSL 1.1.1o 中修正 (受影響的是 1.1.1-1.1.1n)。
已在 OpenSSL 1.0.2ze 中修正 (受影響的是 1.0.2-1.0.2zd)。(CVE-2022-1292)

- OPENSSL_LH_flush() 函式可清空雜湊表,其中包含一個錯誤,會中斷已移除雜湊表項目佔用的記憶體重複使用。解碼憑證或金鑰時會使用此函式。如果長效處理程序定期解碼憑證或金鑰,其記憶體使用量將會無限擴充,處理程序可能會被作業系統終止,進而造成拒絕服務。
此外,遊走空雜湊表項目將會越來越耗時間。通常這類長效處理程序可能是設為接受用戶端憑證驗證的 TLS 用戶端或 TLS 伺服器。函式已在 OpenSSL 3.0 版中新增,因此舊版不受此問題影響。已在 OpenSSL 3.0.3 中修正 (受影響的是 3.0.0、3.0.1、3.0.2)。(CVE-2022-1473)

- 在某些情況下,使用 AES-NI 組件最佳化實作的 32 位元 x86 平台的 AES OCB 模式將不會加密完整的資料。這可能會洩漏預先存在於未寫入記憶體中的 16 位元組資料。在就地加密的特殊情況下,會洩漏純文字的 16 位元組。由於 OpenSSL 不支援適用於 TLS 和 DTLS 的 OCB 型加密套件,因此兩者均不受影響。已在 OpenSSL 3.0.5 中修正 (受影響的是 3.0.0-3.0.4)。已在 OpenSSL 1.1.1q 中修正 (受影響的是 1.1.1-1.1.1p)。(CVE-2022-2097)

請注意,Nessus 並未測試這些問題,而是僅依據應用程式自我報告的版本號碼作出判斷。

解決方案

所有 OpenSSL 使用者皆應升級至最新版本:

# emerge --sync # emerge --ask --oneshot --verbose >=dev-libs/openssl-1.1.1q

另請參閱

https://security.gentoo.org/glsa/202210-02

https://bugs.gentoo.org/show_bug.cgi?id=741570

https://bugs.gentoo.org/show_bug.cgi?id=809980

https://bugs.gentoo.org/show_bug.cgi?id=832339

https://bugs.gentoo.org/show_bug.cgi?id=835343

https://bugs.gentoo.org/show_bug.cgi?id=842489

https://bugs.gentoo.org/show_bug.cgi?id=856592

Plugin 詳細資訊

嚴重性: Critical

ID: 166162

檔案名稱: gentoo_GLSA-202210-02.nasl

版本: 1.3

類型: local

已發布: 2022/10/16

已更新: 2022/12/5

風險資訊

VPR

風險因素: High

分數: 7.4

CVSS v2

風險因素: Critical

基本分數: 10

時間分數: 7.8

媒介: AV:N/AC:L/Au:N/C:C/I:C/A:C

時間媒介: E:POC/RL:OF/RC:C

CVSS 評分資料來源: CVE-2022-1292

CVSS v3

風險因素: Critical

基本分數: 9.8

時間分數: 8.8

媒介: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

時間媒介: E:P/RL:O/RC:C

弱點資訊

CPE: p-cpe:/a:gentoo:linux:openssl, cpe:/o:gentoo:linux

必要的 KB 項目: Host/local_checks_enabled, Host/Gentoo/release, Host/Gentoo/qpkg-list

可輕鬆利用: No known exploits are available

修補程式發佈日期: 2022/10/16

弱點發布日期: 2020/9/9

參考資訊

CVE: CVE-2020-1968, CVE-2021-3711, CVE-2021-3712, CVE-2021-4160, CVE-2022-0778, CVE-2022-1292, CVE-2022-1473, CVE-2022-2097

CEA-ID: CEA-2021-0004