CVE-2014-8090: 另一个 XML 扩展拒绝服务漏洞

usa 发布于 2014 年 11 月 13 日

不受限制的实体扩展可能导致 REXML 中的拒绝服务漏洞,例如 “REXML 中的实体扩展拒绝服务漏洞(XML 炸弹,CVE-2013-1821)”“CVE-2014-8080:REXML 中的参数实体扩展拒绝服务漏洞”。此漏洞已分配 CVE 标识符 CVE-2014-8090。我们强烈建议升级 Ruby。

详情

这是对 CVE-2013-1821CVE-2014-8080 的额外修复。之前的补丁修复了多个地方的递归扩展以及创建的字符串的总大小。然而,它们没有考虑之前实体扩展使用的限制。由于空字符串的递归扩展,可能会导致 CPU 利用率达到 100%。在读取 XML 文档的文本节点时,REXML 解析器可能被强制分配极其大的字符串对象,这些对象会消耗机器上的所有内存,从而导致拒绝服务。

受影响的代码看起来是这样的

require 'rexml/document'

xml = <<XML
<!DOCTYPE root [
  # ENTITY expansion vector
]>
<cd></cd>
XML

p REXML::Document.new(xml)

所有运行受影响版本的用户都应立即升级或使用以下任一解决方法。

受影响的版本

  • 所有 Ruby 1.9 版本,早于 Ruby 1.9.3 patchlevel 551
  • 所有 Ruby 2.0 版本,早于 Ruby 2.0.0 patchlevel 598
  • 所有 Ruby 2.1 版本,早于 Ruby 2.1.5
  • 早于 trunk revision 48402

变通方法

如果您无法升级 Ruby,请使用此 monkey patch 作为解决方法

class REXML::Document
  def document
    self
  end
end

致谢

感谢 Tomas Hoger 报告此问题。

历史

  • 最初发布于 2014-11-13 12: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 日

更多新闻...