GitLabの任意コード実行脆弱性CVE-2026-97229(CVSS 10.0)、修正版と公開PoCの攻撃条件を整理

この記事は約6分で読めます。

GitLabは2026年10月12日、Community Edition(CE)とEnterprise Edition(EE)の脆弱性CVE-2026-97229を修正する19.4.2、19.3.5、19.2.8を公開しました。CI/CD設定の正規表現処理で任意コード実行につながる問題で、GitLabによるCVSS v3.1の基本値は10.0(Critical)です。

10月16日にはRapid7が技術分析と概念実証(PoC)を公開しました。自己管理型(Self-Managed)のGitLabを運用する組織は、修正の適用を優先してください。GitLab.comとGitLab Dedicatedは修正済みです。

CI/CDの設定処理からサーバー上のコード実行へ

GitLabの公式告知によると、CI/CD設定内の正規表現に対する検証が不十分なため、細工された設定によって、一定の条件下で認証されていない利用者が任意コードを実行できるおそれがあります。GitLabのCVE記録での分類はCWE-190(整数オーバーフロー)です。

Rapid7が分析した経路は、CIの条件判定でリポジトリ内のパスを正規表現と照合する処理です。入力時の検査と、Rubyの正規表現エンジンOnigmoが実際に処理する内容にずれがあり、整数オーバーフローとメモリ破壊へつながります。この経路は、パイプラインの作成やRunnerを介さず、CI設定を静的に検証するCI lintの段階で到達します。

同社は、Linux amd64向けの公式GitLab CE 19.4.1イメージで、メモリ配置をランダム化するASLRを有効にしたまま、OS上のgitアカウント権限で任意コマンドを実行できることをPoCで実証しています。この結果から、root権限で実行できるとも、すべてのOS・構成で同じように成功するとも言えません。

公式の「認証不要」と、公開PoCで必要な準備

GitLabのCVSS評価はPR:N/UI:Nで、事前の権限と利用者操作は不要とされています。一方、Rapid7が公開した攻撃経路では、攻撃者が書き込める公開プロジェクトに、悪意あるCI設定と細工したパスを事前に配置しておく必要があります。最後に処理を起動するCI lintの呼び出しが認証不要であることと、この事前準備が必要であることは、分けて考える必要があります。

Rapid7も、この前提がGitLabの評価と異なる点を指摘しています。元の報告は非公開で、GitLabが評価した経路でこの準備が不要になる理由は、公開情報からは確認できません。公開PoCだけでは、「誰でも無条件に匿名で侵害できる」とも、「書き込み権限を持つ利用者しか悪用できない」とも断定できません。更新の判断は、GitLabが公表した影響範囲に従ってください。

影響するバージョンと修正版

公式告知とGitLabのCVE記録が示す、CVE-2026-97229の影響範囲は次のとおりです。CEとEEの両方が対象です。公式告知では導入形態が限定されていない場合、Linuxパッケージ、ソース、Helm chartなどすべての導入形態が対象になると定めています。

系列 影響する範囲 本件を修正した版
19.4 19.4.0以上、19.4.2未満 19.4.2
19.3 19.3.0以上、19.3.5未満 19.3.5
19.2 19.2.0以上、19.2.8未満 19.2.8

表は本件を最初に修正した版を示しており、更新時点の最新推奨版の一覧ではありません。19.2より前の版は本件の影響範囲に含まれていませんが、同じリリースでは、古い版に影響する別の脆弱性も修正されています。

GitLab.comは修正版で稼働しており、GitLab Dedicatedも公開前に内部リリースで修正されています。自己管理型の環境では、パッケージ、コンテナ、Helm chartなど、自組織の導入方法に対応した公式の更新手順を確認してください。更新経路に必須の中間バージョンや移行処理がある場合は、それに従う必要があります。

公式告知によると、このパッチにはデータベースマイグレーションが含まれ、単一ノード構成では更新中にダウンタイムが発生します。19.3.5には更新後に実行できるpost-deployマイグレーションも含まれます。複数ノード構成では、所定の無停止更新手順に従えばダウンタイムを避けられるとされています。

19.2.8で本件を修正しても、19.2系列の保守は別途確認する

2026年10月17日に確認したGitLabの保守方針では、通常の保守対象は19.5(バグ修正とセキュリティ修正)、19.4と19.3(セキュリティ修正)です。19.2.8は本件の修正版ですが、19.2系列で今後も通常のセキュリティ更新が続くことを意味しません。

また、有償契約で受けられるサポートの対象範囲と、セキュリティ修正を受け取れる系列は、別の方針で定められています。19.2を利用している場合は、本件の対処に加え、公式の更新経路に沿って現在の保守対象系列の最新パッチへ移行する計画を確認してください。

GitLabの過去の脆弱性は、当サイトのGitLab更新記事でも取り上げています。今回とは別の脆弱性であり、以前の対処が済んでいても、今回の修正が入っているか改めて確認が必要です。

実悪用の状況と、更新までに確認できる兆候

2026年10月17日時点で、GitLabの告知とRapid7の分析には、本件が実際の攻撃で悪用されたとの記載はありません。公開PoCによる実証と、実環境での侵害は別の情報です。PoCが存在する以上、悪用の報告を待つことを更新延期の理由にはできません。

Rapid7は、サーバー側の兆候として、CI lintへのアクセスと同時期のHTTP 502やPumaワーカーのクラッシュ・再起動を挙げています。リポジトリ側では、関連するコミットに含まれる不審な正規表現や、4バイトUTF-8文字を含むパス名を確認し、これらを組み合わせて調べる方法を示しています。これらのエラーは通常の障害でも起きるため、単独で侵害を断定する材料にはなりません。また、公開PoCの経路と違う攻撃では同じ兆候が残るとは限りません。

同社は一時的な緩和として、攻撃者が書き込める公開プロジェクトへの認証不要アクセスや、該当するlint経路を制限する方法を挙げています。ただし、この制限は公開PoCの経路を想定したもので、GitLabが評価した非公開の経路を防げるかは確認できません。また、経路の制限は脆弱な処理自体を修正しません。利用機能への影響を確認したうえで補完策として扱い、修正版の適用を進めてください。

参考情報

本記事は2026年10月17日時点で確認した公開情報に基づいています。

コメント

タイトルとURLをコピーしました