{ “theme”: “Vulnerability_Advisory_AI_Infrastructure”, “priority”: “CRITICAL”, “author”: “CSIRT_Draft_Bot”, “version”: “1.0”, “cve_identifiers”: [“CVE-2024-10654”, “CVE-2024-55562”], “target_audience”: “Infrastructure_Security_Engineer” }
本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。
AI基盤を狙う新標的:GitLab AI GatewayとvLLMにおける深刻な脆弱性と防御戦略
【脅威の概要と背景】
AI統合が進む開発環境と推論基盤が、深刻な脆弱性に直面しています。GitLab AI Gatewayの認証バイパス(CVE-2024-10654)と、vLLMのチャットテンプレート処理におけるリモートコード実行(RCE: CVE-2024-55562)は、攻撃者に内部AI機能の悪用やホストOSの完全制御を許す恐れがあります。
【攻撃シナリオの可視化】
graph TD
subgraph "Scenario A: GitLab AI Gateway"
A1["攻撃者"] -->|偽造JWTトークン送信| B1["AI Gateway"]
B1 -->|認証チェック回避| C1["内部AI機能・プロンプトへの不正アクセス"]
end
subgraph "Scenario B: vLLM (RCE)"
A2["攻撃者"] -->|悪意のあるJinja2テンプレート注入| B2["vLLM API Server"]
B2 -->|テンプレートレンダリング| C2{"任意コード実行"}
C2 -->|OSコマンド| D2["ホストOSの支配 / モデル窃取"]
end
GitLabの脆弱性は、特定の構成下でAIプロンプトやモデルへの未認可アクセスを可能にします。一方、vLLMの脆弱性は、入力を処理するテンプレートエンジンの不備を突き、API経由でシステム権限を奪取する極めて危険なものです。
【安全な実装と設定】
1. vLLMにおける安全なテンプレート管理
vLLMでは、モデルに付随するチャットテンプレート(Jinja2)が任意コード実行の起点となります。信頼できないモデルの自動読み込みを制限する必要があります。
❌ 脆弱な起動構成 (Bash)
# 信頼できないリモートコードやテンプレートを無制限に許可
python -m vllm.entrypoints.openai.api_server \
--model some-untrusted-model/llama \
--trust-remote-code
✅ 安全な代替案 (Bash)
# 信頼済みモデルのみを使用し、リモートコード実行を明示的に禁止
# チャットテンプレートを検証済みのローカルファイルで固定する
python -m vllm.entrypoints.openai.api_server \
--model /path/to/validated-local-model \
--chat-template /path/to/secure_template.jinja \
--disable-log-requests
2. GitLab AI Gatewayの保護
GitLabインスタンスとAI Gateway間の通信を最新のパッチレベルに保ち、認証を強化します。
✅ 対策コード (Docker/GitLab Update)
# GitLab AI Gatewayを修正済みバージョンへ更新(例:v1.17.2以降) docker pull registry.gitlab.com/gitlab-org/modelops/applied-ml/code-suggestions/ai-assist/model-gateway:v1.17.2 # GitLab本体のセキュリティパッチ適用(17.6.1, 17.5.2, 17.4.4以上) sudo apt-get update && sudo apt-get install gitlab-ee
【検出と緩和策】
ログ分析 (vLLM): APIリクエストの
chat_templateフィールドに__subclasses__やpopenなどのPythonイントロスペクションキーワードが含まれていないか、SIEMで監視(Jinja2 Injection攻撃の兆候)。ネットワーク隔離: vLLMやAI Gatewayを、インターネットから直接アクセス可能なセグメントに置かず、WAFやリバースプロキシを介して特定のクライアントIPからのみ通信を許可する。
実行環境の隔離: vLLMプロセスを、特権を持たないユーザーで実行し、gVisorやKata Containersなどのサンドボックス環境で稼働させる。
【実務上の落とし穴】
可用性とのトレードオフ:
--trust-remote-codeを無効化すると、独自のアーキテクチャを持つ最新モデル(例:新しいカスタムレイヤーを含むモデル)がロードできなくなる場合があります。この場合、コードの事前監査が必須となります。誤検知のリスク: 開発者がデバッグ目的で複雑なJinja2テンプレートを送信する場合、セキュリティフィルターによって正当なリクエストがブロックされる可能性があります。
【まとめ】
組織として直ちに実施すべき3つの優先事項:
即時アップデート: GitLab AI GatewayおよびGitLab本体を、認証バイパスが修正された最新バージョンへ更新する。
vLLMの構成見直し:
--trust-remote-codeの使用を極力避け、外部から供給されるチャットテンプレートをそのまま実行しないよう設定を固定する。最小権限の徹底: AI推論コンテナに対し、ホストネットワークや特権権限を与えないランタイム設定を適用する。
参考文献:
GitLab Security Advisory: CVE-2024-10654 Details
vLLM Security Advisory (GitHub): vllm-project/vllm Security Advisories
JPCERT/CC: 脆弱性対策情報一覧
NIST NVD: CVE-2024-55562

コメント