OWN NEWS GATHER
← 戻る
The Hacker News

Rubyが正規表現エンジンの脆弱性を修正、GitLabで深刻度10のRCEを招いた不具合に対処

要点

  • プログラミング言語「Ruby」の開発チームは、内蔵正規表現エンジン「Onigmo」のメモリ破損バグ3件を修正した最新版を公開した。

  • 本不具合は、GitLabが過去1か月に修正した4件の重大なリモートコード実行(RCE)脆弱性の根本原因となっていた。

  • 外部入力から動的に正規表現を生成するすべてのRubyアプリケーションが影響を受ける。

  • 修正版としてRuby 4.0.9、3.4.12、3.3.13が提供される一方、サポート終了済みの3.2以前にはパッチが提供されない。

  • Ruby公式が独自のCVE識別子を発行していないため、セキュリティスキャナーで検知できないギャップが生じている。

  • プログラミング言語「Ruby」の開発チームは2026年10月23日、言語に組み込まれている正規表現エンジン「Onigmo(鬼雲)」のバグ3件を修正するセキュリティアップデートをリリースした。この不具合は、ソフトウェア開発プラットフォーム「GitLab」において、最大深刻度「CVSS 10.0」に達する計4件のリモートコード実行(RCE)脆弱性を引き起こしていた根本原因であることが判明した。GitLabに限らず、外部入力から正規表現を組み立てるすべてのRubyアプリケーションが潜在的な影響を受けるという。

GitLabを脅かした深刻度10.0のRCE脆弱性

GitLabでは、CI/CD(継続的インテグレーション/継続的デリバリー)設定などに含まれるユーザー指定の正規表現パターンをサーバー上でコンパイルして処理している。調査の結果、攻撃者が細工したパターンをRubyがコンパイルする際、メモリが破損してサーバー上で不正なコードが実行(RCE:遠隔から任意のプログラムを実行されること)されるリスクが明らかになった。

GitLabは9月23日から10月21日にかけ、パッチ適用済みのRubyを同梱することで計4件のCVE(共通脆弱性識別子)を発行して対処した。9月公開の2件はログイン済みアカウントが必要で深刻度スコア9.9(10点満点)だったが、10月に公開された「CVE-2026-97229」(12日)と「CVE-2026-110264」(21日)はアカウント不要で悪用可能であり、最大深刻度の「CVSS 10.0」が割り当てられた。特に後者はGitLab 7.0以降の全バージョンが対象となった。これらは研究者のjoaxcar氏がバグバウンティを通じて報告したもので、10月23日時点で米サイバーセキュリティ・インフラセキュリティ庁(CISA)の「既知の悪用された脆弱性カタログ(KEV)」への登録は確認されていない。

影響を受ける条件とRubyの対応バージョン

Ruby公式のアドバイザリによると、影響を受けるのは攻撃者が制御できる文字列から正規表現を動的に生成しているアプリケーションだ。具体的には、外部入力を Regexp.new や Regexp.compile、Regexp.union に渡している場合や、式展開(/#{input}/)でパターン内に埋め込んでいる実装が該当する。開発者がコード内に固定した正規表現のみを扱う場合は影響を受けない。

修正版として以下のバージョンが提供されている。

  • Ruby 4.0系:4.0.9へ更新
  • Ruby 3.4系:3.4.12へ更新
  • Ruby 3.3系:3.3.13へ更新

3.4.12と3.3.13は各系列で本修正を含む初のリリースのほか、4.0系では同週公開の4.0.8にCVE-2026-110264の修正が含まれていないため4.0.9の適用が必須となる。2026年4月1日にサポート終了(EOL)を迎えた3.2以前には修正が提供されず、3.4や4.0への移行が推奨されている。直ちに更新できない場合の緩和策は、信頼できない入力からの正規表現コンパイルの停止のみだ。なお、「Regexp.timeout の設定」はこのバグを防止できず、短いパターンでも誘発されるため「パターンの長さ制限」も効果がないと警告されている。

独自のCVE未採番による検知ギャップとGitLabの対応

今回の修正について、Ruby側は現時点で独自のCVE番号を申請しておらず、GitLabの4つのCVE番号で追跡するよう案内している。これにより、CVE番号を参照するセキュリティスキャナーで検知漏れが生じる課題が浮上している。GitLabのCVE情報には影響対象としてGitLabのみが記載されているため、Ruby単体を検査するスキャナーでは検知できないためだ。Rubyは過去(2022年や2024年)にも同様のバグにCVEを割り当てた実績があり、ドキュメント上では未信頼パターンのリスクをサービス妨害(DoS)として記載しているものの、今後申請した場合はアドバイザリを更新するとしている。

一方、GitLabのセルフマネージド版の管理者は、CVE-2026-110264に対処した「19.5.1」または過去バージョン向けバックポート版(18.11.13まで提供)への更新が必要だ。GitLabは自前でパッチ済みRubyを同梱しているため、本体更新で問題が解消される。GitLab.comおよび最新のGitLab Dedicatedでは対応不要と発表されており、検知ルールも併せて公開されている。

元URL