Juniper Junos OS 多個弱點 (JSA69715)

high Nessus Plugin ID 166767

概要

遠端裝置缺少廠商提供的安全性修補程式。

說明

遠端主機上安裝的 Junos OS 版本受到 JSA69715 公告中提及的多個弱點影響。

- 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)

- X.509 GeneralName 類型是用於代表不同類型名稱的泛型類型。其中一種名稱類型稱為 EDIPartyName。OpenSSL 會提供一個 GENERAL_NAME_cmp 函式,該函式可比較 GENERAL_NAME 的不同執行個體,判斷其是否相等。兩個 GENERAL_NAME 都包含 EDIPARTYNAME 時,此函式的行為不正確。可能發生 NULL 指標解除參照和損毀問題,進而可能導致拒絕服務攻擊。出於以下兩個目的,OpenSSL 本身會使用 GENERAL_NAME_cmp 函式:1) 比較可用 CRL 和內嵌在 X509 憑證中的 CRL 發佈點之間的 CRL 發佈點名稱 2) 驗證時間戳記回應 token 簽署者是否符合時間戳記授權單位名稱時 (透過 API 函式 TS_RESP_verify_response 和 TS_RESP_verify_token 洩漏),如果攻擊者可同時控制比較的兩個項目,則可觸發損毀。例如,如果攻擊者可誘騙用戶端或伺服器針對惡意 CRL 檢查惡意憑證,則可能發生此問題。請注意,部分應用程式會根據憑證中內嵌的 URL 自動下載 CRL。此檢查在驗證憑證和 CRL 的簽章之前進行。
OpenSSL 的 s_server、s_client 和驗證工具支援實作 CRL 自動下載的 -crl_download 選項,且已證明此攻擊可針對這些工具發動。請注意,不相關錯誤表示受影響的 OpenSSL 版本無法剖析或建構 EDIPARTYNAME 的正確編碼。不過,可以建構 OpenSSL 剖析器會接受的格式錯誤的 EDIPARTYNAME,進而觸發此攻擊。所有 OpenSSL 1.1.1 和 1.0.2 版本皆受到此問題影響。
其他 OpenSSL 版本不在支援範圍內,且尚未經過檢查。已在 OpenSSL 1.1.1i 中修正 (受影響的為 1.1.1-1.1.1h)。已在 OpenSSL 1.0.2x 中修正 (受影響的為 1.0.2-1.0.2w)。(CVE-2020-1971)

- 在 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)

- OpenSSL 1.0.2 支援 SSLv2。如果用戶端嘗試與設定為支援 SSLv2 以及較新的 SSL 和 TLS 版本的伺服器交涉 SSLv2,則在取消填補 RSA 簽章時會檢查是否有版本復原攻擊。支援 SSLv2 以上版本 SSL 或 TLS 的用戶端應使用特殊的填補形式。支援 SSLv2 以上版本的伺服器應拒絕存在此特殊填補形式之用戶端的連線嘗試,因為這表示發生版本回溯 (即用戶端和伺服器皆支援 SSLv2 以上版本,但這是所要求的版本)。此填補檢查的實作會反轉邏輯,以便在有填補的情況下接受連線嘗試,而在沒有填補的情況下拒絕連線嘗試。這表示,伺服器將在發生版本復原攻擊時接受連線。此外,如果嘗試進行一般 SSLv2 連線,伺服器會錯誤地拒絕連線。僅 1.0.2s 至 1.0.2x 版的 OpenSSL 1.0.2 伺服器受到此問題影響。1.0.2 伺服器要受到攻擊,必須滿足下列條件:1) 編譯時已設定 SSLv2 支援 (預設為停用),2) 在執行階段已設定 SSLv2 支援 (預設為停用),3) 已設定 SSLv2 加密套件 (這些不在預設的加密套件清單中) OpenSSL 1.1.1 不支援 SSLv2,因此不易受此問題影響。RSA_padding_check_SSLv23() 函式實作中有基礎錯誤。這也會影響其他多種函式所使用的 RSA_SSLV23_PADDING 填補模式。雖然 1.1.1 版不支援 SSLv2,但 RSA_padding_check_SSLv23() 函式仍然存在,RSA_SSLV23_PADDING 填補模式亦如此。直接呼叫該函式或使用該填補模式的應用程式將會遇到此問題。
不過,由於 1.1.1 版不支援 SSLv2 通訊協定,因此在該版本中,此問題將被視為錯誤,而非安全性問題。OpenSSL 1.0.2 不在支援範圍,亦不再接收公開更新。
OpenSSL 1.0.2 的高級支援客戶應升級至 1.0.2y。其他使用者應升級至 1.1.1j。
已在 OpenSSL 1.0.2y 中修正 (受影響的版本為 1.0.2-1.0.2w)。(CVE-2021-23839)

- 在某些情況下,若輸入長度接近平台上整數的最大允許長度,呼叫 EVP_CipherUpdate、EVP_EncryptUpdate 和 EVP_DecryptUpdate 可能造成輸出長度引數溢位。在此類情況下,函式呼叫的傳回值將為 1 (表示成功),但輸出長度值將為負值。這可造成應用程式的行為不正確或損毀。
OpenSSL 1.1.1i 及以下版本受到此問題影響。這些版本的使用者應升級至 OpenSSL 1.1.1j。OpenSSL 1.0.2x 及以下版本受到此問題影響。但 OpenSSL 1.0.2 不在支援範圍,亦不再接收公開更新。OpenSSL 1.0.2 的高級支援客戶應升級至 1.0.2y。其他使用者應升級至 1.1.1j。已在 OpenSSL 1.1.1j 中修正 (受影響的版本為 1.1.1-1.1.1i)。
已在 OpenSSL 1.0.2y 中修正 (受影響的版本為 1.0.2-1.0.2x)。(CVE-2021-23840)

- OpenSSL 公開 API 函式 X509_issuer_and_serial_hash() 嘗試根據 X509 憑證中所含的簽發者和序號資料建立唯一的雜湊值。但是,它無法正確處理剖析簽發者欄位時可能發生的任何錯誤 (如果簽發者欄位遭到惡意建構,則可能發生此類錯誤)。之後,這可能導致 NULL 指標解除參照和當機,進而導致潛在的拒絕服務攻擊。OpenSSL 本身絕不會直接呼叫 X509_issuer_and_serial_hash() 函式,因此只有在直接使用此函式,並在可能是從未受信任來源取得的憑證上使用時,應用程式才會受到影響。OpenSSL 1.1.1i 及以下版本受到此問題影響。這些版本的使用者應升級至 OpenSSL 1.1.1j。OpenSSL 1.0.2x 及以下版本受到此問題影響。但 OpenSSL 1.0.2 不在支援範圍,亦不再接收公開更新。OpenSSL 1.0.2 的高級支援客戶應升級至 1.0.2y。其他使用者應升級至 1.1.1j。已在 OpenSSL 1.1.1j 中修正 (受影響的版本為 1.1.1-1.1.1i)。已在 OpenSSL 1.0.2y 中修正 (受影響的版本為 1.0.2-1.0.2x)。(CVE-2021-23841)

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

解決方案

套用 Juniper 公告 JSA69715 中所述的相關 Junos 軟體版本

另請參閱

https://kb.juniper.net/JSA69715

Plugin 詳細資訊

嚴重性: High

ID: 166767

檔案名稱: juniper_jsa69715.nasl

版本: 1.5

類型: combined

已發布: 2022/11/1

已更新: 2023/10/6

支援的感應器: Nessus

風險資訊

VPR

風險因素: High

分數: 7.7

CVSS v2

風險因素: Medium

基本分數: 5.8

時間分數: 4.8

媒介: CVSS2#AV:N/AC:M/Au:N/C:P/I:N/A:P

CVSS 評分資料來源: CVE-2021-3712

CVSS v3

風險因素: High

基本分數: 7.4

時間分數: 6.9

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

時間媒介: CVSS:3.0/E:F/RL:O/RC:C

弱點資訊

CPE: cpe:/o:juniper:junos

必要的 KB 項目: Host/Juniper/JUNOS/Version

可被惡意程式利用: true

可輕鬆利用: Exploits are available

修補程式發佈日期: 2022/7/13

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

參考資訊

CVE: CVE-2020-1968, CVE-2020-1971, CVE-2021-23839, CVE-2021-23840, CVE-2021-23841, CVE-2021-3712

JSA: JSA69715