Juniper Junos OS 多个漏洞 (JSA69715)

high Nessus 插件 ID 166767

简介

远程设备缺少供应商提供的安全补丁。

描述

远程主机上安装的 Junos OS 版本受到 JSA69715 公告中提及的多个漏洞的影响。

- Raccoon 攻击利用 TLS 规范中的一个缺陷,使攻击者能够计算使用基于 Diffie-Hellman (DH) 的密码套件的连接中的预主密钥。在这种情况下,这将导致攻击者能够窃听通过该 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 时,此函数的行为不正确。可能会发生空指针取消引用和崩溃,从而可能导致拒绝服务攻击。OpenSSL 本身将 GENERAL_NAME_cmp 函数用于两个目的:1) 比较可用 CRL 和 X509 证书中嵌入的 CRL 分发点之间的 CRL 分发点名称 2) 当验证时间戳记响应令牌签名者与时间戳授权名称是否匹配时(通过 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)

- ASN.1 字符串在 OpenSSL 内表示为 ASN1_STRING 结构,该结构包含一个保存字符串数据的缓冲区和一个保存缓冲区长度的字段。此字符串与普通 C 字符串形成对比,后者表示为字符串数据的缓冲区,以 NUL(0) 字节结束。虽然不是严格要求,但使用 OpenSSL 的独有 d2i 函数(及其他类似解析函数)解析的 ASN.1 字符串,以及使用 ASN1_STRING_set() 函数设定值的任何字符串,都将额外使用 NUL 方式终止 ASN1_STRING 结构中的字节数组。但是,应用程序可能会直接构建有效的 ASN1_STRING 结构,该结构不会直接在 ASN1_STRING 数组中设置数据和长度字段,进而使用 NUL 终止字节数组。这种情况也会因使用 ASN1_STRING_set0() 函数发生。已经发现,打印 ASN.1 数据的多个 OpenSSL 函数均假设 ASN1_STRING 字节数组将使用 NUL 终止,但无法保证直接构建的字符串亦是如此。当应用程序请求打印 ASN.1 结构时,并且 ASN.1 结构包含由应用程序直接构建但并非使用 NUL 终止的 ASN1_STRING 时,将会出现读取缓冲区溢出。同样的情况也会在处理证书的名称限制期间出现(例如,证书直接由应用程序构建,而非通过 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 (Affected 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)。实施此填充检查会反转逻辑,以便在存在填充时接受连接尝试,不存在填充时拒绝连接尝试。这表示发生版本回滚攻击时,服务器将接受连接。此外,如果尝试进行正常的 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.2s 至 1.0.2x)。(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 证书中包含的颁发者和序列号数据创建唯一哈希值。但其无法正确处理在分析颁发者字段期间可能发生的任何错误(如果颁发者字段是恶意构建的,就可能发生此类错误)。随后,这可能导致空指针取消引用和崩溃,进而可能导致拒绝服务攻击。函数 X509_issuer_and_serial_hash() 绝不会由 OpenSSL 本身直接调用,因此应用程序仅在直接使用此函数,并且在可能是从不受信任来源获得的证书上使用此函数时,才容易受到影响。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

插件详情

严重性: High

ID: 166767

文件名: juniper_jsa69715.nasl

版本: 1.5

类型: combined

发布时间: 2022/11/1

最近更新时间: 2023/10/6

支持的传感器: Nessus

风险信息

VPR

风险因素: Medium

分数: 6.0

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