Rubyの脆弱性は、Ruby本体(CRuby)と同梱のgem、Gemfile.lockで入れるgemに分けて確かめます。本体は使っている系列がサポート中かと最新版かを、gemは間接依存も含めて実際に入っている版を見ます。
- Ruby本体の正規表現の不具合を突いたGitLabの脆弱性(CVE-2026-97229)が、10月29日にKEVに載りました。Rubyは4.0.9・3.4.12・3.3.13で直しています。
- Ruby 3.2は2026年4月1日、Rails 7.2は9月24日の7.2.4で修正が終わりました。Rails 8.0のセキュリティ修正も11月7日に終わります。
- gemはbundler-auditで照合し、Ruby同梱のgem、本番で動いている版、Active Storageが使うlibvipsの版も確かめます。
01Rubyで今確かめたい脆弱性
Ruby本体と、Railsやよく使われるgemのうち、2026年に公表されて確かめておきたいものです。米CISAの悪用確認の一覧(KEV、10月30日版)には、Ruby本体やgemの名前で載った項目はありません。KEVに載ったGitLabの正規表現の脆弱性は、原因がRuby本体の正規表現エンジンにあります。2026年11月2日時点の内容です。[1]
| 脆弱性・問題 | 主な対象・条件 | 修正・対応 | 詳細 |
|---|---|---|---|
| Ruby本体の正規表現(Onigmo) GitLabのCVE-2026-97229ほか | 外部から受け取った文字列をRegexp.newや/#{input}/で正規表現にする処理。正規表現のコンパイル中にメモリが壊れるおそれがあります。Regexp.timeoutでは防げません。GitLabの件は10月29日(米国時間)にKEVに追加され、CISAは同じ問題がほかの製品にも及ぶおそれがあるとしています。Ruby側はCVEを取っていません。[1][2] | Ruby 4.0.9・3.4.12・3.3.13。上げられない間は、信頼できない入力から正規表現を作らない[2] | Ruby公式 |
| Active Storageの画像の変換 CVE-2026-66066 | variant_processorが:vips(load_defaults 7.0以降の既定)で、外部の利用者から画像のアップロードを受け付けるRailsアプリ。認証なしでサーバーのファイルや環境変数(secret_key_baseなど)を読まれるおそれがあります。GitHub Advisoryの記載でCVSS 4.0の9.5(緊急)。KEVには載っていません。[3] | 7.2.3.2・8.0.5.1・8.1.3.1以上と、libvips 8.13以上。更新後にsecret_key_baseや外部サービスの鍵を入れ替える[3] | GitHub Advisory |
| rack-sessionのCookieセッション CVE-2026-39324 | Rack::Session::Cookieをsecrets:付きで使うRackアプリ。復号に失敗したCookieを受け入れ、セッションを偽造されるおそれがあります。CVSS 4.0の9.1(緊急)。Railsアプリは通常、別の仕組みを使うため対象外です。[4] | 2.1.2以上。更新後にセッションの秘密鍵を入れ替える[4] | GitHub Advisory |
| rackのmultipartの解析 GHSA-5v64-555j-wjxm | 既定の設定でmultipartのリクエストを解析するアプリ。認証なしの1回のリクエストで、メモリを使い果たすおそれがあります。提供元の評価でCVSS 3.1の7.5(高)。10月30日公表で、CVEはありません。[5] | 2.2.25・3.1.23・3.2.8以上[5] | 提供元のアドバイザリ |
| NokogiriのCSSセレクタ CVE-2026-79770 | 外部の文字列をcss・at_css・searchなどのCSSセレクタに入れる処理。処理が極端に遅くなり、サービスが止まるおそれがあります。CVSS 3.1の7.5(高)。[6] | 1.19.3以上[6] | GitHub Advisory |
| Ruby同梱のresolv CVE-2026-80212・80213 | Resolvを直接使うか、resolv-replaceを読み込む処理。DNSの応答でメモリを使い果たすおそれなどがあります。Net::HTTPなどはOSの名前解決を使うため対象外です。Ruby 4.0・3.4・3.3の同梱の版は対象です。[7] | resolv 0.7.2以上(Ruby 3.3系は0.3.2)[7] | Ruby公式 |
| CrassのCSSの読み取り CVE-2026-116695 | rails-html-sanitizerなどで外部のCSSを無害化する処理。削除するはずのCSSを通すおそれがあります。 | 1.0.8以上 | 確認方法の詳細 |
KEVに載っているRailsの項目は、2025年7月7日に追加されたAction Viewのrender file:の脆弱性(CVE-2019-5418)など、古いものです。[1]Railsは3月23日にも、Action Packなどの10件を7.2.3.1・8.0.4.1・8.1.2.1で直しています。[8]ruby-samlは2026年の公表はなく、2025年12月の認証回避(CVE-2025-66568ほか)は1.18.0で直っています。[9]
02Ruby・Railsのサポート期限と更新先
Rubyは毎年12月25日に新しい系列が出ます。11月2日時点でサポートされているのは4.0・3.4・3.3の3系列で、3.3はセキュリティ修正だけを受ける段階です。[10][11]
| 系列 | 状態 | サポート終了 | 最新版(11月2日時点) |
|---|---|---|---|
| 4.0 | 通常の保守 | 未定 | 4.0.9 |
| 3.4 | 通常の保守 | 未定 | 3.4.12 |
| 3.3 | セキュリティ修正のみ | 2027年3月31日(予定) | 3.3.13 |
| 3.2 | 終了 | 2026年4月1日 | 3.2.11(最終) |
3.2は3月27日の3.2.11が最後で、10月23日の正規表現の修正は出ていません。Ruby公式は3.4か4.0への移行を勧めています。[12]3.3.13は、セキュリティ修正のみの段階では例外として出た版です。[2]4.0.0〜4.0.4には、DNSの応答を遅らせると落ちるおそれのあるgetaddrinfoの脆弱性(CVE-2026-46727)があり、4.0.5で直っています。[13]
Railsは、系列ごとにバグ修正とセキュリティ修正の期限が決まっています。8.0のセキュリティ修正は2026年11月7日に終わります。[14]
| Railsの系列 | バグ修正の期限 | セキュリティ修正の期限 | 最新版(11月2日時点) |
|---|---|---|---|
| 8.1 | 2026年10月10日 | 2027年10月10日 | 8.1.4 |
| 8.0 | 2026年5月7日 | 2026年11月7日 | 8.0.5.1 |
| 7.2 | 終了 | 終了(7.2.4が最後) | 7.2.4 |
7.2は9月24日の7.2.4が最後で、以後の修正は8.0と8.1にだけ出ます。[15]8.0を使っている場合は、8.1への移行を進めます。
03Rubyの依存関係の脆弱性を確かめる方法
定番は、RubySecの脆弱性データベース(ruby-advisory-db)とGemfile.lockを照合するbundler-auditです。[16]
gem install bundler-audit
# データベースを更新してから Gemfile.lock を確かめる
bundle-audit check --update11月2日時点で、ruby-advisory-dbにはActive StorageのCVE-2026-66066と、10月30日のrackの4件が入っています。[17]更新しないまま実行すると手元の古いデータベースで照合するため、--updateを付けるか、先にbundle-audit updateを実行します。
新しい版が出ているgemと、どの版が入っているかは、Bundlerで確かめます。
# 新しい版があるgem(Gemfileに書いたものだけ)
bundle outdated --only-explicit
# 版と、どこに入っているか
bundle info rack
bundle info nokogiri
# Gemfile.lock でどのgemの下に入っているか
grep -n -B3 '^ rack ' Gemfile.lock上げるときは、ほかのgemをなるべく動かさない--conservativeを付けると、差分を確かめやすくなります。
bundle update --conservative rack rack-session nokogiri04自分の環境が対象かを確かめる手順
- Gemfile.lockから見る:実際に入る版は
Gemfile.lockで決まります。rackやNokogiriはRailsの下に入る間接依存なので、Railsを上げても古い版が残ることがあります。bundle infoで版を直接確かめます。 - Ruby同梱のgemを見落とさない:resolv・erb・zlibなどはRubyに同梱されていて、Rubyを上げても同梱の版が古いことがあります。Ruby公式は、zlibの件で
Gemfileにgem "zlib", ">= 3.2.3"と書いて上げる方法を案内しています。[18]Gemfileに書いていない同梱のgemはGemfile.lockに載らないことがあり、その場合はbundler-auditで照合されないため、gem list resolvで入っている版を確かめます。 - 本番で動いている版を見る:手元と本番は別です。動いているコンテナで
docker exec <コンテナ名> bundle exec ruby -vとdocker exec <コンテナ名> bundle info rackを実行し、Rubyとgemの版を確かめます。イメージを作り直して配備するまで、Gemfile.lockを直しても本番は古いままです。 - Active Storageは更新だけで終わらない:CVE-2026-66066の修正版はlibvips 8.13以上を必要とします。本番のイメージで
vips --versionを確かめます。すでに読まれた秘密は更新しても戻らないため、提供元はsecret_key_baseや外部サービスの鍵の入れ替えを求めています。入れ替えると、ログイン中のセッションは切れます。[3] - Ruby本体の版は別に確かめる:bundler-auditが照合するのはgemで、Ruby本体の正規表現の修正は
ruby -vと上の表で確かめます。
05Rubyの解説記事
よくある質問
Railsを最新にすれば、rackやNokogiriの脆弱性も直りますか?
直らない場合があります。rackやNokogiriはRailsの下に入る間接依存で、Railsが許す範囲の古い版がGemfile.lockに残ることがあります。bundle info rackのように版を直接確かめ、bundle update --conservative rackで上げます。
Ruby 3.2のまま、gemだけ更新すれば足りますか?
足りません。3.2は2026年4月1日に終わり、10月23日の正規表現の修正は4.0.9・3.4.12・3.3.13にだけ出ています。Ruby公式は3.4か4.0への移行を勧めています。
bundler-auditで何も出なければ、対象外と考えてよいですか?
照合したのはGemfile.lockに書かれたgemだけです。Ruby本体の版、Gemfile.lockに載っていない同梱のgem、libvipsのようなOSのライブラリ、本番のコンテナの版は別に確かめます。データベースが古いと新しい公表を見落とすため、--updateを付けて実行します。
出典・参考資料
- CISA:Known Exploited Vulnerabilities Catalog(JSON版 2026.10.30)2026-11-02確認 / CVE-2026-97229の追加日と備考、CVE-2019-5418の追加日、Ruby本体・gemの項目がないこと
- Ruby公式:Regexp compilation fixes related to GitLab's CVE-2026-89078, CVE-2026-93577, CVE-2026-97229 and CVE-2026-1102642026-10-23 / 正規表現の不具合、対象になる使い方、修正版、Ruby側はCVEを取っていないこと、3.3.13が例外の版であること
- Rails:GHSA-xr9x-r78c-5hrm(CVE-2026-66066)2026-07-29 / Active Storageの条件・影響・修正版・CVSS 4.0の9.5、libvips 8.13以上、秘密の入れ替え
- rack-session:GHSA-33qg-7wpp-89cq(CVE-2026-39324)2026-04-08 / Cookieセッションの条件・修正版2.1.2・CVSS 4.0の9.1、Railsが通常対象外であること
- Rack:GHSA-5v64-555j-wjxm2026-10-30 / multipartの解析の問題、修正版、CVSS 3.1の7.5、CVEがないこと
- Nokogiri:GHSA-c4rq-3m3g-8wgx(CVE-2026-79770)2026-04-27 / CSSセレクタの条件・修正版1.19.3・CVSS 3.1の7.5
- Ruby公式:Security advisories: CVE-2026-80212 and CVE-2026-802132026-08-27 / resolvの対象・修正版・同梱の版、Net::HTTPが対象外であること
- Rails:Rails Versions 7.2.3.1, 8.0.4.1, and 8.1.2.1 have been released!2026-03-23 / 3月のセキュリティリリースの10件
- ruby-saml:セキュリティアドバイザリの一覧(GHSA-x4h9-gwv3-r4m4ほか)2026-11-02確認 / 2026年の公表がないこと、CVE-2025-66568の修正版1.18.0
- Ruby公式:Ruby Maintenance Branches2026-11-02確認 / 系列ごとの状態とサポート終了日
- Ruby公式:Download Ruby2026-11-02確認 / 系列ごとの最新版、4.1.0-preview1
- Ruby公式:Ruby 3.2.11 Released2026-03-27 / 3.2の最終リリース、3.4か4.0への移行の推奨
- Ruby公式:CVE-2026-467272026-05-20 / getaddrinfoの対象4.0.0〜4.0.4と修正版4.0.5
- Rails:Maintenance Policy2026-11-02確認 / 8.1・8.0のバグ修正とセキュリティ修正の期限
- Rails:Rails Version 7.2.4 has been released!2026-09-24 / 7.2の最後のリリース
- RubySec:bundler-audit2026-11-02確認 / コマンド、照合するもの
- RubySec:ruby-advisory-db(gems/activestorage・gems/rack)2026-11-02確認 / CVE-2026-66066とrackの10月30日の4件が登録されていること
- Ruby公式:CVE-2026-278202026-03-05 / 同梱のzlibをGemfileで上げる方法
