OpenSSL无限循环漏洞可崩溃远程服务器CVE-2022-0778

OpenSSL无限循环漏洞可崩溃远程服务器CVE-2022-0778

OpenSSL 的维护者已经发布了补丁来解决其软件库中的一个高严重性安全漏洞,该漏洞可能在解析证书时导致拒绝服务 (DoS) 情况。

漏洞cve跟踪为CVE-2022-0778(CVSS 分数:7.5),该问题源于使用无效的显式椭圆曲线参数解析格式错误的证书,从而导致所谓的“无限循环”。该缺陷存在于一个名为 BN_mod_sqrt() 的函数中,该函数用于计算模平方根。

“由于证书解析发生在证书签名验证之前,因此任何解析外部提供的证书的过程都可能受到拒绝服务攻击”OpenSSL 在 2022 年 3 月 15 日发布的公告中表示。

OpenSSL无限循环漏洞可崩溃远程服务器CVE-2022-0778

漏洞描述

计算模平方根的 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 版本中得到解决。由 Tavis Ormandy(谷歌)报道。

  • 在 OpenSSL 3.0.2 (git commit)中修复(受影响的 3.0.0,3.0.1)
  • 在 OpenSSL 1.1.1n (git commit)中修复(受影响的 1.1.1-1.1.1m)
  • 在 OpenSSL 1.0.2zd (git commit)中修复(受影响的 1.0.2-1.0.2zc)

OpenSSL 安全公告 [2022 年 3 月 15 日]

解析证书时可访问 BN_mod_sqrt() 中的无限循环 (CVE-2022-0778)
==================================================================================

严重性:高

计算模平方根的 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 1.0.2 用户应升级到 1.0.2zd(仅限高级支持客户)
OpenSSL 1.1.1 用户应升级到 1.1.1n
OpenSSL 3.0 用户应升级到 3.0.2

Tavis Ormandy 于 2022 年 2 月 24 日向 OpenSSL 报告了此问题
来自谷歌。该修复程序由 Google 的 David Benjamin 和 Tomáš Mráz 开发
来自 OpenSSL。

备注
====

OpenSSL 1.0.2 不再支持并且不再接收公共更新。扩展
高级支持客户可获得支持:
https://www.openssl.org/support/contracts.html

OpenSSL 1.1.0 不再支持并且不再接收任何类型的更新。
它受问题影响。

这些版本的用户应升级到 OpenSSL 3.0 或 1.1.1。

参考
==========

此安全公告的 URL:
https://www.openssl.org/news/secadv/20220315.txt

注意:在线版本的公告可能会更新更多细节
随着时间的推移。

有关 OpenSSL 严重性分类的详细信息,请参阅:
https://www.openssl.org/policies/secpolicy.html

转载请注明出处及链接

Leave a Reply

您的邮箱地址不会被公开。 必填项已用 * 标注