OpenSSL 是一个常用的软件库,用于构建需要建立安全通信的网络应用和服务器。近日,OpenSSL 项目针对潜伏在 OpenSSL 产品中的两个高危漏洞 CVE-2021-3449 和 CVE-2021-3450 发布了公告。
这两个漏洞包括:
- CVE-2021-3449:由于 NULL 指针取消引用而导致的拒绝服务(DoS)漏洞,只影响 OpenSSL 服务器实例,而不影响客户端。
- CVE-2021-3450:不正确的 CA 证书验证漏洞,同时影响服务器和客户端实例。
单行代码即可修复 DoS 漏洞
如果在重新协商的过程中,客户端发送了一个恶意的 ClientHello 消息,OpenSSL TLS 服务器中的 DoS 漏洞(CVE-2021-3449)就会导致服务器崩溃。
公告指出,"如果 TLSv1.2 重新协商的 ClientHello 省略了 signature_algorithms 扩展(在初始的 ClientHello 中存在),但包含了 signature_algorithms_cert 扩展,那么就会导致 NULL 指针取消引用,从而导致崩溃和拒绝服务攻击。"
该漏洞只影响运行在 1.1.1 和 1.1.1j 版本之间(包括两者)且需要同时启用 TLSv1.2 和重新协商的 OpenSSL 服务器。然而,由于这是这些 OpenSSL 服务器版本的默认配置,许多活跃的服务器可能都存在这个潜在的漏洞,而 OpenSSL 客户端则不受该漏洞影响。
幸运的是,修复这个 DoS 漏洞十分简单,只需要将 peer_sigalgslen 设置为 0 即可。
该漏洞由诺基亚的工程师 Peter Kästle 和 Samuel Sapalski 发现,他们也提供了上图所示的修复方法。
CA 证书漏洞
绕过 CA 证书验证的漏洞 CVE-2021-3450 则与 X509_V_FLAG_X509_STRICT 标志有关。
OpenSSL 使用此标志来禁止对损坏的证书使用替代方法,并严格要求根据 X509 规则对证书进行验证。然而,由于一个回归错误,OpenSSL 1.1.1h 及以上版本(但不包括修复后的 1.1.1k 版本)都会受到这个漏洞的影响,因为在这些版本中这个标志并没有被默认设置。
该公告指出,"从 OpenSSL 1.1.1h 版本开始增加了一项检查,以禁止在链中显式编码 elliptic curve 参数的证书,这是附加的严格检查。但是,这项检查的实现中出现了一个错误,意味着之前确认链中证书是有效 CA 证书的检查结果被覆盖了"。
目前上述这两个漏洞都不会影响 OpenSSL 1.0.2,并且这两个漏洞都在 OpenSSL 1.1.1k 中得到了修复,官方建议用户升级到这个版本以保护他们的实例。
本文转自OSCHINA
本文标题:OpenSSL 修复了严重的 DoS 和证书验证漏洞
本文地址:https://www.oschina.net/news/134860/openssl-fixes-severe-dos-vulnerabilities