GitLab 脆弱性 CVE-2026-110264(Critical・CVSS 10.0)は、特別に細工した正規表現をコンパイルするときの整数オーバーフローで、条件によっては未認証のまま GitLab サーバー上の任意のコード実行に至りうる問題です。GitLab は 2026-10-21 に 19.5.1・19.4.3・19.3.6 と、さかのぼった 19.2.9・19.1.9・19.0.10・18.11.13 を出しました。本記事は gitlab-org/cves の CVE 記録とリポジトリのタグを照合し、系列ごとの上げ先と GitLab バージョン確認の手順をまとめます。
THE SCALECVE-2026-110264
未認証のまま任意コード実行に至りうる
10.0
CVSS 3.1 基本値
Critical・認証も操作も不要
7.0以降
影響を受ける版
各系列の修正版より前
7系列
修正版が出た系列
18.11 から 19.5 まで
30秒でわかる GitLab 脆弱性 CVE-2026-110264(2026-10-22時点)
- ・何が起きた:正規表現のコンパイル時の整数オーバーフロー(CWE-190)。CVE 記録は、条件によっては未認証で任意コード実行に至りうると説明
- ・影響:GitLab CE/EE の 7.0 以降で、各系列の修正版より前のすべて。回避策の記載は無い
- ・修正版:18.11.13/19.0.10/19.1.9/19.2.9/19.3.6/19.4.3/19.5.1
- ・注意:同じ回の High 2件などは 19.3.6・19.4.3・19.5.1 でしか直らない
まずやること
- ・self-managed を運用している:今の版を確かめ、同じ系列の修正版(下の表)へ上げる。18.10 以前は修正版が無いので、アップグレードパスを組む
- ・GitLab.com を使っている:適用済み。Dedicated は 19.3.5-internal0/19.4.2-internal0 以降なら対応不要
- ・SAML と LDAP の自動連携、または OAuth/OIDC を使っている:High 2件の修正も要るので、19.3.6 以上を上げ先にする
依存関係やホスティング基盤を狙う攻撃の全体像は、サプライチェーン攻撃とは|手口・防御ツール比較・npm 12の新機構まで実践解説にまとめています。
GitLab 脆弱性 CVE-2026-110264 の時系列と何が起きたか
タイムライン(公表日とパッチの日時)
| 日時(UTC) | 出来事 | 出典 |
|---|---|---|
| 2026-10-20 17:18〜18:55 | v18.11.13-ee・v19.2.9-ee・v19.1.9-ee・v19.0.10-ee のタグ | gitlab-org/gitlab のタグ |
| 2026-10-20 23:00〜23:15 | v19.5.1-ee・v19.4.3-ee・v19.3.6-ee のタグ | 同上 |
| 2026-10-21 | パッチリリースの記事を公開。GitLab.com は適用済み | リリース記事 |
| 2026-10-21 23:33〜23:35 | High 以下の CVE 記録を公開 | gitlab-org/cves |
| 2026-10-22 00:33 | CVE-2026-110264 の記録を公開 | gitlab-org/cves |
| 修正版の公開から90日後 | 修正の issue を公開する予定 | リリース記事 |
何が起きたか
CVE 記録の題名は「Integer Overflow or Wraparound in GitLab」です。説明は、GitLab CE/EE の 7.0 以降で各系列の修正版より前のバージョンが、特定の条件のもとで、特別に細工した正規表現をコンパイルするときの整数オーバーフローにより、未認証のユーザーに GitLab サーバー上の任意のコード実行を許した可能性がある、というものです。
CVSS 3.1 は AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H で 10.0 です。ネットワーク越しに、権限も利用者の操作もなく成立しうる評価で、影響はサーバーの外(S:C)に及ぶとされています。報告者は HackerOne 経由の joaxcar 氏です。
どの機能のどの入力で条件が揃うのかは公開されていません。本記事も推測しません。正規表現まわりの別の RCE として、nginx の map 正規表現の脆弱性も同じ月に修正版が出ています。
GitLab バージョンアップの上げ先(系列ごとの早見表)
対策は修正版への更新です。CVE 記録の solution も「18.11.13・19.0.10・19.1.9・19.2.9・19.3.6・19.4.3・19.5.1 以降へ更新」だけで、workaround の欄はありません。
WHERE TO GO系列ごとの上げ先
系列ごとに上げ先と直る範囲が違う
いまの環境
やること
いまの環境: 19.3/19.4/19.5 系列
やること: 19.3.6/19.4.3/19.5.1 へ(今回の修正すべて)
いまの環境: 18.11/19.0/19.1/19.2 系列
やること: 18.11.13/19.0.10/19.1.9/19.2.9(Critical)
いまの環境: 18.10 以前
やること: 修正版なし。アップグレードパスで上の系列へ
いまの環境: GitLab.com/Dedicated
やること: 利用者の対応は不要(Dedicated は版の条件つき)
| 今の系列 | 上げ先 | Helm チャート | CVE-2026-110264 | High 2件・その他 |
|---|---|---|---|---|
| 19.5 | 19.5.1 | 10.5.1 | 直る | 直る |
| 19.4 | 19.4.3 | 10.4.3 | 直る | 直る |
| 19.3 | 19.3.6 | 10.3.7 | 直る | 直る |
| 19.2 | 19.2.9 | 10.2.9 | 直る | 直らない(19.3.6 以上が要る) |
| 19.1 | 19.1.9 | 10.1.9 | 直る | 直らない |
| 19.0 | 19.0.10 | 10.0.10 | 直る | 直らない |
| 18.11 | 18.11.13 | 9.11.14 | 直る | 直らない |
| 18.10 以前 | 修正版なし | — | アップグレードパスで上の系列へ | 同左 |
Helm チャートの列は各タグの Chart.yaml の appVersion で確かめた対応です。19.3.6 はチャート 10.3.7、18.11.13 はチャート 9.11.14 で、末尾の数字がそろわない系列があります。
「直らない」の根拠は CVE 記録です。High・Medium・Low の記録はどれも影響範囲を「◯◯ から 19.3.6 未満、19.4 から 19.4.3 未満、19.5 から 19.5.1 未満」と書いており、19.2.9 などは範囲に入ったままです。19.2 は GitLab 19 の必須の経由版なので、19.2.9 からはそのまま 19.3.6 以上を次の上げ先にできます。
18.10 以前を使っている場合
18.10 の最新タグは v18.10.8 で、この回の修正版はありません。公式のアップグレードパスでは、必須の経由版が GitLab 18 で 18.2・18.5・18.8・18.11、GitLab 19 で 19.2・19.5 です。経由版ではその系列の最新のパッチリリースを選ぶよう書かれています。18.x からなら、経由版をたどって 18.11.13 に着いた時点で CVE-2026-110264 の修正が入ります。古いバージョンからの道順は公式の Upgrade Path tool で組み、手順は公式のアップグレード文書に従ってください。
更新までのあいだの手がかり
GitLab のセキュリティチームは self-managed 向けに脅威検知を2つ公開しています。名称は「Onigmo native worker crash」と「Org mode render error burst」です。中身と使い方はリリース記事のリンク先で確かめてください。Onigmo は Ruby が使う正規表現ライブラリの名前ですが、CVE 記録は脆弱な箇所を名指ししていません。検知に何も出なくても、更新が要ることは変わりません。
GitLab バージョン確認のコマンドと結果の読み方
WHAT TO CHECK確かめる順番
確かめるのは版と設定の2つ
-
1.版を読む
VERSION ファイル・API・Helm の APP VERSION
-
2.同じ系列の修正版と比べる
-ee を外し、系列の修正版以上かを見る
-
3.High 2件の設定を見る
SAML と LDAP の自動連携、OAuth/OIDC と共有キャッシュ
Linux パッケージ(Omnibus)と Docker では、Rails のディレクトリにある VERSION ファイルが版を持っています。
# Linux パッケージ(Omnibus): Rails が動くノードで実行
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
sudo gitlab-rake gitlab:env:info | grep -A2 "^GitLab information"
# Docker: コンテナ名 gitlab は自分の値に置き換える
docker exec gitlab cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
Helm で入れた環境や、サーバーに入れない人は API とチャートの一覧で確かめます。/api/v4/version はトークンが要り、無いと 401 Unauthorized が返ります。
# API: URL は自分の値に置き換え、トークンは環境変数 GITLAB_TOKEN に入れておく
curl -s --header "PRIVATE-TOKEN: $GITLAB_TOKEN" "https://gitlab.example.com/api/v4/version"; echo
# Helm: APP VERSION 列はチャートの既定の版(イメージの版を上書きしていれば実際と違う)
helm list -A | grep -iE "^NAME|gitlab"
読んだ版を、同じ系列の修正版と比べます。19.4.10 のような2桁のパッチ版を取り違えないよう、sort -V で比べます。
v="19.4.2-ee" # 上で読んだ版に置き換える(CE は -ee が付かない。Helm の v19.4.2 も可)
v="${v#v}"; v="${v%-ee}"; s="${v%.*}"
case "$s" in
18.11) f=18.11.13 ;; 19.0) f=19.0.10 ;; 19.1) f=19.1.9 ;; 19.2) f=19.2.9 ;;
19.3) f=19.3.6 ;; 19.4) f=19.4.3 ;; 19.5) f=19.5.1 ;;
*) f="" ;;
esac
if [ -z "$f" ]; then
echo "$v: 修正版の表に無い系列(18.10 以前なら修正版は出ていない)"
elif [ "$(printf '%s\n' "$f" "$v" | sort -V | head -n 1)" = "$f" ]; then
echo "$v: 系列の修正版 $f 以上(CVE-2026-110264 の修正を含む版)"
else
echo "$v: 系列の修正版 $f より前(CVE-2026-110264 の影響範囲)"
fi
結果の読み方
・19.4.2-ee なら「19.4.3 より前」、19.4.3-ee や 19.4.10-ee なら「19.4.3 以上」と出ます
・系列の修正版以上でも、18.11〜19.2 系列なら High 2件などは残ります。上の表の右端の列を見てください
・GitLab 本体はこの検証に使っていません。VERSION ファイル・gitlab-rake の出力・API の応答・helm list の表を模した環境で、修正版より前と以上の両方の版を入れて出力が分かれることを確かめました
これは版という構成の確認で、侵害の有無の判定ではありません。修正版以上でも、更新前に侵入されていなかったとは言えません。逆に修正版より前でも、攻撃が成立する条件は公開されていないので、狙われたかどうかはこの結果だけでは分かりません。複数ノードの構成では、gitlab:env:info は GitLab Rails が動くノードで実行するよう公式文書に書かれています。
High 2件は SAML・LDAP 連携と OAuth/OIDC の構成で確かめる
High の2件は、該当する設定があるときに意味を持ちます。どちらも 19.3.6・19.4.3・19.5.1 で直り、18.11〜19.2 系列の修正版には入っていません。
| CVE | CVSS | 条件と起きうること(CVE 記録) | 影響を受ける版 |
|---|---|---|---|
| CVE-2026-15723 | 8.2 | OmniAuth の SAML と LDAP の自動連携が両方有効なとき、認証済みユーザーが既存の LDAP アカウントを相手の操作なしに乗っ取りうる | 10.1〜19.3.6 未満ほか |
| CVE-2026-112212 | 7.5 | 未認証のユーザーが共有キャッシュにある OAuth/OIDC の discovery 文書を汚染し、一部のフローを外部のサーバーへ向けうる | 18.3〜19.3.6 未満ほか |
CVE-2026-15723 に関わる設定は、公式文書の OmniAuth の項にある auto_link_ldap_user(Linux パッケージでは gitlab_rails['omniauth_auto_link_ldap_user'])です。gitlab-rake gitlab:env:info の出力にも Using LDAP と Using Omniauth の行があります。設定が無いことを確かめても、上げ先の判断には 19.3.6 以上を選ぶのが記録に沿った対応です。
Git ホスティングの RCE の別の例は、GitHub の CVE-2026-3854(git push を起点にしたサーバーの乗っ取り)で解説しています。
GitLab 脆弱性の影響範囲と残り9件(同じ GitLab アップデートで直る修正)
影響範囲は GitLab CE/EE の self-managed です。CVE-2026-110264 は 7.0 以降のすべての系列が対象で、修正版のある7系列より古い系列には修正版がありません。下の9件はリリース記事の一覧と CVE 記録を突き合わせたものです。
| 深刻度 | CVE | 内容(要約) | CVSS | 影響の始まり |
|---|---|---|---|---|
| Medium | CVE-2026-12664 | GraphQL の欄で read_api トークンの制限を超えて、受信用メールアドレスの取得と work item の作成ができうる | 6.8 | 18.2 |
| Medium | CVE-2026-16255 | SAML/LDAP のメンバーシップロックの適用が不完全(EE) | 5.9 | 12.0 |
| Medium | CVE-2026-105777 | 内部レスポンスヘッダーの絞り込み不備で、サーバー内部の認証情報を取得されうる(説明は未認証、ベクトルは PR:L) | 4.3 | 17.6.5 |
| Medium | CVE-2026-13319 | グループのマイルストーン API で、非公開プロジェクトのマイルストーンを読まれうる | 4.3 | 15.10 |
| Medium | CVE-2026-112378 | 課金の判定が不十分で、契約なしに有料の AI 機能を使われうる(EE) | 4.3 | 17.8 |
| Low | CVE-2026-105711 | MR の描画キャッシュから、機密 issue のタイトルを読まれうる | 3.5 | 15.0 |
| Low | CVE-2026-14288 | 保護ブランチの MR 承認ポリシーを回避されうる(EE) | 3.1 | 17.4 |
| Low | CVE-2026-112326 | 例外時の後始末の不備で、読み取り権限のユーザーが脆弱性の記録を消しうる(EE) | 3.1 | 17.8 |
| Low | 番号はリリース記事を参照 | グループの Duo 管理ロックと Amazon Q の設定(EE) | — | — |
CVE のある8件はどれも 19.3.6・19.4.3・19.5.1 で直ります。18.11〜19.2 系列の修正版では直りません。
参照ソース
・GitLab Critical Patch Release: 19.5.1, 19.4.3, 19.3.6, 19.2.9, 19.1.9, 19.0.10, 18.11.13(リリース記事) — 修正一覧・Dedicated の条件・脅威検知の名称
・gitlab-org/cves CVE-2026-110264 — 説明・CVSS・影響範囲・solution(2026-10-22確認。他の10件も同じ場所の 2026/<CVE>.json)
・gitlab-org/gitlab のタグ v19.5.1-ee — 修正版7本のタグの日時(2026-10-22確認)
・Plan your upgrade path(GitLab 公式文書) — 必須の経由版
・Metadata API(GitLab 公式文書) — /api/v4/version の応答
・Maintenance Rake tasks(GitLab 公式文書) — gitlab:env:info
・OmniAuth(GitLab 公式文書) — auto_link_ldap_user
・GitLab Helm chart の Chart.yaml(v10.5.1) — チャートと GitLab の版の対応





