博客 | NGINX

NGINX 和 2014 年 6 月 5 日 OpenSSL 安全公告

NGINX-F5-horiz-black-type-RGB 的一部分
欧文·加勒特缩略图
欧文·加勒特
2014 年 6 月 5 日发布

CVE-2014-0224 及其相关 OpenSSL 漏洞对 NGINX 有何影响?

OpenSSL 项目于 2014 年 6 月 5 日宣布修复七个安全漏洞。 详细信息在其安全公告中描述。

这些漏洞可能会影响任何使用 OpenSSL 终止 SSL/TLS 流量的服务器应用(包括 NGINX 和 NGINX Plus)。 它们可被利用来发起中间人(MitM)攻击或各种拒绝服务(DoS)和数据损坏问题:

  • SSL/TLS MITM 漏洞(CVE‑2014‑0224)
  • DTLS 递归缺陷(CVE‑2014‑0221)
  • DTLS 无效片段漏洞 (CVE‑2014‑0195)
  • SSL_MODE_RELEASE_BUFFERS 空指针取消引用(CVE-2014-0198)
  • SSL_MODE_RELEASE_BUFFERS 会话注入或拒绝服务(CVE-2010-5298)
  • 匿名 ECDH 拒绝服务(CVE‑2014‑3470)
  • “其他问题”(CVE-2014-0076)

OpenSSL 项目的建议如下:

OpenSSL 0.9.8 SSL/TLS 用户应升级至 0.9.8za。OpenSSL 1.0.0 SSL/TLS 用户应升级至 1.0.0m。
OpenSSL 1.0.1 SSL/TLS 用户应升级到 1.0.1h。

您的 NGINX 安装是否使用了操作系统供应商的 OpenSSL 实例?

NGINX, Inc. 提供的NGINX 和 NGINX Plus 版本(Windows 版本除外)或通过第三方存储库通常动态链接到操作系统的libssl.so实例。 运行ldd命令来了解libssl.so文件的完整路径,并运行strings命令来显示相关的版本号(在本例中为 1.0.1f):

$ ldd `which nginx` | grep ssl libssl.so.1.0.0 => /lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007f82e62bf000) $ strings /lib/x86_64-linux-gnu/libssl.so.1.0.0 | grep "^OpenSSL " OpenSSL 1.0.1f 2014 年 1 月 6 日

您的系统上的输出可能看起来有些不同。 您也可以运行openssl版本,但如果您的服务器上有多个 OpenSSL 实例,输出可能不可靠。

我们强烈建议您升级到操作系统供应商提供的最新 OpenSSL 库,即使您正在运行的早期版本没有受到影响。 然后重新启动 NGINX 软件以使用更新的库。 检查您的供应商对 CVE-2014-0224 的响应以确定正确的升级过程。 为了您的方便,这里提供DebianRed HatUbuntu的链接。

请注意,一些 Linux 操作系统供应商已发布仍带有早期 OpenSSL 版本号的修复软件包,选择仅在其软件包中包含针对 CVE‑2014‑0224 和相关漏洞的修复,以便快速提供小更新。

您的 NGINX 安装是否使用 OpenSSL 的静态链接实例?

如果您自己编译了 NGINX,那么您可能已经静态链接了 OpenSSL 库。 在这种情况下, ldd的输出没有显示对操作系统libssl.so库的依赖关系。 运行nginx -V来显示您使用的编译时选项:

$ ./objs/nginx -V nginx 版本:nginx/1.7.1 由 gcc 4.6.3(Ubuntu/Linaro 4.6.3-1ubuntu5)构建 配置参数:--with-cc-opt=-I../openssl-1.0.1f/include --with-ld-opt='-L../openssl-1.0.1f -Wl,-Bstatic -lssl -lcrypto -Wl,-Bdynamic -ldl' --with-openssl=../openssl-1.0.1f

如果您使用的是存在漏洞的 OpenSSL 版本,则需要使用更正后的版本重新编译 NGINX。

您是否正在使用 NGINX Windows 二进制文件?

NGINX for Windows(由 NGINX 分发)与 OpenSSL 静态链接。 目前可用的 1.7.1 和 1.6.0 版本已更新,修复了 OpenSSL 的问题。


“这篇博文可能引用了不再可用和/或不再支持的产品。 有关 F5 NGINX 产品和解决方案的最新信息,请探索我们的NGINX 产品系列。 NGINX 现在是 F5 的一部分。 所有之前的 NGINX.com 链接都将重定向至 F5.com 上的类似 NGINX 内容。”