CVE-2014-8090:另一个 XML 洪水攻击
由 usa 发表于 2014-11-13
翻译: hlcfan
不受限制的实体扩张可导致 REXML 的风险发生,像是这两篇文章所描述的漏洞:“Entity expansion DoS vulnerability in REXML (XML bomb, CVE-2013-1821)” 以及 “CVE-2014-8080: Denial of Service XML Expansion”。
这个风险的 CVE 识別号已经被指派为 CVE-2014-8090。强烈建议您尽快升级 Ruby。
细节
这是 CVE-2013-1821 和 CVE-2014-8080 的额外修复。先前的补丁修正了几处的递归扩展并限制了字符串建立的总长度。但没有针对实体所进行限制。空字符串的递归扩张可能把 CPU 整个吃满。在从 XML 文件读取文字节点时,REXML 解析器可以转成占用极大空间的字符串对象,将机器上的内存用尽,进而导致洪水攻击。
受影响的程序代码看起来像是:
require 'rexml/document'
xml = <<XML
<!DOCTYPE root [
# ENTITY expansion vector
]>
<cd></cd>
XML
p REXML::Document.new(xml)所有运行受影响版本的使用者应该尽快升级或采用下面的可行的措施。
受影响版本
- 所有 Ruby 1.9 patchlevel 在 551 以前的版本
- 所有 Ruby 2.0 patchlevel 在 598 以前的版本
- 所有 Ruby 2.1 在 2.1.5 以前的版本
- 主干 revision 48402 以前的版本
应对措施
若无法升级 Ruby,请使用以下的应对方案:
class REXML::Document
def document
self
end
end致谢
感谢 Tomas Hoger 报告这个问题。
历史
- 2014-11-13 12:00:00 UTC 初版
最新消息
Ruby 3.2.11 已发布
Ruby 3.2.11 已发布。 此版本包括了 处理 CVE-2026-27820 的 zlib gem 更新。
由 hsbt 发表于 2026-03-27
Ruby 3.3.11 已发布
Ruby 3.3.11 已发布。此版本包括了 处理 CVE-2026-27820 的 zlib gem 更新,以及一些其他问题补丁。
由 hsbt 发表于 2026-03-26
Ruby 4.0.2 已发布
Ruby 4.0.2 已发布。
由 k0kubun 发表于 2026-03-16
Ruby 3.4.9 已发布
Ruby 3.4.9 已发布。
由 nagachika 发表于 2026-03-11