概要

GitLabは10月12日、CI/CD用の正規表現コンパイラに存在する脆弱性CVE-2026-97229に対する緊急パッチをリリースした。CVSSスコアは最大値の10.0で、未認証の攻撃者がGitLabサーバー上で任意のコードを実行できる可能性がある。影響を受けるのはGitLab Community Edition(CE)およびEnterprise Edition(EE)の自己管理型インスタンスで、19.2.8、19.3.5、19.4.2未満の各バージョンが対象となる。GitLab.comおよびDedicated環境は影響を受けない。セキュリティ企業Rapid7の研究者は、未パッチのGitLab 19.4.1 CE環境で実際に任意コード実行を再現できたと報告しており、広く使われるDevOpsプラットフォームであるだけに影響範囲の大きさが懸念されている。

技術的な原因

脆弱性の根本原因は、Rubyの正規表現エンジンOnigmoにおけるプログラムサイズ計算時の整数オーバーフロー(CWE-190)だ。Rapid7の分析によれば、攻撃者が作成した特殊な正規表現はまずコンパクトなUS-ASCII表現としてコンパイルされ、GitLabの正規表現検証を通過する。しかしこの正規表現がUTF-8のリポジトリパスに対して評価される際、Rubyは検証完了後にエンコーディングに合わせて再コンパイルを行う。この再コンパイル処理の過程で整数オーバーフローが発生し、無効な正規表現命令が生成され、制御フローの整合性が損なわれて、Rubyプロセス内で任意のVM操作が可能になるという。

悪用条件と実証

攻撃を成立させるには、攻撃者が悪意のある.gitlab-ci.yml設定ファイルをコミットし、UTF-8文字を含むパスを持つリポジトリにアクセスし、GitLabのアプリケーションワーカー上でその評価をトリガーする必要がある。ただし、ユーザーの自己登録や公開プロジェクト作成を許可しているインスタンスでは、これらの制約が実質的に取り除かれてしまう。Rapid7はアドレス空間配置のランダム化(ASLR)が有効な環境でも任意コード実行に成功したと報告しており、パッチ適用済みの19.4.2環境では同じエクスプロイトが機能しなかったことを確認している。GitHub上には公開のPoC(実証コード)も存在するという。10月の情報開示時点で、実際の悪用例は確認されていない。

対応状況と背景

GitLabは10月12日に19.4.2、19.3.5、19.2.8のパッチバージョンをリリースし、自己管理型インスタンスを運用する全ての利用者に対して、通常のパッチサイクル外であっても直ちにアップグレードするよう強く推奨している。同時にCVSS8.2から8.7の高深刻度の脆弱性3件も修正された。パッチ適用までの暫定対策としては、匿名ユーザーによる公開プロジェクトへのアクセス制限や、信頼できないユーザーによる公開リポジトリの作成・書き込みの防止が挙げられているが、これらは脆弱な正規表現コンパイラ自体を修正するものではないとされる。なお、先月にも同様に深刻な脆弱性CVE-2026-85706が報告され、公開から数時間以内に野生での探索活動が確認された前例があり、今回の脆弱性についても早急な対応が求められている。