AIに渡す前の「穴埋め」が破られた — GitLab AI Gatewayのコマンド実行脆弱性(CVE-2026-90970)
この記事は時点のニュースです。現在の提供状況とは異なる場合があります。誤りの訂正は随時行います。
GitLabのAI機能「GitLab Duo」とLLMの間を仲介するコンポーネントだよ。公式ドキュメントでは、自分でAI Gatewayを立てれば、コード入力・プロンプト・応答といった推論データを自社のネットワーク内にとどめて、外部APIへの通信を避けられると説明されているんだ。
じゃあ、安全のために自分で立てた人のほうが今回は危なかったってこと?
今回の脆弱性についてはそうなんだ。GitLabは2026年10月2日に AI Gateway 19.2.4・19.3.2・19.4.1 を公開して CVE-2026-90970 を修正したけれど、公式のパッチリリースでは、対応が必要なのは自分でAI Gatewayを運用している利用者だけで、GitLab.com・GitLab Dedicated・GitLab提供のAI Gatewayを使うSelf-Managedの利用者は「保護済みで対応は不要」と書かれているんだよ。
中身はどんな脆弱性だったの?
公式の説明は「Duo Agent Platformにアクセスできる認証済みのユーザーが、細工したflow configurationでプロンプトテンプレートのサンドボックスを抜け出し、任意のコマンドを実行できる」というものだよ。CVSSは9.9で、報告したのはHackerOneのinvisiblemeerkatという研究者なんだ。
プロンプトテンプレート……? AIに変なことを言わせるのとは違うの?
その「穴埋め」のところから、サーバの中身をいじられちゃったんだね。
そういう筋だね。細工した設定の中身そのものは公開されていないけれど、テンプレートの穴埋め欄に式を書き込んでエンジン側に処理させる手口は、サーバーサイドテンプレートインジェクションとしてWebの世界で昔から知られているものなんだ。プロンプトインジェクションがモデルの判断を狂わせる攻撃なのに対して、公式の説明にあるこの脱出はモデルに届く前の組み立て処理の側で起きている。だからモデルを賢くしても防げない種類だよ。
でもCVSSが9.9ってすごく高いよね。ログインが必要なのに、どうしてそんなに高くなるのかな?
ベクタが CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H で、権限はPR:L(低い権限で足りる)だけどS:C(スコープ変更)が入っているからだよ。AI Gatewayは複数の利用者のDuo機能が通る共有の入口だから、そのホストを取られると自分のアカウントの範囲を越えて影響が及ぶ、という評価なんだ。
うちに関係あるかどうかは、どう調べたらいいの?
まず自分でAI Gatewayを運用しているかを確認してね。影響するのは AI Gateway 18.1.6以降で19.2.4未満、19.3系で19.3.2未満、19.4系で19.4.1未満。該当したら修正版へ上げるだけだよ。GitLabはリリース記事の公開前に自己ホストの顧客へ個別に連絡したと書いているけど、連絡の有無に関わらずバージョンは自分で見たほうが確実だね。
攻撃はもう起きているの?
出典・確認した情報
- GitLab AI Gateway Critical Patch Release: 19.2.4, 19.3.2, and 19.4.1(GitLab Docs 公式パッチリリース)
発表日: 2026-10-02 / 確認日: 2026-10-06
- GitLab AI Gateway 19.2.4 / 19.3.2 / 19.4.1 がクリティカルなセキュリティ修正を含むリリースとして公開されている
- 脆弱性は CVE-2026-90970。本文の説明は「an authenticated user with Duo Agent Platform access to escape the prompt template sandbox via a specially crafted flow configuration, leading to arbitrary command execution」
- CVSSは9.9、ベクタは CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H。PR:L(低い権限が必要)かつ S:C(スコープ変更)
- 影響バージョンは AI Gateway 18.1.6以降で19.2.4未満、19.3系で19.3.2未満、19.4系で19.4.1未満
- 対応が必要なのは GitLab Self-Hosted AI Gateway を運用している利用者。GitLab.com・GitLab Dedicated・GitLab提供のAI Gatewayを使うSelf-Managedインスタンスの利用者は「protected and do not need to take action」と記載
- 報告者は HackerOne の invisiblemeerkat。この資料本文に実環境での悪用(in-the-wild exploitation)の記載はない(2026-10-06時点で本文を確認)
- アップグレード手順は GitLab Self-Hosted AI Gateway のインストールドキュメントを参照するよう案内している
- 公開前の連絡について「We have conducted targeted outreach to Self-Hosted AI Gateway customers prior to this release post with this guidance.」と記載
- Custom flows(GitLab Docs / Duo Agent Platform)
発表日: 2026-10-06 / 確認日: 2026-10-06
- カスタムフローはYAMLで定義するワークフローで、components(エージェントと手順)・prompts(モデルの振る舞いと指示)・routers(コンポーネント間の遷移)・toolsets(使えるGitLab APIツール)を指定する
- カスタムフローの作成には「You must have the Maintainer or Owner role for the project」、実行には Developer / Maintainer / Owner ロールが必要と記載
- 提供プランは Free・Premium・Ultimate で、GitLab.com・Self-Managed・Dedicated が対象
- フロー定義はプロジェクト内のYAMLファイルとして管理される
- GitLab Duo Self-Hosted(GitLab Docs / AI Gatewayの役割)
発表日: 2026-10-06 / 確認日: 2026-10-06
- AI GatewayはGitLab Duoの機能とLLMの間を仲介するコンポーネントと説明されている
- 完全に自社でホストする構成では、LLM提供基盤(vLLMやAWS Bedrockなど)・自前のAI Gateway・それを使うよう設定したGitLabインスタンスの3要素が必要
- 自社ホスト構成の利点として、コード入力・プロンプト・応答といった推論データを自社ネットワーク内にとどめ、外部APIへの通信を避けられる点を挙げている