- GraalVM for JDK 23 (最新)
- GraalVM for JDK 24 (早期アクセス)
- GraalVM for JDK 21
- GraalVM for JDK 17
- アーカイブ
- 開発ビルド
セキュリティ
セキュリティの脆弱性については、脆弱性報告ガイドに記載されている手順に従って報告してください。GraalVM プロジェクト(TruffleRuby を含む)のセキュリティ問題に関する具体的なガイドラインは、SECURITY ファイルにあります。
MRI の脆弱性 #
MRI に対して報告された脆弱性は、Ruby の設計、または MRI と共有するコードに適用される場合があります。ここでは、報告された MRI の脆弱性を一覧表示し、MRI が脆弱性をどのように軽減したか(軽減策がテストされている場合はその方法)、および TruffleRuby がどのように軽減したかを説明します。古い報告書から詳細を把握するのが困難な場合が多いため、すべてのレガシー脆弱性を調査したわけではありません。
MRI のウェブサイトの詳細と相互参照してください。
番号 | 説明 | それらの軽減策 | テスト | 私たちの軽減策 |
---|---|---|---|---|
CVE-2024-27282 | 正規表現検索による任意のメモリアドレス読み取りの脆弱性 | 修正 | Java のセマンティクスにより該当しません | |
CVE-2024-27281 | RDoc の .rdoc_options における RCE の脆弱性 | 修正 | テスト | TruffleRuby は gem install で 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 | String から Float への変換におけるバッファオーバーラン | Java のセマンティクスにより該当しません | ||
CVE-2022-28738 | 正規表現のコンパイルにおけるダブルフリー | Java のセマンティクスにより該当しません | ||
CVE-2021-41819 | CGI::Cookie.parse の Cookie プレフィックス スプーフィング | 修正 | テスト | 同様 |
CVE-2021-41817 | 日付における正規表現サービス拒否脆弱性 (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 の安全でないオブジェクト作成の脆弱性(追加の修正) | 修正 | 仕様 | 使用している JSON の純粋な Ruby バージョンは安全です |
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 のダイジェストアクセス認証の正規表現サービス拒否脆弱性 | 修正 | 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 の大規模なリクエストによる DoS | ヘッダー長のロジック | MRI test/webrick/test_httpserver.rb でテスト済み |
同じ軽減策を適用 |
CVE-2017-17742 | WEBrick の HTTP レスポンス分割 | 無効なヘッダーのロジック | ruby/spec :security でテスト済み |
同じ軽減策を適用 |
CVE-2018-8778 | String#unpack のバッファアンダーリード | 範囲チェック | ruby/spec :security でテスト済み |
範囲チェック |
CVE-2017-14033 | Net::FTP のコマンドインジェクション脆弱性 |
コマンド内のパスを明示的にパスとして扱い、一般的な IO コマンドとしては扱わない | MRI test/net/ftp/test_ftp.rb でテスト済み |
同じ軽減策を適用 |
CVE-2017-10784 | WEBrick の Basic 認証におけるエスケープシーケンスインジェクション脆弱性 | ログの適切なエスケープ | 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 をサポートしていないため、および Ruby 2.2.0 で DL モジュールが削除されたため、該当しません |
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 ハートビート拡張の 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 をサポートしていないため、および Ruby 2.2.0 で DL モジュールが削除されたため、該当しません |
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 モジュールのセキュリティ修正:TLS BEAST 攻撃の防止策として 0/n 分割を許可 | |||
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 は汚染された名前でライブラリを開きます |
追加の汚染チェック | 最新の Ruby には DL モジュールが存在しません |
$SAFE をサポートしていないため、および Ruby 2.2.0 で DL モジュールが削除されたため、該当しません |
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 | ライブラリ名にSymbol を使用する場合、WindowsでDLLの読み込みの問題が悪用される可能性があります。 |
ffi_lib では、SymbolをStringと同じように扱ってください。 |
この脆弱性を修正したFFIのバージョンを使用することで、同じ軽減策を適用しました。 |
ハッシュに関するメモ #
TruffleRubyは、/dev/urandom
からのシードを使用したMurmurHash2
ハッシュを使用します。他のハッシュアルゴリズムを使用するように設定することはできません。文字列のハッシュには、TruffleRubyはJavaのハッシュアルゴリズム(そしてその上にMurmurHash2
)を使用します。