描述
遠端主機上安裝的 OpenSSL 為 3.0.8 之前版本。因此,它受到拒絕服務 (DoS) 弱點的影響。如果 X.509 憑證包含格式錯誤的原則限制並且已啟用原則處理,則寫入鎖定會遞回進行兩次。在某些作業系統上 (最廣泛的是:Windows),當受影響的處理程序懸置時,這會導致拒絕服務。在公開伺服器上啟用的原則處理不被視為常見設定。將 -policy 引數傳遞至命令行公用程式,或呼叫 X509_VERIFY_PARAM_add0_policy() 或 X509_VERIFY_PARAM_set1_policy() 函式,即可啟用原則處理。
- X.509 GeneralName 中有一個與 X.400 位址處理相關的類型混淆弱點。
X.400 位址被剖析為 ASN1_STRING,但 GENERAL_NAME 的公開結構定義錯誤地將 x400Address 欄位的類型指定為 ASN1_TYPE。此欄位隨後會被 OpenSSL 函式 GENERAL_NAME_cmp 解譯為 ASN1_TYPE,而非 ASN1_STRING。啟用 CRL 檢查時 (即應用程式設定 X509_V_FLAG_CRL_CHECK 旗標),此弱點可能允許攻擊者向 memcmp 呼叫傳遞任意指標,使其能夠讀取記憶體內容或發動拒絕服務攻擊。在大多數情況下,攻擊者需要同時提供憑證鍊和 CRL,兩者都不需要有效的簽章。如果攻擊者只控制其中一個輸入,則另一個輸入必須已包含 X.400 位址作為 CRL 發佈點,此情況並不常見。因此,此弱點最有可能只影響已實作透過網路擷取 CRL 這一功能的應用程式。(CVE-2023-0286)
- 如果 X.509 憑證包含格式錯誤的原則限制並且已啟用原則處理,則寫入鎖定會遞回進行兩次。在某些作業系統上 (最廣泛的是:Windows),當受影響的處理程序懸置時,這會導致拒絕服務。在公開伺服器上啟用的原則處理不被視為常見設定。透過
將 -policy 引數傳遞至命令行公用程式,或呼叫 X509_VERIFY_PARAM_set1_policies() 函式,即可啟用原則處理。更新 (2023 年 3 月 31 日):已根據 CVE-2023-0466 更正原則處理啟用的描述。(CVE-2022-3996)
- 在 X.509 憑證驗證中可觸發緩衝區滿溢,特別是在名稱限制檢查中。請注意,此問題會在憑證鏈簽章驗證之後發生,且需要 CA 簽署惡意憑證,或是即使無法建構受信任的簽發者路徑,應用程式仍需繼續進行憑證驗證。讀取緩衝區滿溢可能導致當機,進而造成拒絕服務攻擊。理論上,這也可能導致私人記憶體內容 (例如私密金鑰或敏感純文字) 洩漏,但截至本公告發佈時,我們尚未發現任何可導致記憶體內容洩漏的有效攻擊。在 TLS 用戶端中,藉由連線至惡意伺服器即可觸發此問題。在 TLS 伺服器中,如果伺服器要求用戶端驗證且惡意用戶端連線,則可觸發此問題。(CVE-2022-4203)
- OpenSSL RSA Decryption 實作中存在計時型旁路,其足可在 Bleichenbacher 式攻擊中跨網路復原純文字。若要成功解密,攻擊者必須能夠傳送大量的試用訊息以進行解密。
此弱點會影響所有 RSA 填補模式:PKCS#1 v1.5、RSA-OEAP 和 RSASVE。例如,在 TLS 連線中,用戶端通常會使用 RSA 將加密的 pre-master 密碼傳送至伺服器。攻擊者若觀察到用戶端與伺服器之間存在真正連線,就可以利用此缺陷將試用訊息傳送至伺服器,並記錄處理這些訊息所用的時間。攻擊者獲得充足的訊息之後,便可復原用於最初連線的 pre-master 密碼,進而能夠解密透過該連線傳送的應用程式資料。(CVE-2022-4304)
- PEM_read_bio_ex() 函式會從 BIO 讀取 PEM 檔案,並剖析和解碼名稱 (例如:
CERTIFICATE)、任何標頭資料和承載資料。如果函式成功運行,則使用包含相關解碼資料之緩衝區的指標填入 name_out、標頭和資料引數。
呼叫者負責釋放這些緩衝區。攻擊者可以建構會產生 0 位元組承載資料的 PEM 檔案。在此情況下,PEM_read_bio_ex() 會傳回失敗程式碼,但會在標頭引數中填入已釋放的緩衝區指標。如果呼叫者也釋放此緩衝區,則會發生雙重釋放。這很可能會導致當機。能夠提供惡意 PEM 檔案進行剖析的攻擊者可利用此弱點發動拒絕服務攻擊。PEM_read_bio() 和 PEM_read() 函式是 PEM_read_bio_ex() 的簡單包裝函式,因此這些函式也會直接受到影響。其他一些 OpenSSL 函式也會間接呼叫這些函式,包括同樣容易遭受攻擊的 PEM_X509_INFO_read_bio_ex() 和 SSL_CTX_use_serverinfo_file()。若在 OpenSSL 內部使用部分此類函式,則不會受到影響,因為如果 PEM_read_bio_ex() 傳回失敗程式碼,呼叫者將不會釋放標頭引數。這些位置包括 PEM_read_bio_TYPE() 函式以及 OpenSSL 3.0 中引入的解碼器。OpenSSL asn1parse 命令行應用程式也受此問題影響。(CVE-2022-4450)
請注意,Nessus 並未測試這些問題,而是僅依據應用程式自我報告的版本號碼作出判斷。
解決方案
升級至 OpenSSL 3.0.8 或更新版本。
Plugin 詳細資訊
代理程式: windows, macosx, unix
支援的感應器: Nessus Agent
風險資訊
媒介: CVSS2#AV:N/AC:H/Au:N/C:C/I:N/A:C
時間媒介: CVSS2#E:U/RL:OF/RC:C
媒介: CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:H
時間媒介: CVSS:3.0/E:U/RL:O/RC:C
弱點資訊
CPE: cpe:/a:openssl:openssl
必要的 KB 項目: openssl/port
可輕鬆利用: No known exploits are available