CVE-2015-7551: Fiddle 與 DL 不安全的字串用途瑕疵存在安全性風險
由 usa 發表於 2015-12-16
翻譯: Juanito Fatas
Fiddle 與 DL 擴充模組不安全的字串用途瑕疵存在安全性風險。本安全風險識別號已經被指派為 CVE-2015-7551。
細節
Fiddle 與 DL 函式庫發現了不安全的字串用途瑕疵所產生的安全性風險。本問題初見於 DL 的 CVE-2009-5147,但在 DL 重新使用 Fiddle 和 libffi 實作後重新發現。
CVE-2009-5147 曾在 Ruby 1.9.1 版本修復,但其它分支並未修復,Ruby 1.9 系列除了 1.9.1 之外,有打包 DL 的版本都存在此安全性風險。
受影響的程式碼看起來像是:
handle = Fiddle::Handle.new(dangerous_user_input)或:
handle = Fiddle::Handle.new(some_library)
function_pointer = handle[dangerous_user_input]所有正使用受影響版本的使用者,應儘速升級或立即使用下述暫時解決方案。
受影響版本
- 1.9.2 與 1.9.3 所有補丁版本(DL 和 Fiddle)
- 所有 Ruby 2.0.0 補丁號在 648 之前的版本(DL 和 Fiddle)
- 所有 Ruby 2.1 在 2.1.8 之前的版本(DL 和 Fiddle)
- 所有 Ruby 2.2 在 2.2.4 之前的版本(Fiddle)
- Ruby 2.3.0-preview1 與 2.3.0-preview2(Fiddle)
- 主幹 revision 53153 之前的版本(Fiddle)
暫時解決方法
若無法升級,下面的補丁可以套用到 Fiddle:
class Fiddle::Handle
alias :old_initialize :initialize
def initialize file, *args
raise SecurityError if file.tainted? && $SAFE > 0
old_initialize file, *args
end
alias :sym :[]
alias :old_call :[]
def [] fun
raise SecurityError if fun.tainted? && $SAFE > 0
old_call fun
end
end若是使用 DL,請改用 Fiddle。
致謝
感謝 Christian Hofstaedtler zeha@debian.org 回報此問題!
歷史
- 初次發佈於 2015-12-16 12:00:00 UTC
最新消息
Ruby 4.0.0 Released
我們很高興宣布 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
Ruby 4.0.0 preview3 發布
我們很高興宣布 Ruby 4.0.0-preview3 發布了。 Ruby 4.0 導入了 Ruby::Box 和 “ZJIT”,以及其他改進功能。
由 naruse 發表於 2025-12-18