heartbleed 漏洞对客户端的影响是否严重?

信息安全 openssl 心血来潮
2021-08-15 10:15:22

如果我有一个网络爬虫(使用 OpenSSL 的未打补丁的版本),它可以被哄骗连接到一个邪恶的 https 站点,他们可以从我的进程内存中获取所有内容吗?要攻击服务器,您可以继续重新连接以获得更多 64kb 块(如果我理解正确的话),但是客户端是否可以强制重新连接多次以获得更多块?

2个回答

是的,客户端容易受到攻击。

最初的安全通知表明,恶意服务器可以利用 Heartbleed 漏洞破坏受影响的客户端。以下来源(所有重点都是我的)。

从那时起,概念验证攻击证实了这一立场——完全可以肯定,运行使用 OpenSSL 进行 TLS 连接的应用程序的客户端可能容易受到攻击。

heartbleed.com

...当 [Heartbleed] 被利用时,它会导致内存内容从服务器泄漏到客户端以及从客户端泄漏到服务器

Ubuntu 安全通知 USN-2165-1

攻击者可以利用此问题从客户端或服务器获取多达 64k 的内存内容

RFC6520

5.用例
每个端点发送HeartbeatRequest消息......

OpenSSL 安全公告 2014 年 4 月 7 日

处理 TLS 心跳扩展时的缺失边界检查可用于向连接的客户端或服务器显示多达 64k 的内存。


报告 为易受攻击的客户端应用程序感谢@Lekensteyn,除非另有说明):

  • MariaDB 5.5.36
  • wget 1.15(泄漏早期连接和自身状态的内存)
  • 卷曲 7.36.0
  • git 1.9.1(测试克隆/推送,泄漏不多)
  • nginx 1.4.7(在代理模式下,泄漏先前请求的内存)
  • 链接 2.8(泄露以前访问的内容!)
  • 所有使用 KIO(Dolphin、Konqueror)的 KDE 应用程序。
  • 进出口邮件服务器
  • OwnCloud版本未知 | 来源

请注意,其中一些程序使用 OpenSSL。例如,curl 可以使用 Mozilla NSS 构建,Exim 可以使用 GnuTLS 构建(就像在 Debian 上所做的那样)。


其他常见客户:

  • Windows(所有版本):可能不受影响(使用 SChannel/SSPI),但应注意个别应用程序中的 TLS 实现。例如,Cygwin 用户应该更新他们的OpenSSL包。

  • OSX 和 iOS(所有版本):可能不受影响。SANS通过说“ OS X Mavericks has NO PATCH available暗示它可能容易受到攻击,其他人指出OSX 10.9 附带 OpenSSL 0.9.8y,这不受影响。Apple表示:“OS X 中的 OpenSSL 库已被弃用,而且 OpenSSL 从未作为 iOS 的一部分提供”

  • Chrome(除 Android 外的所有平台):可能不受影响(使用 NSS

  • Android 上的 Chrome:4.1.1 可能会受到影响(使用 OpenSSL)。来源4.1.2 应该不受影响,因为它是用heartbeats disabled编译的。来源

  • Mozilla 产品(例如 Firefox、Thunderbird、SeaMonkey、Fennec):可能不受影响,都使用NSS

是的,它会严重影响客户,正如heartbleed 网站上所述:

此外,您的计算机上可能有客户端软件,如果您连接到受损服务,该软件可能会暴露您计算机中的数据。

当然,这不仅仅是这个漏洞或特定客户端的情况,客户端仍然必须启动要被攻击的连接。此漏洞绝不允许攻击者启动与您的网络爬虫的连接并利用该漏洞。

但是,在您的情况下,由于您可以直接控制 OpenSSL 客户端代码(我认为这是基于您的帖子的情况),因此您要确保您的 OpenSSL 版本不带有 Heartbeat 选项,并且如果它确实,删除它。为此,您可以:

  • 显示用于编译您的 OpenSSL 版本的特定选项:

    openssl version -o

  • 或显示您的 OpenSSL 版本中的所有信息:

    openssl version -a

  • 只需在编译时使用此标志,即可在不支持 Heartbeat 的情况下编译 OpenSSL:

    -DOPENSSL_NO_HEARTBEATS

一旦完成,或者如果您的 OpenSSL 版本最初没有包含它,那么您就不会受到攻击。

编辑:另一种方法是检索您的 OpenSSL 版本:

openssl version

并将其与heartbleed 上可用的受影响版本列表进行比较

  • OpenSSL 1.0.1 到 1.0.1f(含易受攻击
  • OpenSSL 1.0.1g易受攻击
  • OpenSSL 1.0.0 分支不易受到攻击
  • OpenSSL 0.9.8分支不易受到攻击