版本
- 適用於 JDK 23 的 GraalVM (最新)
- 適用於 JDK 24 的 GraalVM (搶先體驗)
- 適用於 JDK 21 的 GraalVM
- 適用於 JDK 17 的 GraalVM
- 封存
- 開發版本
安全性
請透過回報漏洞指南中概述的流程回報安全性漏洞。關於回報 GraalVM 專案(包括 TruffleRuby)安全性問題的具體指南,請參閱SECURITY 檔案。
MRI 漏洞 #
針對 MRI 回報的漏洞可能適用於 Ruby 的設計或我們與 MRI 共用的程式碼。我們在此列出已回報的 MRI 漏洞,並記錄 MRI 如何減輕漏洞、是否透過任何方式測試減輕措施,以及 TruffleRuby 如何減輕漏洞。我們並未調查所有舊有漏洞,因為通常很難從較舊的報告中釐清詳細資訊。
請參閱 MRI 網站上的詳細資訊。
編號 | 描述 | 他們的減輕措施 | 測試 | 我們的減輕措施 |
---|---|---|---|---|
CVE-2024-27282 | 使用 Regex 搜尋的任意記憶體位址讀取漏洞 | 修復 | 由於 Java 語義,不適用 | |
CVE-2024-27281 | RDoc 中具有 .rdoc_options 的 RCE 漏洞 | 修復 | 測試 | 由於 TruffleRuby 不會在 gem 安裝時產生 rdoc,因此不適用 |
CVE-2024-27280 | StringIO 中的緩衝區過讀漏洞 | 修復 | 測試 | 不適用,我們使用 StringIO 的 Ruby 實作 |
CVE-2023-36617 | URI 中的 ReDoS 漏洞 | 修復 | 測試 | 由於 TRegex,不適用 |
CVE-2023-28756 | Time 中的 ReDoS 漏洞 | 修復 | 測試 | 由於 TRegex,不適用 |
CVE-2023-28755 | URI 中的 ReDoS 漏洞 | 修復 | 測試 | 由於 TRegex,不適用 |
CVE-2021-33621 | CGI 中的 HTTP 回應分割 | 修復 | 測試 | 相同 |
CVE-2022-28739 | 字串轉換為浮點數中的緩衝區溢位 | 由於 Java 語義,不適用 | ||
CVE-2022-28738 | Regexp 編譯中的重複釋放 | 由於 Java 語義,不適用 | ||
CVE-2021-41819 | CGI::Cookie.parse 中的 Cookie 字首詐騙 | 修復 | 測試 | 相同 |
CVE-2021-41817 | date 中的正規表示式阻斷服務漏洞 (ReDoS) | 修復 | 測試 | 由於 TRegex,不適用 |
CVE-2021-41816 | CGI.escape_html 中的緩衝區溢位 | 修復 | 測試 | 不適用,我們使用 CGI.escape_html 的 Ruby 定義 |
CVE-2021-31810 | Net::FTP 中信任 FTP PASV 回應的漏洞 | 修復 | 測試 | 相同 |
CVE-2021-32066 | Net::IMAP 中的 StartTLS 剝離漏洞 | 修復 | 測試 | 相同 |
CVE-2021-31799 | RDoc 中的命令注入漏洞 | 修復 回溯移植 | 測試 | 相同 |
CVE-2021-28966 | Windows 上 Tempfile 中的路徑遍歷 | tmpdir.rb 中路徑的清理 | 在 test/mri/tests/test_tmpdir.rb 中 |
tmpdir.rb 中路徑的清理 |
CVE-2021-28965 | REXML 中的 XML 來回漏洞 | 更新至 REXML 3.2.5 | 在 ruby/rexml 中 | 更新至 REXML 3.2.5 |
CVE-2020-10663 | JSON 中不安全的物件建立漏洞 (額外修復) | 修復 | 規格 | 我們使用的純 Ruby 版本 JSON 是安全的 |
CVE-2019-16255 | Shell#[] 和 Shell#test 的程式碼注入漏洞 | 修復 | MRI 測試 | 相同 |
CVE-2019-16254 | WEBrick 中的 HTTP 回應分割 (額外修復) | 修復 | MRI 測試 | 相同 |
CVE-2019-15845 | File.fnmatch 和 File.fnmatch? 的 NUL 注入漏洞 | 修復 | MRI 測試 | 檢查 NUL 位元組 |
CVE-2019-16201 | WEBrick 的 Digest 存取驗證的正規表示式阻斷服務漏洞 | 修復 | MRI 測試 | 相同 |
CVE-2012-6708 | RDoc 中的多個 jQuery 漏洞 | 移除 jquery.js | 不適用 | 相同 |
CVE-2015-9251 | RDoc 中的多個 jQuery 漏洞 | 移除 jquery.js | 不適用 | 相同 |
CVE-2019-8320 | 解壓縮 tar 時使用符號連結刪除目錄 |
檢查展開的路徑 | 已在 MRI test/rubygems/test_gem_package.rb 中測試 |
已套用相同的修補程式 |
CVE-2019-8321 | verbose 中的跳脫序列注入 |
清理訊息 | 已在 ruby/spec :security 中測試 |
已套用相同的修補程式 |
CVE-2019-8322 | gem owner 中的跳脫序列注入 |
清理訊息 | 已在 ruby/spec :security 中測試 |
已套用相同的修補程式 |
CVE-2019-8323 | API 回應處理中的跳脫序列注入漏洞 | 清理訊息 | 已在 ruby/spec :security 中測試 |
已套用相同的修補程式 |
CVE-2019-8324 | 安裝惡意 gem 可能會導致任意程式碼執行 | 在預先安裝檢查之前驗證 gem | 已在 MRI test/rubygems/test_gem_installer.rb 中測試 |
已套用相同的修補程式 |
CVE-2019-8325 | 錯誤中的跳脫序列注入 | 清理錯誤訊息 | 已在 ruby/spec :security 中測試 |
已套用相同的修補程式 |
CVE-2018-16395 | OpenSSL::X509::Name 相等檢查無法正確運作 |
|||
CVE-2018-16396 | 使用某些指示詞時,受污染的旗標不會在 Array#pack 和 String#unpack 中傳播 |
額外污染作業 | 已在 ruby/spec :security 中測試 |
額外污染作業 |
CVE-2018-6914 | 使用 tempfile 和 tmpdir 中的目錄遍歷建立非預期的檔案和目錄 |
路徑清理 | 已在 ruby/spec :security 中測試 |
路徑清理 |
CVE-2018-8779 | UNIXServer 和 UNIXSocket 中由受污染的 NUL 位元組建立非預期的通訊端 |
檢查 NUL 位元組 | 已在 ruby/spec :security 中測試 |
檢查 NUL 位元組 |
CVE-2018-8780 | Dir 中由受污染的 NUL 位元組導致非預期的目錄遍歷 |
檢查 NUL 位元組 | 已在 ruby/spec :security 中測試 |
檢查 NUL 位元組 |
CVE-2018-8777 | WEBrick 中由大型要求造成的阻斷服務 | 標頭長度的邏輯 | 已在 MRI test/webrick/test_httpserver.rb 中測試 |
已套用相同的減輕措施 |
CVE-2017-17742 | WEBrick 中的 HTTP 回應分割 | 無效標頭的邏輯 | 已在 ruby/spec :security 中測試 |
已套用相同的減輕措施 |
CVE-2018-8778 | String#unpack 中的緩衝區欠讀 | 範圍檢查 | 已在 ruby/spec :security 中測試 |
範圍檢查 |
CVE-2017-17405 | Net::FTP 中的命令注入漏洞 |
將命令中的路徑明確視為路徑,而非一般 IO 命令 | 已在 MRI test/net/ftp/test_ftp.rb 中測試 |
已套用相同的減輕措施 |
CVE-2017-10784 | WEBrick 基本驗證中的跳脫序列注入漏洞 | 記錄的適當跳脫 | 已在 MRI test/webrick/test_httpauth.rb 中測試 |
已套用相同的減輕措施 |
CVE-2017-0898 | Kernel.sprintf 中的緩衝區欠讀漏洞 |
|||
CVE-2017-14033 | OpenSSL ASN1 解碼中的緩衝區欠讀漏洞 | |||
CVE-2017-14064 | 產生 JSON 中的堆積暴露漏洞 | |||
CVE-2017-0902、CVE-2017-0899、CVE-2017-0900、CVE-2017-0901 | RubyGems 中的多個漏洞 | |||
CVE-2015-7551 | Fiddle 和 DL 中不安全的使用受污染字串 (CVE-2009-5147 的減輕措施發生迴歸) | 額外污染檢查 | 已在 MRI test/mri/tests/fiddle/test_handle.rb 中測試 |
由於我們不支援 $SAFE ,且 DL 模組已在 Ruby 2.2.0 中移除,因此不適用 |
CVE-2015-1855 | Ruby OpenSSL 主機名稱驗證 | |||
CVE-2014-8090 | 另一個阻斷服務 XML 擴充 | |||
CVE-2014-8080 | 阻斷服務 XML 擴充 | 已在 ruby/spec :security 中測試 |
||
無 | 已變更 ext/openssl 的預設設定 | |||
CVE-2014-2734 | 對漏洞的爭議 | |||
CVE-2014-0160 | TLS Heartbeat 擴充中的 OpenSSL 嚴重漏洞 | |||
CVE-2014-2525 | YAML URI 跳脫剖析中的堆積溢位 | |||
CVE-2013-4164 | 浮點數剖析中的堆積溢位 | 已在 ruby/spec :security 中測試 |
||
CVE-2013-4073 | SSL 用戶端中的主機名稱檢查略過漏洞 | |||
CVE-2013-2065 | Ruby 中 DL 和 Fiddle 中的物件污染略過 | 額外污染檢查 | 已在 MRI test/mri/tests/fiddle/test_func.rb 中測試 |
由於我們不支援 $SAFE ,且 DL 模組已在 Ruby 2.2.0 中移除,因此不適用 |
CVE-2013-1821 | REXML 中的實體擴充 DoS 漏洞 | |||
CVE-2013-0269 | JSON 中的阻斷服務和不安全的物件建立漏洞 | |||
CVE-2013-0256 | 由 rdoc 產生的 RDoc 文件中的 XSS 漏洞 |
|||
CVE-2012-5371 | 適用於 ruby 1.9 的雜湊填塞 DoS 漏洞 | |||
CVE-2012-4522 | 由插入非法 NUL 字元造成非預期的檔案建立 | |||
CVE-2012-4464、CVE-2012-4466 | 關於 Exception#to_s / NameError#to_s 的 $SAFE 跳脫漏洞 |
由於我們不支援 $SAFE ,因此不適用 |
||
無 | RubyGems 的安全性修復:遠端存放庫的 SSL 伺服器驗證失敗 | |||
CVE-2011-3389 | Ruby OpenSSL 模組的安全性修復:允許 0/n 分割,以防止 TLS BEAST 攻擊 | |||
CVE-2011-4815 | 發現 Ruby 雜湊演算法的阻斷服務攻擊 (參閱 CVE-2011-4838、CVE-2012-5370、CVE-2012-5372) | 透過納入程序開始時間,使雜湊成為非決定性 | 已在 ruby/spec :security 中測試 |
透過納入 /dev/urandom 的種子,使雜湊成為非決定性 |
無 | 例外狀況方法可以略過 $SAFE |
由於我們不支援 $SAFE ,因此不適用 |
||
無 | FileUtils 容易受到符號連結競爭攻擊 | |||
CVE-2010-0541 | WEBrick 中的 XSS | 不再隨附 WEBrick | ||
無 | ARGF.inplace_mode= 中的緩衝區溢位 |
|||
無 | WEBrick 具有跳脫序列注入漏洞 | 不再隨附 WEBrick | ||
CVE-2009-5147 | DL::dlopen 會使用受污染的名稱開啟程式庫 |
額外污染檢查 | DL 模組不存在於現代 Ruby 中 |
由於我們不支援 $SAFE ,且 DL 模組已在 Ruby 2.2.0 中移除,因此不適用 |
CVE-2009-4124 | String 中的堆積溢位 |
|||
無 | BigDecimal 中的 DoS 漏洞 |
|||
無 | REXML 中的 DoS 漏洞 |
|||
CVE-2008-1447 | Ruby 中的多個漏洞 | |||
CVE-2008-2662、CVE-2008-2663、CVE-2008-2725、CVE-2008-2726、CVE-2008-2664、CVE-2008-1891 | 任意程式碼執行漏洞 | |||
無 | WEBrick 的檔案存取漏洞 | 不再隨附 WEBrick | ||
無 | Net::HTTPS 漏洞 |
|||
JVN#84798830 | CGI 程式庫中的另一個 DoS 漏洞 | |||
CVE-2006-5467 | CGI 程式庫中的 DoS 漏洞 | |||
VU#160012 | Ruby 在安全層級設定中的漏洞 | 由於我們不支援 $SAFE ,因此不適用 |
JRuby 漏洞 #
TruffleRuby 使用 JRuby 的程式碼,因此針對 JRuby 回報的漏洞可能適用於 TruffleRuby。
編號 | 描述 | 他們的減輕措施 | 測試 | 我們的減輕措施 |
---|---|---|---|---|
CVE-2012-5370 | JRuby 計算雜湊值,而未適當限制以可預測的方式觸發雜湊衝突的能力 (參閱 CVE-2011-4815、CVE-2011-4838、CVE-2012-5372) | 透過納入程序開始時間,使雜湊成為非決定性 | 已在 ruby/spec :security 中測試 |
透過納入 /dev/urandom 的種子,使雜湊成為非決定性 |
CVE-2011-4838 | 1.6.5.1 之前的 JRuby 計算雜湊值,而未限制觸發雜湊衝突的能力 (參閱 CVE-2011-4815、CVE-2012-5370、CVE-2012-5372) | 透過納入程序開始時間,使雜湊成為非決定性 | 已在 ruby/spec :security 中測試 |
透過納入 /dev/urandom 的種子,使雜湊成為非決定性 |
Rubinius 漏洞 #
TruffleRuby 使用 Rubinius 的程式碼,因此針對 Rubinius 回報的漏洞可能適用於 TruffleRuby。
編號 | 描述 | 他們的減輕措施 | 測試 | 我們的減輕措施 |
---|---|---|---|---|
CVE-2012-5372 | Rubinius 計算雜湊值,而未適當限制以可預測的方式觸發雜湊衝突的能力 (參閱 CVE-2011-4815、CVE-2011-4838、CVE-2012-5370) | 透過納入 /dev/urandom 的輸出,使雜湊成為非決定性 |
已在 ruby/spec :security 中測試 |
透過納入 /dev/urandom 的種子,使雜湊成為非決定性 |
Java 相依性漏洞 #
JONI #
未發現任何已知的漏洞。
JCodings #
編號 | 描述 | 他們的減輕措施 | 測試 | 我們的減輕措施 |
---|---|---|---|---|
CVE-2010-1330 | 在 1.4.1 之前的 JRuby 版本中,當 $KCODE 設定為 'u' 時,其正規表示式引擎無法正確處理 UTF-8 字元後的緊接字元 |
在執行正規表示式操作時,檢查 UTF-8 編碼的位元組序列 | 已在 ruby/spec :security 中測試 |
已套用相同的減輕措施 |
其他依賴項漏洞 #
zlib
#
目前沒有已知的漏洞,但請考慮您系統中 zlib
的潛在漏洞。
libssl
#
請考慮您系統中 libssl
的潛在漏洞。
FFI #
編號 | 描述 | 他們的減輕措施 | 測試 | 我們的減輕措施 |
---|---|---|---|---|
CVE-2018-1000201 | 在 Windows 上,當使用 Symbol 作為程式庫名稱時,DLL 載入問題可能被劫持 |
在 ffi_lib 中,將 Symbols 視為與 Strings 相同 |
已應用相同的緩解措施,使用修復此漏洞的 FFI 版本 |
關於雜湊的注意事項 #
TruffleRuby 使用 MurmurHash2
雜湊演算法,並從 /dev/urandom
取得種子 - 無法設定使用其他雜湊演算法。對於雜湊字串,TruffleRuby 使用 Java 的雜湊演算法(然後在其上應用 MurmurHash2
)。