エージェントのフロー設定を許されたGitLab利用者が、それを処理するサービスのOS権限まで得てはならない。CVE-2026-90970はその分離を壊す。細工したDuo設定がプロンプトのテンプレートサンドボックスを脱出し、影響するAI Gateway上で任意のコマンドを実行できる。

GitLabは2026年10月2日に公開し、CVSS 3.1で9.9の重大とした。悪用には認証とDuo Agent Platformへのアクセスが必要だ。匿名利用者が全GitLabサーバーを無操作で奪うという報告ではない。重要なのは前提を満たした後の越境であり、前提を無視することではない。

GitLab運営のゲートウェイは修正済みだが、セルフホスト側は更新と調査を担う。コードやプロンプトを私有ネットワークに置くだけで、認証された設定作者が意図した境界内にとどまるわけではない。

GitLab本体だけでなくゲートウェイの版を見る

影響範囲はAI Gateway 18.1.6から19.2.4未満、19.3系は19.3.2未満、19.4系は19.4.1未満とされる。修正版は19.2.4、19.3.2、19.4.1で、適切な修正済みまたは後続の対応版を使う必要がある。

これはGitLabのAI機能とモデルの間の独立したアプリケーションサービスの版だ。アプリの処理と要求を扱い、言語モデル自体ではない。イメージと配備周期はGitLab本体と異なり、本体の版確認だけでは古いゲートウェイを見逃す。

管理型、混在型、完全自営の構成も異なる。混在環境では機能によって顧客設備とGitLab管理サービスを使い分ける場合がある。機能別経路、全レプリカ、開発・概念実証、キャッシュイメージ、災害復旧環境まで棚卸しし、本番画面だけに絞らない。

完全自営は一般インターネットをほとんど使わず、または接続せず動かせる。外部経路を減らしても、許可された内部者、盗まれたアカウント、サービストークン、侵害された内部処理は残る。切断は安全通知と更新到着も遅らせ得る。

不具合はテンプレートソフトウェアにある

エージェントフローはプロンプト、ツール、判断、行動を複数段階の開発に組み合わせる。テンプレートは設定や実行時の値をモデルへの指示に変える。サンドボックスは入力が危険なアプリ機能やOS能力へ届かないようにするはずだ。

分類はCWE-1336、テンプレートエンジンの特殊要素の不適切な無害化である。攻撃者の構文が単なるデータではなく実行可能な動作と解釈され得る。GitLabは任意コマンドを説明しており、その先はプロセス権限、公開オブジェクト、認証情報、ネットワーク経路に依存する。

モデルを指示で誘導するプロンプト注入とは違う。テンプレート注入は指示を生成・描画する従来ソフトを攻撃し、モデルの返答に関係なくコマンドが動き得る。モデルに安全行動を追加指示しても処理系の修正にはならない。

モデル自身が逃げ方を発明した証拠でもない。入口がAIフローでも、脆弱な境界はアプリにある。調査は設定履歴、ゲートウェイ・コンテナー活動、権限、接続先認証情報を含める必要があり、会話記録だけでは足りない。

認証が必要でも9.9となる理由

公開ベクトルは AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H。ネットワーク攻撃には事前のローカルシェルが不要だが、公衆インターネットに露出するとは限らない。低複雑性は標準評価で狭い競合や特殊状態が不要なことを意味する。低権限でもログインとプラットフォームアクセスは要る。

追加ユーザー操作不要とは、細工した設定の到達後、他人のファイル開封、承認、誘導リンクのクリックが不要ということだ。スコープ変更は許可されたフロー入力から、ゲートウェイのコマンド環境という別の権限領域への移行を表す。

機密性・完全性・可用性への高影響は、閲覧、変更、停止の可能性を示す。標準の9.9は全環境の最大損害や侵入発生の証明ではない。構成、最小権限、到達先、秘密が実際の範囲を決める。

認証利用者は自動的に設備管理者ではない。フロー作者は広いアプリ機能を必要としても、解釈プロセスのOS権限までは要らない。盗まれたトークンや過剰権限の自動化IDでは、元利用者が正当でも境界が重要になる。

コンテナーは境界であってリスク消去ではない。rootなしでもマウントした秘密、トークン、処理データ、内部経路は露出し得る。書換え可能なマウント、広い権限と通信は損害を増やす。ただし1コンテナーのコマンドが設備全体の侵害を証明するわけでもない。

2度目の重大問題は構成への問い

2月にGitLabはゲートウェイのDuo Workflow ServiceでCVE-2026-1868を修正した。これも細工したフローによる利用者テンプレートの危険な展開で、同じ9.9とベクトルだった。修正版には18.6.2、18.7.1、18.8.1があり、内部職員が発見した。

類似はフローからテンプレートへの信頼境界の深い検査を促す。しかし10月問題が回帰、不完全な2月修正、同一路線とは証明しない。公開概要だけでは関係が分からず、仮説を確定事項にしてはならない。

柔軟な宣言設定も、式、変数、プラグインが高権限行動になるとプログラミング言語のように働く。自由度が上がるほど解析器と隔離機構が安全に解釈する範囲は広い。信頼できないテンプレート描画と重要なアクセスを同一プロセスに集めることが危険だ。

入力をデータと扱う、公開オブジェクトを減らす、提出を認可する、ファイル・通信・認証情報を制限する、変更者を記録するなど独立した層が役立つ。作成・変更したフローと後のゲートウェイ活動を結べるべきだ。CI設定と同様の所有者、審査、版、試験が必要になる。

修正と侵害の確認は別の仕事

運営者は旧イメージのダイジェストと配備証拠を保存し、修正版を入れ、再起動して本当に動くイメージを確認する。旧レプリカ、試験、復旧環境に影響版を残さない。起動成功だけでは全コピー置換の証拠にならない。

脆弱期間の調査では、フローを作成・変更できた人とサービスを特定し、設定と監査記録を残す。予期しない子プロセス、コマンド解釈器、ファイル変更、外向き通信、異常再起動を通常状態と比べる。これは調査候補であり、このCVE共通の公表済み侵害指標ではない。

導入文書は署名JWTと、独立した鍵対を持つGateway・Agent Platformサービスを説明する。両方の信頼関係、実行時の鍵と設定を調べ、一つの資格情報で全体を代表させない。侵害プロセスが読める秘密は、証拠や露出が根拠となる場合に更新が必要かもしれない。

GitLab本体、モデルサーバー、監視、内部接続先を把握する。コンテナー保存が少なくてもコード由来プロンプトやissueの背景は機密になり得る。外向き制限、ワークロードID、読み取り専用、最小権限は影響を抑えるが、テンプレート修正や更新に代わらない。

セルフホストは設備、モデル、コンテナー、ネットワーク各チームに責任を分け、所有者不明のイメージは隙間に落ちる。管理型はその顧客更新負担を減らす一方、供給者、保存場所、依存の別の取引がある。常に片方が安全だという事例ではない。

公開情報がまだ示さないこと

報道は実運用での活発・広範な悪用、公開実証コード、詳細経路、共通の侵害後指標を確認していない。公表確認がないことは不発生の確認ではない。企業確認のコマンド実行と重大評価だけでも、露出を延ばさず修正する理由になる。

次の証拠は顧客の確認済み更新、GitLabの根本原因説明、信頼できる悪用の記録や当局の新方針だ。更新時間を設けた後の詳細は、別経路か回避・回帰かを区別する助けになる。旧新イメージ、再起動、検証、担当者を設定・事件履歴とともに残す必要がある。

実務の試験は、どのゲートウェイがあり、誰がフローを変え、各プロセスがどの資産・秘密へ届くか答えられることだ。AI中間層もCIランナー、成果物保管、秘密管理と同じ運用規律を要する。実行サービスを棚卸し、更新、隔離、調査できて初めて、データ所在地は本当の制御になる。

出典と関連資料

CVE-2026-90970記録 · AI Gateway文書 · テンプレート弱点CWE-1336 · Duoセルフホスト構成 · 導入と署名鍵 · 以前のCVE-2026-1868 · インシデント記録の手引き · 元の発見記録

参考資料

ツールディレクトリを見る →