GitLab CE/EEの未認証コード実行の脆弱性CVE-2026-110264

カテゴリ
脆弱性の公表
タグ
国外
目次
  1. 脆弱性の内容
    1. Org-modeの描画の経路
    2. Onigmo側の不具合
    3. 先行する同種の脆弱性
  2. 時系列
  3. 対象の製品と版
  4. 悪用の状況
  5. 修正と回避策
  6. 未公表の事項
  7. 注
  8. 出典
  9. 更新記録
  10. 関連記事

GitLabの2026年10月21日の発表では、GitLab CE/EEに、細工した正規表現のコンパイル時の整数オーバーフローにより、一定の条件の下で未認証の利用者がサーバー上で任意のコードを実行できるおそれのある脆弱性CVE-2026-110264があった⁠[1]。GitLabはセルフマネージドの全環境をただちに修正版へ更新するよう強く勧め、GitLab.comは修正済みの版で稼働している⁠[1]。

脆弱性の内容

表1:CVE-2026-110264の評価と影響
項目値資料
CVSS10.0(CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H、GitLabの評価)⁠[1]
CWE(CVE記録)CWE-190(Integer Overflow or Wraparound)⁠[5]
CWE(検知ルールの説明)CWE-94、CWE-787⁠[2]
悪用されたときの影響gitユーザーとしてのリモートコード実行(Org-modeの経路は未認証)⁠[2]
窃取の対象gitlab-secrets.jsonのインスタンスの秘密情報、全CI/CD変数、Runnerのトークン、アクセストークン⁠[2]
ほかの影響インスタンスの全リポジトリの読み書き、攻撃中のワーカーのクラッシュとサービスの低下⁠[2]
報告の経路HackerOneのバグ報奨金制度⁠[1]

GitLabの告知は、同じ修正版で直したセキュリティの問題を計12件〔注1〕挙げ、深刻度がCriticalのものはCVE-2026-110264だけだった⁠[1]。

Org-modeの描画の経路

GitLabが公開した検知ルール「Org mode render error burst」の説明によると、GitLabは.orgファイルをorg-rubyのgem(0.9.12)で描画している⁠[3]。gemは独自のTODOのキーワードをエスケープして選択肢を組むが、照合した生のキーワードを2つ目の正規表現に埋め込む⁠[3]。要求の本文でヒープの配置を操作すると、gitユーザーとしてのsystem()の呼び出しに至る⁠[3]。攻撃には、.orgのペイロードを置ける公開プロジェクトが1つあればよい⁠[3]。

GitLabはもう1つの検知ルール「Onigmo native worker crash」で、攻撃者が#+TODOの行で指定したキーワードの繰り返しが32,767を超えると、Onigmoが符号付き16ビットの上限を超える繰り返しIDを割り当てると説明した⁠[2]。その結果、照合時に範囲外書き込みが起きる⁠[2]。

Onigmo側の不具合

Rubyの開発チームの10月23日の告知では、元の不具合は「繰り返しの多いパターンでの内部IDのオーバーフロー」(Rubyの変更#16801)だった⁠[4]。不具合に到達するのは、攻撃者が制御する文字列から正規表現をコンパイルするアプリケーションだけである⁠[4]。Regexp.timeoutは防御にならず、パターンの長さの制限も確実な防御にならない⁠[4]。GitLabは同梱するRubyにパッチを当てて自社の版で対処し、CVE-2026-89078、CVE-2026-93577、CVE-2026-97229、CVE-2026-110264の4件を割り当てた⁠[4]。

先行する同種の脆弱性

GitLabの検知ルール「Onigmo native worker crash」の説明によると、このルールはCIの経路でコンパイル時にオーバーフローするCVE-2026-93577とCVE-2026-97229も対象にする⁠[2]。Org-modeの描画の経路とCIの経路のどちらも、正規表現の仮想機械がバッファの外で動く結果になる⁠[2]。

The Hacker Newsは、同じ報告者がGitLabの正規表現エンジンで報告したコード実行の脆弱性は、1か月で今回が4件目だと報じた⁠[11]。19.2より前の版に及んだのは、そのうち今回が初めてだと伝えた⁠[11]。GitLabが10月12日に同じく未認証の正規表現のコンパイラのオーバーフローCVE-2026-97229を、9月23日にログインしたアカウントを要するCVE-2026-93577とCVE-2026-89078を修正したとも報じた⁠[11]。

NVDの記録によると、CISAは10月29日にCVE-2026-97229を既知の悪用された脆弱性(KEV)のカタログに加えた⁠[13]。

目次へ

時系列

時系列
日付主体内容資料
2026年10月21日GitLabCE/EEの修正版と、悪用の試みを検知するルール2つを公開した⁠[1]
2026年10月22日GitLabCNAとしてCVE記録を公開した⁠[5]
2026年10月22日カナダ・サイバーセキュリティセンター注意喚起AV26-1074を出した⁠[8]
2026年10月22日Censys注意喚起を公開した⁠[9]
2026年10月23日Rubyの開発チームOnigmoの不具合を修正した4.0.9、3.4.12、3.3.13を公開した⁠[4]
2026年10月28日JPCERT/CCWeekly Reportで「GitLabに複数の脆弱性」を取り上げた⁠[7]
2026年10月29日CISA先行する同種の脆弱性CVE-2026-97229をKEVのカタログに加えた⁠[13]
2026年10月30日CVE ProgramCVE記録にRubyの告知を参照として加えた⁠[5]
2026年11月1日Shadowserver脆弱なインスタンスの追跡数を投稿した⁠[10]

目次へ

対象の製品と版

表2:GitLab CE/EEの影響を受ける版と修正版
製品影響を受ける版修正版資料
GitLab CE/EE(18.11系まで)7.0以降、修正版より前の全版18.11.13(バックポート)⁠[1]
GitLab CE/EE 19.0系修正版より前の全版19.0.10(バックポート)⁠[1]
GitLab CE/EE 19.1系修正版より前の全版19.1.9(バックポート)⁠[1]
GitLab CE/EE 19.2系修正版より前の全版19.2.9(バックポート)⁠[1]
GitLab CE/EE 19.3系修正版より前の全版19.3.6⁠[1]
GitLab CE/EE 19.4系修正版より前の全版19.4.3⁠[1]
GitLab CE/EE 19.5系修正版より前の全版19.5.1⁠[1]

ITmedia NEWSは、7.0は約12年前の2014年6月に公開された版だと報じた⁠[12]。

GitLabは、GitLab Dedicatedでは19.3.5-internal0と19.4.2-internal0以降で稼働するテナントが修正を含み、対応は要らないと説明した⁠[1]。

The Hacker Newsは、GitLabが通常修正するのは現行と直前の2つの月次の版で、修正版のうち4つはそれより古い版だと報じた⁠[11]。10月12日の更新を当てたインスタンスも、再び影響の範囲に入るとした⁠[11]。

Censysの10月21日の推計では、インターネットに露出したGitLabサーバーの半数超が、独自の修正版の無い7か月より古い系列で動いている⁠[9]。現行より3つ以上前のメジャー版で動くものは、4分の1超とした⁠[9]。

目次へ

悪用の状況

Censysの10月22日の注意喚起では、同社のRapid Responseチームは実環境での悪用を把握しておらず、公開の概念実証も無かった⁠[9]。同じ日にCVE-2026-110264の名を付けたGitHubのリポジトリが2つ現れた⁠[9]。1つは作者の説明では関連するCVE-2026-97229を実装したもので削除され、もう1つは中身を消された⁠[9]。

CISAはCVE記録に加えたSSVCの評価で、Exploitationをnone、Automatableをyes、Technical Impactをtotalとした⁠[5]。NVDの記録は10月31日の更新でも、CISAのKEVへの追加を示す欄を持たない⁠[6]。

Censysは公表の日に、GitLabを動かすホストを約82,000、Webプロパティを約209,000観測した⁠[9]。修正前の全版が影響を受けるため、実質的にその全体が範囲に入るとした⁠[9]。攻撃面に脆弱な可能性のあるインスタンスを持つ顧客には、Censysから通知した⁠[9]。

Shadowserverの11月1日の投稿では、追跡しているCVE-2026-110264に脆弱なインスタンスは11300超だった⁠[10]。日々観測するGitLabのインスタンスは約39Kで、CVE-2026-97229に脆弱なものも1000超追跡している⁠[10]。脆弱なHTTPのレポートでは、'cve-2026-110264'のタグを付けてIPのデータを配っている⁠[10]。

表3:GitLabの検知ルールが示した痕跡と調査の対象
種別値示した組織資料
クラッシュの記録Puma/Railsのワーカーのエラー出力に出る、org-rubyとOnigmoを通るRubyのネイティブのクラッシュ([BUG])GitLab⁠[2]
記録の所在puma_stderr.log(Omnibusでは/var/log/gitlab/puma/puma_stderr.log)GitLab⁠[2]
描画の失敗の集中1つのクライアントが30分以内に.orgファイルの描画でTimeout::Errorを5回以上起こすGitLab⁠[3]
調査の対象Pumaの想定外の子プロセス、/tmpのgit所有の新しいファイル、外向きの通信、gitユーザーのcrontabやSSH鍵の変更GitLab⁠[3]

GitLabは、CVE-2026-110264の悪用が成功しても静かで確実にはクラッシュしないため、クラッシュのルールは裏付けの役だと説明した⁠[2]。検知が無くても、試行や成功が無かったことにはならないとした⁠[2]。もう1つのルールでGitLabが挙げた描画の試行の行き着く先は、時間切れ、ワーカーの停止(Workhorseの502)、未使用のメモリへの書き込みによる静かな完了の3通りである⁠[3]。最後の静かな完了は、成功に先立ちうる⁠[3]。

目次へ

修正と回避策

GitLabの告知によると、CVE-2026-110264の修正はGitLabのコードではなくRubyへのパッチで、公式のLinuxパッケージとコンテナイメージにだけ含まれる⁠[1]。

  1. 公式パッケージに同梱のRubyでなく独自のRuby実行環境を使うGitLab(自前でコンパイルした環境、独自のコンテナイメージなど)は、GitLabの更新だけでは足りず、Rubyを3.3.13、3.4.12、4.0.9以降に更新する⁠[1]。
  2. コード実行の兆候があればインスタンスを侵害されたものとして扱い、gitlab-secrets.jsonの秘密情報、全CI/CD変数、全Runnerのトークン、全アクセストークンを入れ替える⁠[3]。
  3. 修正までの間は、可能な範囲で公開の範囲を狭める(未認証の経路には、GitLabが描画する公開の.orgファイルが要るため)⁠[3]。

GitLabは、19.4.3と19.3.6にはデータベースの移行が含まれると説明した⁠[1]。単一ノードの環境では移行が終わるまでGitLabが起動せず、更新中に停止が生じる⁠[1]。複数ノードの環境は、適切なゼロダウンタイムの手順で停止なしに適用できる⁠[1]。

Rubyの開発チームは、セキュリティ保守期間中の3.3系にも、GitLabがCVEを割り当てたことを理由に例外として修正を入れた⁠[4]。少なくとも今のところ、これらの修正にRubyのCVEは求めておらず、追跡にはGitLabのCVE番号を使うよう求めた⁠[4]。

カナダ・サイバーセキュリティセンターは注意喚起AV26-1074で利用者と管理者に必要な更新の適用を促し⁠[8]、JPCERT/CCはWeekly Reportで修正済みの版への更新を案内した⁠[7]。

目次へ

未公表の事項

  • GitLabの修正版の告知が「一定の条件の下で」とした条件の内容
  • GitLabの脆弱性のissueの内容
  • Censysの10月22日の評価より後の、実環境での悪用の有無

注

  • 〔注1〕The Hacker Newsは、10月21日の版が修正したセキュリティの問題を計11件と報じた⁠[11]。

出典

当事者

関係組織

公的機関

調査・観測

報道機関

更新記録

  • 2026年11月1日:公開した。
  • 2026年11月2日:先行する同種の脆弱性CVE-2026-97229のKEVへの追加を加えた。

目次へ