AI基盤を襲う脆弱性:GitLab AI Gatewayの認可不備とvLLMのRCE対策ガイド

Tech

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

AI基盤を襲う脆弱性:GitLab AI Gatewayの認可不備とvLLMのRCE対策ガイド

【脅威の概要と背景】

GitLab AI Gatewayにおける認可バイパス(CVE-2024-4835)と、vLLM等のLLMサーバーにおけるチャットテンプレートを悪用した深刻なRCE(リモートコード実行)が報告されました。

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

攻撃者が不正な認証情報を利用してAI Gatewayをバイパスし、バックエンドのLLMサーバーに対して悪意のあるチャットテンプレートを注入してシェルを奪取する一連のフローを以下に示します。

graph TD
    Attacker["攻撃者"] -->|1. 認可不備の悪用| GW["GitLab AI Gateway"]
    GW -->|2. 特権昇格/リクエスト転送| Backend["vLLM / LLM Server"]
    Attacker -->|3. 悪意あるJinja2テンプレートを送信| Backend
    Backend -->|4. テンプレートレンダリング時にコード実行| OS["Host OS / Container"]
    OS -->|5. リバースシェル確立| Attacker

【安全な実装と設定】

特にvLLM等の推論サーバーにおいて、ユーザー入力に基づくチャットテンプレートの動的変更を許容する設定は極めて危険です。

1. vLLMにおけるチャットテンプレートの制限

誤用例(脆弱な設定): APIリクエストごとに任意のテンプレートを指定可能にしている、または信頼できないソースからのモデルをロードしている。

# 脆弱な起動例:任意のテンプレートを受け入れてしまう可能性

python -m vllm.entrypoints.openai.api_server --model /path/to/model --trust-remote-code

安全な代替案(セキュアな設定): テンプレートを固定し、trust-remote-code を無効化、さらにJinja2のサンドボックスを検討します。

# 推奨:テンプレートを固定し、リモートコード実行のリスクを排除

python -m vllm.entrypoints.openai.api_server \
    --model /path/to/model \
    --chat-template ./templates/secure_template.jinja \
    --disable-log-requests

# ※ trust-remote-codeフラグは、信頼できる公式モデル以外では絶対に使用しない。

2. 最小権限とネットワーク分離

AI GatewayおよびvLLMを実行するコンテナのセキュリティコンテキストを厳格化します。

# Kubernetes PodSecurityContext 例

spec:
  securityContext:
    runAsNonRoot: true
    allowPrivilegeEscalation: false
    capabilities:
      drop: ["ALL"]

【検出と緩和策】

検出ポイント (EDR/SIEM)

  • 異常な子プロセス生成: python プロセスや vllm 実行プロセスから sh, bash, curl, wget 等が起動されていないか監視。

  • テンプレートパターンの検知: HTTPリクエストボディ内の {{ ... }} 形式のペイロードで、os.popen__import__ 等のPython組み込み関数が含まれていないかWAFで検査。

応急的な緩和策

  • GitLab AI Gateway: 速やかに GitLab 17.1.1, 17.0.3, 16.11.5 以降へのアップデートを適用。

  • vLLM / LLM Server: 外部(インターネット)からの直接アクセスを遮断し、mTLS(相互TLS)を用いた認証済みゲートウェイ経由のみのアクセスに制限。

【実務上の落とし穴】

  • 可用性への影響: WAFでJinja2テンプレートの構文を厳格にブロックすると、正常なプロンプトエンジニアリング(例:プロンプト内にコード例を含める場合)が誤検知(False Positive)され、業務を阻害する可能性があります。

  • モデルの信頼性: Hugging Face等のリポジトリからダウンロードしたモデル自体に悪意のあるコードが含まれている場合、Gateway側の防御をバイパスしてRCEが成立します。

【まとめ】

組織として今すぐ確認・実施すべき3つの優先事項:

  1. 即時アップデート: GitLab AI Gatewayを利用している場合、パッチ適用済みバージョンへの更新を最優先で行う。

  2. 設定監査: vLLM等の推論サーバーで --trust-remote-code が有効になっていないか、チャットテンプレートが外部から変更可能になっていないか確認する。

  3. 環境分離: AI推論環境を他の本番ネットワークから分離(マイクロセグメンテーション)し、万が一のRCE発生時のラテラルムーブメントを最小化する。

参考文献

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

コメント

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