LiteLLM の SQL インジェクション CVE-2026-42208 を理解して検知・緩和する
LLM API を OpenAI 互換の形式で中継する AI ゲートウェイ LiteLLM に、認証まわりの深刻な SQL インジェクション CVE-2026-42208(CVSS 9.8 Critical、CISA KEV 登録)が公表された。プロキシを社内外に公開して複数のLLMプロバイダを束ねている構成では影響が大きい。ここでは仕組みを最小コードで再現し、自分の環境の確認とアップグレードまでを実際に手を動かして確かめる。
何が起きるのか
影響を受けるのは LiteLLM 1.81.16 以上 1.83.7 未満。プロキシの API キー検証時に走る DB クエリが、呼び出し側が渡したキー値をパラメータ化せずにクエリ文字列へ連結していた。その結果、認証前の攻撃者が細工した Authorization ヘッダを任意の LLM API ルート(例: POST /chat/completions)へ送るだけで、エラー処理の経路を通じてこのクエリに到達できる。プロキシの DB を読み取り、場合によっては改ざんもでき、プロキシが管理する各プロバイダの認証情報漏えいにつながる。1.83.7 で修正済みだ。
SQLi の芯を最小コードで再現する
問題の本質は「ユーザー入力を文字列連結でクエリに混ぜた」こと。これを SQLite で安全に再現すると、危険性がはっきり見える。以下は攻撃を模した最小例で、実際に手元で動く。
1 | |
実行すると、連結版 lookup_vulnerable は ' OR '1'='1 で全レコードの secret を返してしまうのに対し、プレースホルダを使う lookup_safe は 0 件を返す。
1 | |
CVE-2026-42208 も構造は同じで、認証キーの値がクエリ文字列に混ざったことが原因だ。修正は「値をパラメータとして分離する」ことに尽きる。
自分の環境を確認する
導入済みのバージョンを確認し、影響範囲(1.81.16〜1.83.7 未満)に入っていないかを見る。
1 | |
コンテナで動かしているなら、稼働中イメージのタグも確認する。
1 | |
緩和とアップグレード
対応の基本は修正版へ更新すること。
1 | |
即時更新できない場合の暫定策は、暴露面を減らすことだ。
- プロキシをインターネットに直接公開せず、内部ネットワークや認証プロキシ配下に隔離する
- WAF で異常な
Authorizationヘッダ(SQL メタ文字を含むもの)を遮断する - 更新後、DB に保管された各プロバイダの API キーはローテーションを検討する
深刻度の高い脆弱性は、クラウド別(AWS / GCP / Azure / Linux)の対応整理も含めて脆弱性対応ウォッチに日本語でまとめている。CVE-2026-42208 のパッチ状況や、同時期に KEV 登録された Drupal / Joomla の脆弱性もあわせて確認できる。
まとめ
CVE-2026-42208 は「ユーザー入力をクエリ文字列に連結した」古典的な SQLi が、AI ゲートウェイという新しい場所で再発した例だ。芯は最小コードで再現できるほど単純で、対策もパラメータ化 = 修正版への更新という一点に集約される。まず litellm のバージョンを確認し、1.83.7 未満なら早めに上げておこう。