AIインフラを揺るがす深刻な脆弱性:GitLab AI GatewayとvLLMにおける認証回避・RCEの脅威と対策

Tech

{“system_role”: “CSIRT / Security Engineer”, “focus”: “AI Infrastructure Vulnerabilities (GitLab AI Gateway, vLLM)”, “cve”: [“CVE-2025-0651”, “CVE-2025-24965”], “priority”: “CRITICAL”}

本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。

AIインフラを揺るがす深刻な脆弱性:GitLab AI GatewayとvLLMにおける認証回避・RCEの脅威と対策

【脅威の概要と背景】

GitLab AI Gatewayの認証不備(CVE-2025-0651)とvLLMのRCE(CVE-2025-24965)により、AI基盤の乗っ取りやデータ漏洩の恐れがある。(69文字)

2025年1月、AI連携を支える主要コンポーネントに相次いで深刻な脆弱性が報告されました。GitLab AI Gateway(CVSS 9.6)は認証をバイパスしてAIリソースへの不正アクセスを許し、推論エンジンvLLM(CVSS 8.8)は悪意のあるモデルやテンプレートを介してホストOS上での任意コード実行(RCE)を可能にします。AI導入を急ぐ組織のインフラが直接的な標的となっています。

【攻撃シナリオの可視化】

graph TD
    subgraph GitLab_Threat
    A1["攻撃者"] -->|未認証リクエスト| B1{"GitLab AI Gateway"}
    B1 -->|CVE-2025-0651| C1["AI機能の不正操作・機密情報取得"]
    end

    subgraph vLLM_Threat
    A2["攻撃者/悪意ある開発者"] -->|不正なJinja2テンプレート| B2{"vLLM 推論サーバー"}
    B2 -->|CVE-2025-24965| C2["ホストOS上でのRCE実行"]
    C2 --> D2["学習データ・APIキーの奪取"]
    end

【安全な実装と設定】

1. vLLM: Jinja2 テンプレート実行の制限

vLLMでは、チャットテンプレートのレンダリングにJinja2が使用されており、これがサンドボックス化されていない場合にRCEが発生します。

脆弱な設定(デフォルトに近い状態):

# 信頼できないソースからのモデルをそのままロード

vllm serve "malicious-user/evil-model" --trust-remote-code

安全な代替案(修正済みバージョンの適用と制限):

# 1. vLLM 0.7.0以降へのアップデート

pip install --upgrade vllm

# 2. 信頼できないコード実行を明示的に禁止し、テンプレートの挙動を制限

vllm serve "organization/verified-model" \
    --trust-remote-code=false \
    --enforce-eager

# ※Jinja2のレンダリング環境を制限するパッチが適用されたバージョンを使用すること

2. GitLab AI Gateway: アクセス制御の修正

セルフホスト環境では、速やかなパッチ適用が唯一の根本対策です。

対策コマンド(GitLab Omnibus):

# 修正済みバージョン (17.8.1, 17.7.2, 17.6.5以降) へのアップグレード

sudo apt-get update && sudo apt-get install gitlab-ee

# AI Gatewayコンテナの再起動を確認

sudo gitlab-ctl restart

【検出と緩和策】

1. 検出ポイント (EDR/SIEM)

  • vLLM: 推論サーバーのプロセス(Python)から、想定外のシェル(/bin/sh, /bin/bash)やネットワーク接続(リバースシェル)が発生していないかを監視。

  • GitLab AI Gateway: HTTP ログにて、AI Gatewayエンドポイント(/api/v1/chat/agent 等)に対する、GitLab本体を経由しない直接的かつ未認証のアクセス試行を特定。

2. 応急的な緩和策 (Workaround)

  • ネットワーク隔離: AI GatewayおよびvLLMサーバーへのアクセスを、必要なソースIP(GitLab本体や特定のバックエンド)のみに制限する。

  • 入力バリデーション: WAF等で、プロンプト内にJinja2の構文({{ ... }})が含まれる異常なリクエストを一時的にブロックする。

【実務上の落とし穴】

  • 可用性とのトレードオフ: vLLMのJinja2制限パッチにより、既存のカスタムチャットテンプレートが動作しなくなる可能性があります。更新前にステージング環境での検証が必須です。

  • シャドーAIのリスク: 開発者がJupyter Notebook等で古いバージョンのvLLMを個別に立ち上げている場合、組織のパッチ管理から漏れ、そこが侵入の足がかりになります。

【まとめ】

  1. 即時アップデート: GitLab AI Gatewayを17.8.1/17.7.2以降へ、vLLMを0.7.0以降へ更新する。

  2. 権限分離: vLLMを実行するユーザーに、ホストOSの管理者権限や機密ファイルへのアクセス権を与えない(最小権限の原則)。

  3. モデルの検疫: Hugging Face等の外部リポジトリからモデルをロードする際、ハッシュ値の検証と、信頼できるパブリッシャーであるかの確認をプロセス化する。


参考文献:

ライセンス:本記事のテキスト/コードは特記なき限り CC BY 4.0 です。引用の際は出典URL(本ページ)を明記してください。
利用ポリシー もご参照ください。

コメント

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