PythonLiteLLM(プロキシ)認証・認可の回避

LiteLLMの脆弱性、内部ユーザーが管理者に昇格するおそれ。KEVの認証不備と不正な1.107.0もバージョンで確かめる

公開 2026-11-01公表 2026-09-30資料確認 2026-11-01Pythonの脆弱性 233件のまとめ
対象製品LiteLLM(プロキシ)
識別番号CVE-2026-114612
影響範囲1.91.0以降の各系列の修正前(1.87〜1.90系は設定時)
修正情報1.100.4・1.101.3・1.102.2・1.103.1、1.104.0以降

複数のAIサービスのAPIを1つの窓口にまとめるLiteLLMのプロキシで、内部ユーザーの権限から管理者に昇格し、ホスト上でコマンドを実行できる脆弱性(CVE-2026-114612)が、2026年9月30日にLiteLLMから公表されました。LiteLLMでは、MCPの認証不備(CVE-2026-59822)が9月2日に米CISAの悪用確認の一覧(KEV)に載り、10月21日には中身を差し替えた不正な1.107.0が約2時間配布されました。どれに当たるかは、使っている版で切り分けます。

この記事の要点
  • CVE-2026-114612の対象は、1.91.0以降の各系列の修正前の版です。修正版は1.100.4・1.101.3・1.102.2・1.103.1で、1.104.0以降は対象外です。1.87〜1.90系も、EXPERIMENTAL_UI_LOGIN=trueにしていれば悪用できます。
  • KEVに載ったCVE-2026-59822は1.84.0より前が対象で、認証なしでMCPのツールを呼び出されるおそれがあります。
  • 10月21日の1.107.0は脆弱性ではなく、不正なコードを含む配布物です。入れた環境は、更新だけでは足りず、ファイルの削除と認証情報の交換が要ります。
  • 上げる先は、提供元が示した1.106.2以降の版を==で固定します。11月1日時点で、PyPIの1.106系の最新は1.106.6です。

01LiteLLMの脆弱性2件で起きることと仕組み

今回の2件の脆弱性は、どちらもLiteLLMのプロキシの認証の問題です。[1][2]

CVE-2026-114612は、internal_userの権限を持つ利用者がproxy_adminに昇格できる問題です。公式の説明では、プロキシは保存する秘密情報の暗号化と、セッションのトークンの発行に同じ鍵を使っていました。偽の管理者情報を入れたAPIキーを作らせ、暗号化されて返った値をトークンとして示すと、管理者として扱われます。管理者になると、MCPのstdioのエンドポイントからホスト上でコマンドを実行できます。深刻度はLiteLLMの評価でCVSS 3.1の9.9(緊急)で、GitHub Advisory DatabaseはCVSS 4.0の7.7も付けています。[1][3]

CVE-2026-59822は、MCPのStreamable HTTPのエンドポイントで、LiteLLMのキーの確認に失敗しても、空の認証情報で処理が続いた問題です。任意のBearerトークンを付けた認証なしの要求で、設定済みのMCPのツールを一覧・呼び出しできるおそれがあります。深刻度はLiteLLMの評価でCVSS 4.0の8.8、NVDの評価でCVSS 3.1の8.2(重要)です。[2][4]

2件とも、プロキシの認証の不備から管理者の操作やMCPのツールに届く

LiteLLMのアドバイザリにある2件の仕組みを、入口・認証の不備・起きることの順に並べる。

CVE-2026-114612internal_userの利用者偽の管理者情報を入れたAPIキーを作らせ、返った値をトークンとして示す
CVE-2026-59822認証なしの要求任意のBearerトークンを付けて、MCPのStreamable HTTPのエンドポイントへ送る
プロキシへ要求

LiteLLMのプロキシの認証

同じ鍵の使い回し保存する秘密情報の暗号化と、セッションのトークンの発行に同じ鍵を使っていた
確認の失敗を通すキーの確認に失敗しても、空の認証情報で処理が続いた
認証を通過
proxy_adminとして扱われるMCPのstdioのエンドポイントから、ホスト上でコマンドを実行できる
MCPのツールを使われる設定済みのMCPのツールを一覧・呼び出しできる
深刻度
CVE-2026-114612CVSS 3.1の9.9LiteLLMの評価。GitHub Advisory DatabaseはCVSS 4.0の7.7
CVE-2026-59822CVSS 4.0の8.8LiteLLMの評価。NVDの評価はCVSS 3.1の8.2

出典 LiteLLM「GHSA-7hp6-4w63-5g45」(2026-09-30)、同「GHSA-7488-6r32-c95q」(2026-07-01)

02LiteLLMの脆弱性の影響を受ける条件

LiteLLMは、プロキシとして起動すると、利用者ごとのAPIキーを発行・管理する窓口になります。SDKとしてだけ使う場合の扱いは、アドバイザリに書かれていません。[1][2]

0310月21日の不正な1.107.0は、脆弱性とは別に確かめる

10月21日の件は、コードの不具合ではなく、配布物の差し替えです。LiteLLMの告知によると、PyPIの1.107.0は日本時間の20時39分から22時23分まで公開されていました。Docker HubとGHCRのイメージ(タグはv1.107.0、latest、main-latest、main-stable)も、20時46分から最長で23時20分まで不正なものを指していました。GitHubのv1.107.0のソースに不正なファイルは無く、プライベートのエンタープライズ版も影響を受けていないと説明しています。侵入の経路は、10月23日の続報で一部が訂正されています。[5][7]

不正なファイルはPythonの起動時に読み込まれるため、LiteLLMを読み込まないプログラムでも動きます。提供元は、外部に通信できる環境で1.107.0を入れた場合は持ち出しが成功したと考えるよう求めています。その環境から届く認証情報(クラウドの権限、プロキシのデータベースに保存した各社のAPIキー、マスターキーと発行したキー、DATABASE_URLのパスワードなど)はすべて交換します。ファイルが見つからないことは、安全の証明にならないとも書いています。不正なイメージは古い鍵の有効な署名を持つため、署名だけでは判断できません。[5]

11月1日時点のPyPIでは1.107.0は取得できず、1.107系は開発版と候補版(1.107.0rc1・rc2)だけです。提供元は、それより前の版は安全だと説明しています。3月24日にも1.82.7と1.82.8が不正に公開され、削除されました。[5][6][8]

04LiteLLMの脆弱性の悪用の状況

今回の権限昇格(CVE-2026-114612)は、2026年11月1日時点で、米国のCISAが公開している「悪用が確認された脆弱性の一覧(KEV)」に載っていません。一方、同じLiteLLMのプロキシでは、ほかの脆弱性がKEVに載っています。[9]

同じLiteLLMでKEVに載っているのは、SQLインジェクション(CVE-2026-42208、5月8日)、コマンド実行(CVE-2026-42271、6月8日)、MCPの認証不備(CVE-2026-59822、9月2日)の3件で、いずれも1.84.0以降で直っています。CVE-2026-114612の今後30日に悪用される見込みの推定(EPSS)は0.3%です(10月31日時点)。アドバイザリは手口を文章で説明していますが、再現用のコード(PoC)の公開は確認できていません。[9][13]

KEVに載ったのは9月2日の認証不備で、9月30日公表の権限昇格は11月1日時点で載っていない

LiteLLMの公表、不正な配布、データベースへの登録の日付を並べる(日本時間)。

2026年9月2日

MCPの認証不備がKEVに追加CVE-2026-59822。1.84.0より前が対象
3件目LiteLLMでKEVに載った脆弱性

9月30日

LiteLLMが権限昇格を公表CVE-2026-114612。修正版も同じ日にPyPIに出た
9.9LiteLLMの評価(CVSS 3.1)

10月21日

不正な1.107.0が配布PyPIでは20時39分から22時23分まで公開
1.107.0中身を差し替えた版

10月23日

NVDに登録、不正な版の続報続報で侵入の経路の一部を訂正

10月28日

GitHub Advisory Databaseに収録

11月1日

CVE-2026-114612はKEVに未掲載PoCの公開は確認できていない
0.3%EPSS(10月31日時点)

出典 米CISA「Known Exploited Vulnerabilities Catalog」(2026-10-30版)、LiteLLM「GHSA-7hp6-4w63-5g45」(2026-09-30)

05攻撃を受けていないかの確認

KEVに載っている3件は1.84.0より前の版が対象です。1.84.0より前の版をインターネットから届く状態で動かしていた場合は、更新に加えて、更新前に攻撃を受けていないかを確認します。

  1. 公開していた期間のWebサーバー・アプリケーションのログで、異常終了や不審な要求がないか確認します。
  2. 見覚えのないファイル(Webシェルなど)や、設定・アカウントの変更がないか確認します。
  3. サーバーから見覚えのない宛先への通信がないか確認します。
  4. 痕跡が見つかった場合は、ログや機器の状態を保全し、専門の窓口に相談します。

06LiteLLMの対象の版と推奨する版

問題ごとの対象のバージョンと、直った版・扱いは次のとおりです。

2件の脆弱性は、1.104.0以降の正式版ならどちらも直っています。KEVに載っているLiteLLMの3件も、1.84.0以降で直っています。そのうえで不正な配布物を避けるため、提供元が示した1.106.2か、それ以降に公開された版を==で固定し、1.107.0は使いません。[1][2][5][9]

プロキシとして使う場合は、下で動くStarletteの版も確かめます。1.84.0〜1.87系はFastAPIを0.124.4に固定しているため、Starletteが、脆弱性BadHost(CVE-2026-48710)の直った1.0.1に上がりません。1.88.0以降はStarlette 1.0.1以上を求めます。Starletteの確かめ方はStarletteのBadHostの記事で説明しています。[10][11]

問題対象のバージョン直った版・扱い
権限昇格(CVE-2026-114612)1.91.0以降の各系列の修正前(初期設定のまま)1.100.4、1.101.3、1.102.2、1.103.1、1.104.0rc2。1.104.0以降は対象外
同(設定したときだけ)1.87〜1.90系でEXPERIMENTAL_UI_LOGIN=trueこの系列の修正版は記載なし(出典で確認)
MCPの認証不備(CVE-2026-59822、KEV)1.84.0より前1.84.0
不正な配布物(10月21日)1.107.0(PyPIとDockerイメージ)削除済み。提供元は1.106.2への固定を案内
不正な配布物(3月24日)1.82.7、1.82.8削除済み

脆弱性2件は1.104.0以降で直り、不正な配布物は1.106.2以降の固定で避ける

問題ごとの対象の版と、直った版・扱いを並べる。

対象の版
直った版・扱い
権限昇格(CVE-2026-114612)
1.91.0以降の各系列の修正前
1.100.4・1.101.3・1.102.2・1.103.1。1.104.0以降は対象外
同(設定したときだけ)
1.87〜1.90系でEXPERIMENTAL_UI_LOGIN=true
この系列の修正版は記載なし
MCPの認証不備(CVE-2026-59822、KEV)
1.84.0より前
1.84.0
不正な配布物(10月21日)
1.107.0(PyPIとDockerイメージ)
削除済み。提供元は1.106.2への固定を案内
不正な配布物(3月24日)
1.82.7・1.82.8
削除済み
だから 1.106.2か、それ以降に公開された版を==で固定し、1.107.0は使わない。

出典 LiteLLM「GHSA-7hp6-4w63-5g45」(2026-09-30)、同「Oct 21, 2026 LiteLLM release v1.107.0 Compromised」(2026-10-21)

07LiteLLMのバージョンを確かめて上げる手順

  1. 稼働中の環境で、LiteLLMの版を確認します。1.107.0、1.82.7、1.82.8なら、更新の前に手順3へ進みます。

    ターミナル
    python -m pip show litellm
  2. Dockerで使っている場合は、イメージの識別値(digest)を確認します。提供元は、sha256:1bbcb1443bc962e45f5aad53fe3d2c30600e0379715fb6c664cdd3ac126c339eのイメージを動かしたコンテナを、侵害されたものとして扱うよう求めています。[5]

    ターミナル
    docker images --digests | grep -i litellm
  3. 1.107.0を入れた環境では、先にpip installを実行しません。site-packagesのcook.pth、cook.py、sitecustomize.pyとそれぞれの.pycを消し、/tmp/remote_code_loader.lockを持つPythonのプロセスを止めます。提供元は、環境を作り直すほうがよいとしています。[5]

    ターミナル
    find / -path '*site-packages/*' \( -name 'cook.pth' -o -name 'cook.py' -o -name 'sitecustomize.py' -o -name 'litellm-1.107.0.dist-info' \) 2>/dev/null
    ls -l /tmp/remote_code_loader.lock
  4. 版を固定して入れ直します。提供元が名指しで案内している1.106.2に固定します。11月1日時点のPyPIには、告知の後に公開された1.106.6もありますが、提供元はこの版を名指ししていません。[5][6]

    ターミナル
    python -m pip install "litellm[proxy]==1.106.2"
  5. requirements.txt・poetry.lock・uv.lockに古い版や1.107.0が残っていないかを確かめ、もう一度版を確認します。

    ターミナル
    grep -n -i 'litellm' requirements*.txt poetry.lock uv.lock
    python -m pip show litellm

08すぐ上げられないときの回避策

提供元のアドバイザリが示す回避策は次の2つです。CVE-2026-114612では、EXPERIMENTAL_UI_LOGIN=falseにすると問題の認証の経路が無効になります。ただし、CLIのSSOとClaude Codeのゲートウェイのログインが使えなくなります。CVE-2026-59822では、MCPの経路を無効にするか、リバースプロキシやAPIゲートウェイで/mcp/などへの接続を止めます。[1][2]

管理画面とAPIを社内のネットワークからだけ使えるようにすることも、届く経路を減らします。これは当社の整理で、提供元が示した回避策ではありません。

脆弱性の公表・更新一覧で、Pythonの関連情報を調べることもできます。

緊急の場合AI攻撃リスク即点検サービス公開情報と、契約後すぐに用意できるアクセスの記録から先に調べ、被害や狙われやすい構成がないかを早く確かめます。

よくある質問

LiteLLMをSDKとして使っているだけでも対象ですか?

2件の脆弱性は、アドバイザリがプロキシの機能として説明しているもので、SDKだけの使い方についての記載はありません。不正な1.107.0は使い方を問わず、入れた後にPythonを起動すると動くため、SDKでも版の確認が要ります。[1][2][5]

KEVに載っているのは、今回の権限昇格ですか?

KEVに載っているLiteLLMの脆弱性は、CVE-2026-59822を含む3件です。CVE-2026-114612は、11月1日時点で載っていません。どちらも1.104.0以降の版では直っています。[9]

1.107.0を入れていなければ、何もしなくてよいですか?

不正な配布物の対象からは外れます。脆弱性は別の話なので、使っている版が各系列の修正版以上かを確かめます。3月の1.82.7・1.82.8も確かめます。

GitHub Advisory Databaseの日付は10月28日ですが、その日の公表ですか?

LiteLLMのアドバイザリは日本時間の9月30日の公表で、修正版も同じ日にPyPIに出ています。NVDへの登録は10月23日、GitHub Advisory Databaseへの収録は10月28日(いずれも日本時間)です。[1][3][12]

出典・参考資料

  1. LiteLLM公式:GHSA-7hp6-4w63-5g452026-09-30 / 権限昇格の仕組み、対象(1.91.0以降、1.87〜1.90系は設定時)、修正版、回避策、CVSS 3.1 9.9(LiteLLMの評価)
  2. LiteLLM公式:GHSA-7488-6r32-c95q2026-07-01 / MCPの認証不備の仕組み、対象(1.84.0より前)、修正版、回避策、CVSS 4.0 8.8
  3. GitHub Advisory Database:GHSA-7hp6-4w63-5g452026-10-28収録(日本時間) / CVE番号、CVSS 4.0 7.7、系列ごとの影響範囲、収録日
  4. NVD:CVE-2026-598222026-07-09登録(日本時間) / NVDの評価 CVSS 3.1 8.2
  5. LiteLLM公式ブログ:Oct 21, 2026 LiteLLM release v1.107.0 Compromised2026-10-21(米国時間の掲載日) / 不正な1.107.0の公開時間、Dockerのタグとdigest、残るファイル、対応の手順、1.106.2への固定、署名の扱い
  6. PyPI:litellmの配布履歴2026-11-01確認 / 1.107.0・1.82.7・1.82.8が無いこと、修正版と1.106.6の公開日
  7. LiteLLM公式ブログ:The attack chain behind the v1.107.0 LiteLLM release2026-10-23(米国時間の掲載日) / 侵入の経路の続報と訂正
  8. LiteLLM GitHub:Issue #24518(3月の不正な公開)2026-03-24 / 1.82.7・1.82.8の削除(LiteLLMチームの追記)
  9. 米CISA:Known Exploited Vulnerabilities Catalog(JSON版 2026.10.30)2026-11-01取得(版2026.10.30) / LiteLLMのKEV掲載3件(CVE-2026-42208 5月8日、CVE-2026-42271 6月8日、CVE-2026-59822 9月2日)、CVE-2026-114612が無いこと
  10. PyPI:litellm 1.84.02026-05-14 / プロキシの依存でFastAPIを0.124.4に固定(1.84.10・1.85.7・1.86.7・1.87.5も同じ)
  11. PyPI:litellm 1.88.02026-06-06 / プロキシの依存でStarlette 1.0.1以上を指定
  12. NVD:CVE-2026-1146122026-10-23登録(日本時間) / 登録日、採番機関(GitHub)の評価 CVSS 3.1 9.9、NVDの評価は未実施
  13. FIRST:EPSS(CVE-2026-114612)2026-10-31 / 今後30日に悪用される見込みの推定 0.3%

あわせて読みたい記事

Python公表 2026-10-22

Brotliの脆弱性の確認方法、PythonとNode.jsで対象かを確かめて直す(CVE-2026-111497、コード実行のおそれ)

圧縮形式Brotliの展開処理の脆弱性CVE-2026-111497(HTTP2Shell)は、米CISAが悪用を確認しています。Pythonのbrotli・brotlicffi、Node.jsの同梱版などで、自分の版と構成が対象かを確かめる方法と修正版を、言語ごとに説明します。

Python公表 2026-05-22

Starletteの脆弱性BadHost、Hostヘッダーでパスによる認証の確認を回避されるおそれ。FastAPIを上げても古い版が残る場合の確かめ方

Starletteの脆弱性CVE-2026-48710(BadHost)は、細工したHostヘッダーでrequest.url.pathを偽り、パスで判定するアクセスの確認を回避されるおそれがあります。9月2日にKEVに追加されました。FastAPI・vLLM・LiteLLMの下で古いStarletteが残る例と、間接依存の確かめ方を説明します。

Python公表 2026-10-23

TwistedのHTTP/2の脆弱性、1接続でCPUを使い切らせるおそれと、HTTP/2が有効かの確かめ方・26.10.0への更新(GHSA-vpp8-g58w-m8mp)

Python向けTwistedのHTTP/2サーバーに、認証なしの1接続でCPUを使い切らせる脆弱性があり、10月30日に正式版26.10.0で直りました。HTTP/2が動く条件(h2とTLS)の確かめ方、修正の効き方、CVE番号の扱い、Python 3.9の環境での注意を説明します。