Experimental feature in 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#packString#unpack 中傳播 額外污染作業 已在 ruby/spec :security 中測試 額外污染作業
CVE-2018-6914 使用 tempfiletmpdir 中的目錄遍歷建立非預期的檔案和目錄 路徑清理 已在 ruby/spec :security 中測試 路徑清理
CVE-2018-8779 UNIXServerUNIXSocket 中由受污染的 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)。

與我們聯繫