情報取得日: 2026/09/06・本ページは公開情報の非公式まとめです
| CVE ID | CVE-2026-48710 |
|---|---|
| 製品 | Kludex / Starlette(Python の軽量 ASGI フレームワーク/ツールキット)。FastAPI をはじめ多くの Python Web アプリが内部で依存しているため、直接入れた覚えが無くても入っていることがある。Red Hat AI Inference Server など、これを同梱する製品も NVD の適用範囲に入っている。 |
| CVSS | 6.5(Medium) CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N CVSS は当サイトの掲載基準(7.0以上)を下回りますが、CISA KEV に収載され実際の悪用が確認されているため掲載しています。 |
| 種別 (CWE) | CWE-444 一貫性のない解釈による HTTP リクエストスマグリング |
| 登録/公開日 | 2026/09/06 |
| KEV 期限 | 2026/09/16 まで(米国連邦機関向け目安) |
| 出典 | https://nvd.nist.gov/vuln/detail/CVE-2026-48710 |
NVD の記述はこうである。「Starlette は軽量な ASGI フレームワーク/ツールキットである。**1.0.1 より前のバージョンでは、HTTP の `Host` リクエストヘッダが検証されないまま `request.url` の再構成に使われていた。**ルーティングの処理は生の HTTP パスを使うのに対し、`request.url` は `Host` ヘッダから組み直されるため、細工したヘッダによって `request.url.path` が実際に要求されたパスと食い違いうる。生の `scope` のパスではなく `request.url` を根拠にセキュリティ上の制限をかけているミドルウェアやエンドポイントは、したがって迂回されうる」。 **この案件の要点は、同じリクエストに対してアプリの中に「パスが2つ」あったことである。**ルーティングは生のパスを見て行き先を決める。一方 `request.url` は `Host` ヘッダを材料に組み立て直される。ふだんは両者が一致するので、どちらを見ても同じだと思って書ける。ところが `Host` にパスらしき文字列を混ぜ込むと、組み直した側だけが別のパスになる。**「/admin へのアクセスを弾く」という判定を `request.url` で書いていると、ルーティングは /admin へ通すのに、判定のほうは別のパスを見ていることになる。** **認証の迂回が現実的な被害である。**CISA はこの脆弱性を「HTTP リクエスト/レスポンススマグリング」として 2026-09-02 に KEV へ収載した。KEV の記述は、攻撃者が Host 部分にパスを注入して実際のパスの前に付けられること、そして**再構成した URL のパスに認証が依存している場合に認証の迂回に至ること**を挙げている。**KEV 収載は「実際に悪用が確認された」という意味である。** **CVSS は 6.5(Medium)だが、当サイトは KEV 枠で掲載している。**AV:N / AC:L / PR:N / UI:N で権限も利用者の操作も要らず、影響は C:L / I:L / A:N と見積もられている。点数だけを見れば High に届かない。しかし点数は「影響の大きさ」の指標であって「悪用される確率」の指標ではない。**実際に悪用されているものを、点数が足りないという理由で落とすのは本末転倒である。** **連鎖に注意が要る。**KEV の記述は、この欠陥が **CVE-2026-42271 と連鎖しうる**と明記している。単体の影響が Low 止まりでも、組み合わせると別の結果になりうるということである。 **依存の深さがこの案件の厄介さである。**Starlette は FastAPI の土台であり、`requirements.txt` に直接書いていない環境が多い。**「うちは Starlette を使っていない」と思っている環境こそ、まず `pip list` で確認したほうがよい。**
各ベンダー公式アドバイザリで確認できた事実に基づき整理しています。確認できていない項目は「情報確認中」と明記し、存在しないパッチ番号・バージョンは記載しません。
| 環境 | 対応状況 | 対応方法・備考 |
|---|---|---|
| AWS (ECS/EC2) | パッチあり(アプリ更新) |
EC2 / ECS / EKS / Lambda 上で動かしている Python アプリの Starlette を 1.0.1 以上へ更新する。AWS のマネージドサービスではないので、クラウド側の修正を待つ性質のものではない。
ALB / CloudFront の手前で Host ヘッダを絞る。ALB のリスナールールで host-header 条件を付けるか、WAF で想定外の Host を落とす。コンテナイメージは可変タグではなく版を固定したタグで配り、更新後に実際の Starlette の版を確かめる。
参照リンク
|
| GCP | パッチあり(アプリ更新) |
Compute Engine / GKE / Cloud Run 上の Python アプリの Starlette を 1.0.1 以上へ更新する。対応はアプリケーション側の更新である。
外部 HTTP(S) ロードバランサのホストルールで、想定しているホスト名以外を落とす。Cloud Run は古いリビジョンにトラフィックが残っていると更新が効かないので、更新後にトラフィックの割り当てを確認する。
参照リンク
|
| Azure | パッチあり(アプリ更新) |
Azure VM / AKS / App Service / Container Apps 上の Python アプリの Starlette を 1.0.1 以上へ更新する。プラットフォーム側の修正を待つものではない。
Application Gateway / Front Door でホスト名の許可リストを設定する。Container Apps はリビジョンが並行して残るため、旧リビジョンを無効化するまで更新が完了しない点に注意する。
参照リンク
|
| Linux | 情報確認中 |
pip / uv で入れている場合は `pip install -U "starlette>=1.0.1"` で更新して再起動する。ディストリのパッケージとして入っている場合は、Red Hat が RHSA-2026:22992 を出しているので、対象の製品ではそちらの更新を適用する。
**直接の依存として書いていなくても FastAPI 経由で入っていることが多い。** `pip list | grep -i starlette` で実際の版を確認する。更新できない期間は、セキュリティ判定を `request.url` ではなく `scope["path"]` で行うようにコードを直し、`TrustedHostMiddleware` でホスト名を絞る。
参照リンク
|
対応は **Starlette を 1.0.1 以上へ更新する**ことである。NVD の記述は「1.0.1 より前が対象」で、適用範囲は 0.8.3 以上 1.0.1 未満とされている。FastAPI などを経由して間接的に入っている場合は、上位パッケージの更新で Starlette が上がるとは限らないので、**更新後に実際に入っている版を確かめる**。 **更新までのあいだの回避は、コードの側で「どちらのパスを見ているか」を直すことである。**セキュリティ上の判定を `request.url` / `request.url.path` で書いているミドルウェアやデコレータがあれば、**生の `scope["path"]` を見るように書き換える**。Starlette の作者側の修正も、`Host` を検証したうえで組み直す方向のものである。自分のコードの側で URL 再構成に依存しない判定にしておけば、この経路は塞がる。 **もう1つの回避は、アプリの手前で `Host` を正規化することである。**リバースプロキシやロードバランサで、**想定しているホスト名以外の `Host` を持つリクエストを落とす**。ホスト名の許可リストは、この種の «Host ヘッダを信用してしまう» 欠陥全般に効く。Starlette には `TrustedHostMiddleware` があるので、これを入れて許可するホスト名を明示するのも有効である。ただし**認証の判定そのものを `request.url` から外すのが本筋**で、ホスト名の絞り込みは補助である。 **侵害の確認は、アクセスログの `Host` ヘッダを見る。**想定しているホスト名以外、とくに `/` やパスらしき文字列を含む `Host` が記録されていないかを探す。**多くの環境で `Host` はログに残っていない**ので、その場合はまずログの項目に `Host` を足すところから始める。認証が必要なはずのエンドポイントに、認証なしで 200 が返っている記録があれば、それが直接の証拠になる。 **KEV の是正期限は 2026-09-16 である。**米国連邦機関向けの期限だが、悪用が確認されている以上、実務上の目安としても使える。
Medium(CVSS 6.5)に分類されるKludex Starlette(Python の軽量 ASGI フレームワーク/ツールキット)。FastAPI をはじめ多くの Python Web アプリが内部で依存しているため、直接入れた覚えが無くても入っていることがある。Red Hat AI Inference Server など、これを同梱する製品も NVD の適用範囲に入っている。の脆弱性です。NVD の記述はこうである。「Starlette は軽量な ASGI フレームワーク/ツールキットである。**1.0.1 より前のバージョンでは、HTTP の `Host` リクエストヘッダが検証されないまま `request.url` の再構成に使われていた。**ルーティングの処理は生の HTTP パスを使うのに対し、`request.url` は `Host` ヘッダから組み直されるため、細工したヘッダによって `request.url.path` が実際に要求されたパスと食い違いうる。生の `scope` のパスではなく `request.url` を根拠にセキュリティ上の制限をかけているミドルウェアやエンドポイントは、したがって迂回されうる」。 **この案件の要点は、同じリクエストに対してアプリの中に「パスが2つ」あったことである。**ルーティングは生のパスを見て行き先を決める。一方 `request.url` は `Host` ヘッダを材料に組み立て直される。ふだんは両者が一致するので、どちらを見ても同じだと思って書ける。ところが `Host` にパスらしき文字列を混ぜ込むと、組み直した側だけが別のパスになる。**「/admin へのアクセスを弾く」という判定を `request.url` で書いていると、ルーティングは /admin へ通すのに、判定のほうは別のパスを見ていることになる。** **認証の迂回が現実的な被害である。**CISA はこの脆弱性を「HTTP リクエスト/レスポンススマグリング」として 2026-09-02 に KEV へ収載した。KEV の記述は、攻撃者が Host 部分にパスを注入して実際のパスの前に付けられること、そして**再構成した URL のパスに認証が依存している場合に認証の迂回に至ること**を挙げている。**KEV 収載は「実際に悪用が確認された」という意味である。** **CVSS は 6.5(Medium)だが、当サイトは KEV 枠で掲載している。**AV:N / AC:L / PR:N / UI:N で権限も利用者の操作も要らず、影響は C:L / I:L / A:N と見積もられている。点数だけを見れば High に届かない。しかし点数は「影響の大きさ」の指標であって「悪用される確率」の指標ではない。**実際に悪用されているものを、点数が足りないという理由で落とすのは本末転倒である。** **連鎖に注意が要る。**KEV の記述は、この欠陥が **CVE-2026-42271 と連鎖しうる**と明記している。単体の影響が Low 止まりでも、組み合わせると別の結果になりうるということである。 **依存の深さがこの案件の厄介さである。**Starlette は FastAPI の土台であり、`requirements.txt` に直接書いていない環境が多い。**「うちは Starlette を使っていない」と思っている環境こそ、まず `pip list` で確認したほうがよい。**
対応は **Starlette を 1.0.1 以上へ更新する**ことである。NVD の記述は「1.0.1 より前が対象」で、適用範囲は 0.8.3 以上 1.0.1 未満とされている。FastAPI などを経由して間接的に入っている場合は、上位パッケージの更新で Starlette が上がるとは限らないので、**更新後に実際に入っている版を確かめる**。 **更新までのあいだの回避は、コードの側で「どちらのパスを見ているか」を直すことである。**セキュリティ上の判定を `request.url` / `request.url.path` で書いているミドルウェアやデコレータがあれば、**生の `scope["path"]` を見るように書き換える**。Starlette の作者側の修正も、`Host` を検証したうえで組み直す方向のものである。自分のコードの側で URL 再構成に依存しない判定にしておけば、この経路は塞がる。 **もう1つの回避は、アプリの手前で `Host` を正規化することである。**リバースプロキシやロードバランサで、**想定しているホスト名以外の `Host` を持つリクエストを落とす**。ホスト名の許可リストは、この種の «Host ヘッダを信用してしまう» 欠陥全般に効く。Starlette には `TrustedHostMiddleware` があるので、これを入れて許可するホスト名を明示するのも有効である。ただし**認証の判定そのものを `request.url` から外すのが本筋**で、ホスト名の絞り込みは補助である。 **侵害の確認は、アクセスログの `Host` ヘッダを見る。**想定しているホスト名以外、とくに `/` やパスらしき文字列を含む `Host` が記録されていないかを探す。**多くの環境で `Host` はログに残っていない**ので、その場合はまずログの項目に `Host` を足すところから始める。認証が必要なはずのエンドポイントに、認証なしで 200 が返っている記録があれば、それが直接の証拠になる。 **KEV の是正期限は 2026-09-16 である。**米国連邦機関向けの期限だが、悪用が確認されている以上、実務上の目安としても使える。
Kludex Starlette(Python の軽量 ASGI フレームワーク/ツールキット)。FastAPI をはじめ多くの Python Web アプリが内部で依存しているため、直接入れた覚えが無くても入っていることがある。Red Hat AI Inference Server など、これを同梱する製品も NVD の適用範囲に入っている。 を利用している場合、稼働バージョンが影響範囲に含まれるかを一次情報(https://nvd.nist.gov/vuln/detail/CVE-2026-48710)で確認してください。AWS・GCP・Azure・Linux それぞれの対応状況は本ページの「クラウド/OS 別の対応状況」表にまとめています。確認できていない項目は「情報確認中」と明記しており、存在しないパッチ番号・バージョンは記載していません。
はい。CISA の既知の悪用された脆弱性カタログ(KEV)に登録されており、実環境での悪用が確認されています。米国連邦機関向けの対応期限の目安は 2026/09/16 です。早急な対応が推奨されます。
本ページの記載は下記の一次情報に基づく非公式まとめです。数値・対応状況は各出典元で最終確認してください。