YAML URI 转义解析中的堆溢出 (CVE-2014-2525)

hone 和 zzak 发布于 2014 年 3 月 29 日

YAML 在 Ruby 中的 URI 转义解析存在溢出。此漏洞已分配 CVE 标识符 CVE-2014-2525

详情

在解析带有标签的 YAML 字符串时,任何时候一个特意构造的字符串都可能导致堆栈溢出,进而导致任意代码执行。

例如

YAML.load <code_from_unknown_source>

受影响的版本

Ruby 1.9.3-p0 及更高版本将 psych 作为默认 YAML 解析器。任何链接到 libyaml <= 0.1.5 的 psych 版本都受到影响。

而且,这些版本的 Ruby 都捆绑了受影响的 libyaml 版本。

  • Ruby 2.0.0-p451 及更早版本,
  • Ruby 2.1.0 和 Ruby 2.1.1。

您可以通过运行以下命令来验证使用的 libyaml 版本:

$ ruby -rpsych -e 'p Psych.libyaml_version'
[0, 1, 5]

解决方案

建议已将 libyaml 安装到系统的用户将 libyaml 更新到 0.1.6。重新编译 Ruby 时,指向新更新的 libyaml。

$ ./configure --with-yaml-dir=/path/to/libyaml

没有系统 libyaml 的用户依赖于嵌入式 libyaml,并建议将 psych 更新到 2.0.5,该版本包含 libyaml 0.1.6

$ gem install psych

或者,将您的 Ruby 更新到 2.0.0-p481、2.1.2 或更新的版本。

历史

  • 最初发布于 2014-03-29 01:49:25 UTC
  • 更新发布于 2014-03-29 09:37:00 UTC
  • 更新发布于 2014-05-09 03:00:00 UTC

近期新闻

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 日

更多新闻...