TLS 心跳扩展中的 OpenSSL 严重漏洞 (CVE-2014-0160)

hone 和 zzak 发布于 2014 年 4 月 10 日

OpenSSL 在 TLS/DTLS(传输层安全协议)心跳扩展(RFC6520)的实现中存在严重漏洞。这是一个严重的漏洞,已被分配 CVE 标识符 CVE-2014-0160

攻击可能导致服务器向客户端泄露内存内容,以及客户端向服务器泄露内存内容。攻击者可以远程检索内存中的敏感数据,包括但不限于用于SSL加密和身份验证令牌的密钥。

有关攻击的更多信息,请参阅 heartbleed.com

Ruby 如何受到影响?

当 Ruby 通过标准库 OpenSSL C 扩展静态编译到易受攻击的 OpenSSL 版本时,Ruby 会受到影响。

OpenSSL 版本 1.0.1 至 1.0.1f(含)易受此攻击。要验证 Ruby 链接到哪个版本的 OpenSSL 库,请使用以下方法

ruby -v -ropenssl -rfiddle -e 'puts Fiddle::Function.new(Fiddle.dlopen(nil)["SSLeay_version"], [Fiddle::TYPE_INT], Fiddle::TYPE_VOIDP).call(0)'

要验证 Ruby 当前安装的 OpenSSL 版本,请使用以下方法

ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION'

您可以使用 emboss 的脚本 来验证您的客户端软件或正在运行的服务是否易受攻击。

解决方案

要升级到最新版本的 OpenSSL 版本 1.0.1g 或更高版本,您应该检查您当前的操作系统包管理器,以确保它们提供最新的 OpenSSL。您可能需要咨询您的操作系统分发商,以验证其 OpenSSL 版本是否已打补丁,无论可用的版本号是多少。

如果无法升级,请在构建时使用选项 -DOPENSSL_NO_HEARTBEATS 重新编译已打补丁的 OpenSSL。

升级 OpenSSL 后,建议重新编译 Ruby,以确保没有链接到易受攻击的 OpenSSL 版本。

这意味着更新用于构建 Ruby 的任何工具,例如 RVM 或 ruby-build。如果您自己构建 Ruby,请在编译时使用 --with-openssl-dir 选项来链接已升级的 OpenSSL 安装目录。

$ ./configure --with-openssl-dir=/path/to/openssl
$ make
$ make install

升级 OpenSSL 和 Ruby 后,重要的是要重启所有使用易受攻击版本的程序。

许多操作系统分发版已经(或即将)提供已打补丁的版本和针对易受此攻击的库的重建包。监控您的操作系统分发版以确保您保持安全非常重要。

近期新闻

Ruby 4.0.0 发布

我们很高兴地宣布 Ruby 4.0.0 的发布。Ruby 4.0 引入了“Ruby Box”和“ZJIT”,并增加了许多改进。

naruse 发布于 2025 年 12 月 25 日

Ruby 文档的全新外观

继 ruby-lang.org 重新设计之后,我们还有更多好消息来庆祝 Ruby 成立 30 周年:docs.ruby-lang.org 采用了 Aliki——RDoc 的新默认主题,焕然一新。

Stan Lo 发布于 2025 年 12 月 23 日

重新设计我们的网站标识

我们很高兴地宣布对我们的网站进行全面重新设计。此次更新的设计由 Akatsuka Taeko 创作。

Hiroshi SHIBATA 发布于 2025 年 12 月 22 日

Ruby 4.0.0 preview3 发布

我们很高兴地宣布 Ruby 4.0.0-preview3 的发布。Ruby 4.0 引入了 Ruby::Box 和“ZJIT”,并增加了许多改进。

naruse 发布于 2025 年 12 月 18 日

更多新闻...