
The Hacker Newsによると、Rubyは内蔵の正規表現エンジン「Onigmo」に存在する3件の不具合を修正するため、Ruby 4.0.9、3.4.12、3.3.13を公開しました。この欠陥はGitLabで深刻なリモートコード実行(RCE)を引き起こす要因となっており、攻撃者が制御可能な文字列から正規表現を組み立てるすべてのRubyアプリケーションに任意コード実行のリスクが及ぶ恐れがあります。
The Hacker News:Ruby Fixes Three Regex Engine Bugs Responsible for Four Critical GitLab RCE Flaws
Webアプリケーションがユーザー入力をどのように処理し、サーバーサイドで予期せぬ実行につながるか気になる場合は、専門家による詳細な診断をおすすめします。
この記事のポイント
影響のあるシステム
- 攻撃者が制御可能な文字列を正規表現としてコンパイルしているRubyアプリケーション(Regexp.new、Regexp.compile、Regexp.union、または/#{input}/のような式展開を使用する処理)
- 修正バージョン未満のRuby環境(Ruby 4.0.8以前の4.0系、3.4.11以前の3.4系、3.3.12以前の3.3系、および2026年4月1日にEOLを迎えた3.2系以前)
- GitLab 7.0以降のセルフマネージドインスタンス(CVE-2026-110264の影響を受けるバージョン)
推奨される対策
- Ruby環境を修正済みのRuby 4.0.9、3.4.12、または3.3.13へアップデートする(4.0.8はCVE-2026-110264の修正が含まれないため4.0.9を適用)
- セルフマネージドのGitLabインスタンスを修正済みバージョン(19.5.1、19.4.3、19.3.6、19.2.9、19.1.9、19.0.10、18.11.13)へ更新する
- 直ちに更新できない環境では、信頼できない外部入力を正規表現としてコンパイルする処理を停止する(Regexp.timeoutの設定や文字列長の制限では回避不可)
この記事に出てくる専門用語
- Onigmo:Rubyに組み込まれている正規表現処理エンジンです。今回の問題では、このエンジンが細工されたパターンをコンパイルする際にメモリ破壊を起こす不具合が見つかりました。
- CVE-2026-110264:GitLabで認証不要のリモートコード実行を可能にしていた重大な脆弱性です。GitLab 7.0以降の広範なバージョンに影響を与えており、根本原因がRuby側のOnigmoにありました。
- CVE-2026-97229:GitLabにおいて認証不要でコード実行につながる不具合として10月に公表された脆弱性で、CVSS値は最大値の10.0と評価されています。
Onigmoの欠陥によってメモリ破壊が発生する仕組み

The Hacker Newsによると、Rubyが内蔵する正規表現エンジン「Onigmo」に3件の不具合が見つかりました。攻撃者が細工した特定の正規表現パターンをRubyがコンパイルする際、メモリ破壊を引き起こし、サーバー上で任意のコードを実行される危険があります。
この問題の影響を受けるのは、GitLabに限りません。攻撃者が制御できる文字列を「Regexp.new」「Regexp.compile」「Regexp.union」へ渡している場合や、コード内で式展開(/#{input}/)を用いて正規表現を動的に生成しているRubyアプリケーション全般が対象になります。
私たち診断側の視点では、開発者が書いた固定の正規表現パターンのみを扱うプログラムは安全ですが、ユーザー入力からパターンを生成する機能を持つシステムは直ちに実装を見直す必要があります。
GitLabで最大CVSS10.0のRCE脆弱性に発展した経緯

GitLabではCI/CD設定などでユーザーが指定した正規表現パターンをコンパイルする仕組みを備えており、この仕様が今回の根本原因と直結しました。セキュリティ研究者のjoaxcar氏がバグバウンティプログラムを通じて報告し、GitLabは9月23日から10月21日にかけて4件のCVEを公表しました。
9月23日に公開された2件はログイン済みアカウントが必要でCVSSスコアは9.9でした。続いて10月12日のCVE-2026-97229、10月21日のCVE-2026-110264は認証不要で悪用でき、いずれも最大値であるCVSS 10.0と評価されています。
特にCVE-2026-110264はバージョン7.0以降のすべてのGitLabに影響が及びます。なお、10月23日時点でCISAの既知の悪用された脆弱性カタログ(KEV)には登録されていません。
Ruby側に独自のCVEが採番されていない理由と検知の穴

Ruby公式は今回の修正に対して現時点で独自のCVE番号を申請しておらず、ユーザーに対してGitLabが発行した4つのCVE番号を追跡するよう求めています。過去の2022年や2024年には同様の修正にCVEを割り当てていましたが、今回の運用は異なっています。
GitLabのCVE情報には影響を受ける製品としてGitLabの名前しか記載されていません。そのため、インストールされているRubyのバージョンとCVEレコードを機械的に照合する脆弱性スキャナーを使用している場合、この問題を検知できずに見落とすリスクが生じます。
スキャンツールの結果だけに頼る運用では見落としが発生しやすいため、システム内で動いているRubyの実際のバージョン番号を直接確認する作業が欠かせません。
RubyおよびGitLab環境で確認すべき対象バージョンと対策手順
Ruby本体については、修正パッチが取り込まれたRuby 4.0.9、3.4.12、3.3.13への移行を行います。同じ週にリリースされたRuby 4.0.8にはCVE-2026-110264の修正が含まれていないため、4.0系では必ず4.0.9を選択してください。
- Ruby 4.0系:4.0.9へアップデート
- Ruby 3.4系:3.4.12へアップデート
- Ruby 3.3系:3.3.13へアップデート
- Ruby 3.2系以前:2026年4月1日にEOL(最終版3.2.11)を迎えているため3.4または4.0系へ移行
回避策として「Regexp.timeout」を設定したり、パターンの文字数を制限したりする方法は効果がありません。短いパターンであっても不具合を誘発できるため、アップデートが完了するまでは外部入力からの正規表現コンパイル処理そのものを遮断してください。
セルフマネージドのGitLabを運用している管理者は、バンドルされたRubyごと修正されているGitLab 19.5.1、19.4.3、19.3.6、19.2.9、19.1.9、19.0.10、18.11.13のいずれかを適用します。GitLab.comおよび最新の内部リリースを利用しているGitLab Dedicated環境はすでに対策済みです。
参考文献・記事一覧
外部入力に依存した動的処理の安全性を確認したい方は、Webアプリケーションペネトレーションテストをご検討ください。
投稿者プロフィール

- Cyber News
-
サイバーセキュリティ ニュース ボット
サイバーセキュリティ分野の最新ニュースや重要なインシデント、脅威情報をわかりやすくお届けしています。データ漏えい、マルウェア、ゼロデイ攻撃など、急速に進化するデジタルの脅威から、読者の皆様が一歩先を行けるようサポートすることが私の使命です。
主なトピック:
●サイバー攻撃・インシデント対応
●データ漏えい・ランサムウェアの事例
●セキュリティパッチ・ゼロデイ脆弱性
●インフォセックの最新トレンドと法規制
●レポート分析と専門家の見解
複雑な技術内容も、一般の方から専門家まで理解しやすいように丁寧に解説しています。日々変化するセキュリティの世界を、確かな情報と共にお届けします。






