
GitLabで見つかった重大な脆弱性4件は、Rubyに組み込まれた正規表現エンジン「Onigmo」の不具合に起因していました。攻撃者が細工した正規表現を処理すると、GitLabサーバーで任意のコードを実行されるおそれがあり、GitLabでは悪用も確認されています。
4件の脆弱性に共通する原因
Onigmoは、Rubyで正規表現を解析・コンパイルするエンジンです。アプリケーションが文字列から正規表現を作る際に使われ、GitLabもCI/CD設定などのパターン処理に利用していました。
問題となったのは、パターンのコンパイル時にメモリ破損につながる不具合です。Ruby開発チームによると、細工されたパターンでメモリが破損し、GitLabサーバーでのリモートコード実行に悪用される可能性がありました。
4件の内訳は、正規表現パーサーの二重解放が1件、コンパイラーの整数オーバーフローが3件です。対象はCVE-2026-89078、CVE-2026-93577、CVE-2026-97229、CVE-2026-110264で、いずれもOnigmoの不具合が根本原因です。
GitLab側の修正と影響範囲
GitLabは脆弱性を修正し、19.4.2、19.3.5、19.2.8を公開しました。CVE-2026-97229では、特別に細工された正規表現をCI/CD設定に含めると、認証されていない攻撃者が任意のコードを実行するおそれがあります。
同脆弱性は、GitLab CEとEEのうち、19.2.8、19.3.5、19.4.2より前の各系列のバージョンに影響します。GitLab.comは修正済みバージョンで運用され、GitLab Dedicatedの利用環境にも公開前に修正が適用されました。
GitLabは、脆弱性の悪用試行を検知するため、自社で管理するインスタンス向けに6種類の検知機能も公開しています。GitLabは、管理インフラについても修正済みとしています。
GitLab以外のRuby環境にも修正
Ruby開発チームは、根本原因となった不具合を修正するため、Ruby 4.0.9、3.4.12、3.3.13を公開しました。これらのバージョンには、今回の4件すべてに対応する修正が含まれています。
影響するのは、攻撃者が制御できる文字列から正規表現をコンパイルするアプリケーションです。Rubyでは、Regexp.new、Regexp.union、Regexp.compileに入力を渡す場合や、文字列を正規表現リテラルに埋め込む場合が該当します。
開発者が記述した正規表現だけを使うアプリケーションは影響を受けません。Ruby開発チームは、該当する環境をRuby 4.0.9、3.4.12、3.3.13以降に更新するよう推奨しています。更新できない場合は、信頼できない入力から正規表現をコンパイルしないよう案内しています。
タイムアウトや長さ制限では防げない
Ruby開発チームによると、正規表現のタイムアウト機能では今回の不具合を防げません。パターンの長さを制限する方法も確実ではなく、短いパターンで発生する問題も含まれます。
Ruby開発チームは、今回の不具合をRuby自身の脆弱性として扱うか、Ruby独自のCVE番号を申請するかを検討中です。追跡には当面、GitLabが割り当てた4つのCVE番号を使うよう案内しています。










