CVE-2014-8090:另一個 XML 阻斷攻擊
由 usa 發表於 2014-11-13
翻譯: Juanito Fatas
不受限制的實體擴張可導致 REXML 的風險發生,像是這兩篇文章所描述的漏洞:“Entity expansion DoS vulnerability in REXML (XML bomb, CVE-2013-1821)”以及“CVE-2014-8080:XML 擴張的阻斷攻擊”。
這個風險的 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 回報這個問題。
History
- 2014-11-13 12:00:00 UTC 初版
最新消息
Ruby 4.0.1 發布
Ruby 4.0.1 已經發布了。
由 k0kubun 發表於 2026-01-13
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’s 的全新預設主題。
由 Stan Lo 發表於 2025-12-23
重新設計我們的網站形象
我們很興奮地宣布網站進行了全面改版。這次更新的設計方案是由 Taeko Akatsuka 負責創作。
由 Hiroshi SHIBATA 發表於 2025-12-22