由 tenderlove 發表於 2013-11-22
翻譯: Juanito Fatas
Ruby 直譯器解析浮點數存在溢出風險。
這個風險的 CVE 識別號為 CVE-2013-4164。
風險細節
每當字串轉成浮點數時,刻意捏造的字串可造成 heap 溢出。這可導致有心人透過記憶體區段錯誤 (Segment Fault) 來進行分散式阻斷服務攻擊,可能隨意執行任何程式碼。任何將未知來源字串轉成浮點數(特別是從 JSON)都可能存在 此風險。
存在風險的程式碼看起來像是:
untrusted_data.to_f
但任何從外部資料將字串轉成浮點數的程式碼都存在此風險,像是:
JSON.parse untrusted_data
注意,這個 bug 與 CVE-2009-0689 類似。
所有使用受影響版本的使用者,應儘快升級至已修正的版本。
受影響版本
- Ruby 1.8 patchlevel 230 之後所有的 1.8 版本。
- Ruby 1.9 patchlevel 484 之前所有的 1.9 版本。
- Ruby 2.0 patchlevel 353 之前所有的 2.0 版本。
- trunk revision 43780 之前所有的 Ruby。
解決辦法
建議所有使用者升級至 Ruby 1.9.3-p484、2.0.0-p353 或是 Ruby 2.1.0 preview2。
請注意 Ruby 1.8 系列版本已過時,不會發佈新的修正版。Ruby 1.8 版本的使用者建議儘快升級, 不再維護的版本,我們無法保證不會有更多的安全性問題存在。
表揚
感謝 Charlie Somerville 回報這個風險!
歷史
- 最初發佈於 2013-11-22 04:00:00 UTC
- 二次修訂於 2013-11-22 06:46:00 UTC
- 三次修訂於 2013-11-22 22:46:00 UTC
- 四次修訂於 2013-12-10 12:09:38 UTC