HeartBleed 漏洞是否会影响使用 Tomcat Native 的 Apache Tomcat 服务器?

信息安全 openssl 心血来潮
2021-08-29 11:57:45

使用 Tomcat Native 和 APR 的 Apache Tomcat 服务器是否容易受到 HeartBleed OpenSSL 错误的影响,或者这一层是否隔离了它们? http://tomcat.apache.org/native-doc/

HeartBleed OpenSSL 错误信息:http ://heartbleed.com/

在我的 Apache Tomcat 服务器上,我有:

  • 易受攻击的 OpenSSL 版本
  • 建造和安装 APR
  • 使用--with-apr--with-ssl构建和安装 Tomcat Native
  • Tomcat 直接处理请求。端口 443 上的连接器配置有 SSLEnabled、SSLProtocol、SSLCipherSuite、SSLCertificateFile、SSLCertificateKeyFile、SSLCertificateChainFile 属性
    • SSLProtocol="-ALL +SSLv3 +TLSv1"
    • SSLCipherSuite="ALL:!aNULL:!eNULL:!ADH:RC4+RSA:+HIGH:+MEDIUM:!LOW:!SSLv2:!EXPORT"

问题:

  • Tomcat、APR 或 Tomcat Native 的版本对漏洞有影响吗?
  • SSLProtocol 或 SSLCipherSuite 值是否会影响漏洞?
4个回答

根据您链接到的文档,APR 连接器

  • 将 OpenSSL 用于 TLS/SSL 功能(如果链接的 APR 库支持)

因此,可以合理地假设 Tomcat 本地库容易受到 Heartbleed 漏洞的影响。但是条件不同,因为 Tomcat 是用 Java 编写的,而 Java 有自己的分配系统(著名的垃圾收集器),它以巨大的块从 OS 获取内存,与 OpenSSL 获取其块的区域相距甚远。

因此,heartbleed 缓冲区溢出不太可能泄露任何作为基于 Java 的对象存在的秘密信息。但是,它可能会获得从与 OpenSSL 获得自己的缓冲区相同的堆分配的信息。特别是,该漏洞可能会泄露 OpenSSL 本身使用的部分或全部私钥。

我在 windows 上有一个 tomcat 7.0.29 服务器,在 qualys heartbleed 扫描中显示为易受攻击。它在 server.xml 中使用带有此连接器配置的 APR:

Connector protocol="org.apache.coyote.http11.Http11AprProtocol"
URIEncoding="UTF-8"
port="443" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
SSLCertificateFile="${catalina.base}/conf/ssl/XXXX.cer" 
SSLCertificateKeyFile="${catalina.base}/conf/ssl/XXXX.key"
SSLCertificateChainFile="${catalina.base}/conf/ssl/XXXX.cer"
SSLPassword="XXXX"
clientAuth="optional" 
SSLProtocol="ALL" 
SSLCipherSuite="ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:!SSLv2:RC4+RSA"

布赖恩

这是针对 apr-1.5.0、openssl-1.0.1g 的适用于 Windows 的 tcnative-1.1.29 二进制文件的链接。这是针对 VC 2008 的,因此您需要适用于 Windows 2003 或 XP 的 Microsoft Visual C++ 2008 Redistributable。Juan Calero 的文件不包括 win32,并且符合 VC 2010。其中一个或另一个可能更好地满足您的建议。你只需要停止tomcat,替换tcnative-1.dll 然后启动tomcat。

我相信tomcat开箱即用并不容易受到心脏出血的影响。

是的,APR 库已链接并且 SSLEngine 已打开。

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

但是,如果您查看默认 tomcat 部署的 server.xml 配置文件,它的 SSL 连接器使用 JSSE 而不是 APR 库。

<!-- Define a SSL HTTP/1.1 Connector on port 8443
     This connector uses the BIO implementation that requires the JSSE
     style configuration. When using the APR/native implementation, the
     OpenSSL style configuration is required as described in the APR/native
     documentation -->
<!--
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
           maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS" />
-->

所以它不应该被 Heartbleed 所利用。除非您手动更改 SSL 连接器以使用 APR,否则我认为可以肯定地说,您不会受到攻击。

说到哪一个你知道有哪些用于 Heartbleed 的离线测试器?

http://alexluca.com/2014/04/10/heartbleed-and-tomcat-out-of-the-box-ssl-config/

问候,

亚历克斯·L。