Every CVE Search/ Get API key

CVE-2026-48710

Starlette has missing Host header validation that poisons request.url.path, bypassing path-based security checks

6.5 MediumIn KEVPublic exploitFix available

Starlette is a lightweight ASGI framework/toolkit. Prior to version 1.0.1, the HTTP Host request header was not validated before being used to reconstruct request.url. Because the routing algorithm relies on the raw HTTP path while request.url is rebuilt from the Host header, a malformed header could make request.url.path differ from the path that was actually requested. Middleware and endpoints that apply security restrictions based on request.url (rather than the raw scope path) could therefore be bypassed. Users should upgrade to a version greater than or equal to version 1.0.1, which validates the Host header against the grammar of RFC 9112 §3.2 / RFC 3986 §3.2.2 when constructing request.url and falls back to scope["server"] for malformed values.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
None
User interaction
None

What an attacker can affect

Confidentiality
Low
Integrity
Low
Availability
None

Exploit likelihood

70.3%Up 70.3 points since May 27, 2026
90%50%10%1%

What each source reports

CVE List Score used 6.5

Starlette has missing Host header validation that poisons request.url.path, bypassing path-based security checks

Starlette is a lightweight ASGI framework/toolkit. Prior to version 1.0.1, the HTTP Host request header was not validated before being used to reconstruct request.url. Because the routing algorithm relies on the raw HTTP path while request.url is rebuilt from the Host header, a malformed header could make request.url.path differ from the path that was actually requested. Middleware and endpoints that apply security restrictions based on request.url (rather than the raw scope path) could therefore be bypassed. Users should upgrade to a version greater than or equal to version 1.0.1, which validates the Host header against the grammar of RFC 9112 §3.2 / RFC 3986 §3.2.2 when constructing request.url and falls back to scope["server"] for malformed values.

Record
CVE-2026-48710
CVSS 3.1
6.5 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N
Weakness
CWE-444, CWE-1289
Updated
2026-11-02
EUVDEUVD-2026-32016 6.5

Starlette is a lightweight ASGI framework/toolkit. Prior to version 1.0.1, the HTTP Host request header was not validated before being used to reconstruct request.url. Because the routing algorithm relies on the raw HTTP path while request.url is rebuilt from the Host header, a malformed header could make request.url.path differ from the path that was actually requested. Middleware and endpoints that apply security restrictions based on request.url (rather than the raw scope path) could therefore be bypassed. Users should upgrade to a version greater than or equal to version 1.0.1, which validates the Host header against the grammar of RFC 9112 §3.2 / RFC 3986 §3.2.2 when constructing request.url and falls back to scope["server"] for malformed values.

Record
EUVD-2026-32016
CVSS 3.1
6.5 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N
Updated
2026-11-02
GitHub AdvisoriesGHSA-86qp-5c8j-p5mr 6.5

Starlette has missing Host header validation that poisons request.url.path, bypassing path-based security checks

Summary

In affected versions, the HTTP Host request header was not validated before being used to reconstruct request.url. Because the routing algorithm relies on the raw HTTP path while request.url is rebuilt from the Host header, a malformed header could make request.url.path differ from the path that was actually requested. Middleware and endpoints that apply security restrictions based on request.url (rather than the raw scope path) could therefore be bypassed.

Details

When a client requests http://example.com/foo, it sends:

GET /foo HTTP/1.1
Host: example.com

Affected versions reconstructed the URL by concatenating http://{host}{path} and re-parsing the result. The Host value is only valid as a uri-host [ ":" port ] per RFC 9112 §3.2, where uri-host follows the restricted host grammar of RFC 3986 §3.2.2. When it contains characters outside that grammar - notably /, ?, or # - those characters move the path/query/fragment boundaries during re-parsing, so the parsed request.url.path no longer matches the path the server actually received. For example:

GET /foo HTTP/1.1
Host: example.com/abc?bar=

reconstructs to http://example.com/abc?bar=/foo, whose parsed path is /abc - even though routing used the real path /foo. The router still dispatches to /foo and the endpoint executes, but any middleware or code that reads request.url.path sees /abc, so path-based authorization checks can be bypassed.

Impact

Any application running an affected version that relies on request.url (or request.url.path) for security-sensitive decisions is affected. The most common case is middleware that gates access to certain path prefixes based on request.url.path. Deployments fronted by a proxy or load balancer are mitigated only if that proxy rejects or normalizes the malformed Host header before forwarding and the application does not trust attacker-controlled host headers (e.g. X-Forwarded-Host) elsewhere.

Mitigation

Upgrade to a patched version, which validates the Host header against the grammar of RFC 9112 §3.2 / RFC 3986 §3.2.2 when constructing request.url and falls back to scope["server"] for malformed values.

Record
GHSA-86qp-5c8j-p5mr
CVSS 3.1
6.5 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N
Weakness
CWE-444, CWE-1289
Updated
2026-11-02
CISA KEV No score

Kludex Starlette HTTP Request/Response Smuggling Vulnerability

Kludex Starlette contains a HTTP request/response smuggling vulnerability that could allow attackers to inject paths into the host part, prepending the actual path leading to issues such as authentication bypass when the authentication depends on the reconstructed URL’s path. This vulnerability could be chaned with CVE-2026-42271.

Record
CVE-2026-48710
Weakness
CWE-444
Updated
2026-11-02
NVD 6.5

Starlette is a lightweight ASGI framework/toolkit. Prior to version 1.0.1, the HTTP Host request header was not validated before being used to reconstruct request.url. Because the routing algorithm relies on the raw HTTP path while request.url is rebuilt from the Host header, a malformed header could make request.url.path differ from the path that was actually requested. Middleware and endpoints that apply security restrictions based on request.url (rather than the raw scope path) could therefore be bypassed. Users should upgrade to a version greater than or equal to version 1.0.1, which validates the Host header against the grammar of RFC 9112 §3.2 / RFC 3986 §3.2.2 when constructing request.url and falls back to scope["server"] for malformed values.

Record
CVE-2026-48710
CVSS 3.1
6.5 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N
Weakness
CWE-444, CWE-1289
Updated
2026-11-02
OSVALPINE-CVE-2026-48710 6.5

Starlette is a lightweight ASGI framework/toolkit. Prior to version 1.0.1, the HTTP Host request header was not validated before being used to reconstruct request.url. Because the routing algorithm relies on the raw HTTP path while request.url is rebuilt from the Host header, a malformed header could make request.url.path differ from the path that was actually requested. Middleware and endpoints that apply security restrictions based on request.url (rather than the raw scope path) could therefore be bypassed. Users should upgrade to a version greater than or equal to version 1.0.1, which validates the Host header against the grammar of RFC 9112 §3.2 / RFC 3986 §3.2.2 when constructing request.url and falls back to scope["server"] for malformed values.

Record
ALPINE-CVE-2026-48710
CVSS 3.1
6.5 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N
Updated
2026-11-03
Show 14 moreShow less
OSV 6.5

Starlette has missing Host header validation that poisons request.url.path, bypassing path-based security checks

Starlette is a lightweight ASGI framework/toolkit. Prior to version 1.0.1, the HTTP Host request header was not validated before being used to reconstruct request.url. Because the routing algorithm relies on the raw HTTP path while request.url is rebuilt from the Host header, a malformed header could make request.url.path differ from the path that was actually requested. Middleware and endpoints that apply security restrictions based on request.url (rather than the raw scope path) could therefore be bypassed. Users should upgrade to a version greater than or equal to version 1.0.1, which validates the Host header against the grammar of RFC 9112 §3.2 / RFC 3986 §3.2.2 when constructing request.url and falls back to scope["server"] for malformed values.

Record
CVE-2026-48710
CVSS 3.1
6.5 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N
Weakness
CWE-444
Updated
2026-11-02
OSVDEBIAN-CVE-2026-48710 6.5

Starlette is a lightweight ASGI framework/toolkit. Prior to version 1.0.1, the HTTP Host request header was not validated before being used to reconstruct request.url. Because the routing algorithm relies on the raw HTTP path while request.url is rebuilt from the Host header, a malformed header could make request.url.path differ from the path that was actually requested. Middleware and endpoints that apply security restrictions based on request.url (rather than the raw scope path) could therefore be bypassed. Users should upgrade to a version greater than or equal to version 1.0.1, which validates the Host header against the grammar of RFC 9112 §3.2 / RFC 3986 §3.2.2 when constructing request.url and falls back to scope["server"] for malformed values.

Record
DEBIAN-CVE-2026-48710
CVSS 3.1
6.5 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N
Updated
2026-11-02
OSVGHSA-86qp-5c8j-p5mr 6.5

Starlette has missing Host header validation that poisons request.url.path, bypassing path-based security checks

Summary

In affected versions, the HTTP Host request header was not validated before being used to reconstruct request.url. Because the routing algorithm relies on the raw HTTP path while request.url is rebuilt from the Host header, a malformed header could make request.url.path differ from the path that was actually requested. Middleware and endpoints that apply security restrictions based on request.url (rather than the raw scope path) could therefore be bypassed.

Details

When a client requests http://example.com/foo, it sends:

GET /foo HTTP/1.1
Host: example.com

Affected versions reconstructed the URL by concatenating http://{host}{path} and re-parsing the result. The Host value is only valid as a uri-host [ ":" port ] per RFC 9112 §3.2, where uri-host follows the restricted host grammar of RFC 3986 §3.2.2. When it contains characters outside that grammar - notably /, ?, or # - those characters move the path/query/fragment boundaries during re-parsing, so the parsed request.url.path no longer matches the path the server actually received. For example:

GET /foo HTTP/1.1
Host: example.com/abc?bar=

reconstructs to http://example.com/abc?bar=/foo, whose parsed path is /abc - even though routing used the real path /foo. The router still dispatches to /foo and the endpoint executes, but any middleware or code that reads request.url.path sees /abc, so path-based authorization checks can be bypassed.

Impact

Any application running an affected version that relies on request.url (or request.url.path) for security-sensitive decisions is affected. The most common case is middleware that gates access to certain path prefixes based on request.url.path. Deployments fronted by a proxy or load balancer are mitigated only if that proxy rejects or normalizes the malformed Host header before forwarding and the application does not trust attacker-controlled host headers (e.g. X-Forwarded-Host) elsewhere.

Mitigation

Upgrade to a patched version, which validates the Host header against the grammar of RFC 9112 §3.2 / RFC 3986 §3.2.2 when constructing request.url and falls back to scope["server"] for malformed values.

Record
GHSA-86qp-5c8j-p5mr
CVSS 3.1
6.5 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N
Weakness
CWE-1289, CWE-444
Updated
2026-11-02
OSVUBUNTU-CVE-2026-48710 6.5

Starlette is a lightweight ASGI framework/toolkit. Prior to version 1.0.1, the HTTP Host request header was not validated before being used to reconstruct request.url. Because the routing algorithm relies on the raw HTTP path while request.url is rebuilt from the Host header, a malformed header could make request.url.path differ from the path that was actually requested. Middleware and endpoints that apply security restrictions based on request.url (rather than the raw scope path) could therefore be bypassed. Users should upgrade to a version greater than or equal to version 1.0.1, which validates the Host header against the grammar of RFC 9112 §3.2 / RFC 3986 §3.2.2 when constructing request.url and falls back to scope["server"] for malformed values.

Record
UBUNTU-CVE-2026-48710
CVSS 3.1
6.5 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N
Updated
2026-11-02
OSVCLSA-2026-1781052728 No score

TuxCare security update for starlette (1 CVE)

TuxCare rebuilt starlette to address 1 CVE. Fixed in 0.27.0.post3+tuxcare.

Record
CLSA-2026-1781052728
Updated
2026-11-02
OSVCLSA-2026-1789447406 No score

TuxCare security update for starlette (8 CVEs)

TuxCare rebuilt starlette to address 8 CVEs. Fixed in 0.25.0.post1+tuxcare.

Record
CLSA-2026-1789447406
Updated
2026-11-02
OSVCLSA-2026-1789648460 No score

TuxCare security update for starlette (1 CVE)

TuxCare rebuilt starlette to address 1 CVE. Fixed in 0.13.6.post6+tuxcare.

Record
CLSA-2026-1789648460
Updated
2026-11-02
OSVMGASA-2026-0327 No score

Updated python-starlette package fixes security vulnerabilities

The updated package fixes security vulnerabilities: Proxy-Authorization header kept across hosts. (CVE-2024-28849) Starlette vulnerable to O(n^2) DoS via Range header merging in starlette.responses.FileResponse. (CVE-2025-62727) Security restriction bypass via malformed HTTP Host header. (CVE-2026-48710)

Record
MGASA-2026-0327
Updated
2026-11-02
OSVopenSUSE-SU-2026:11026-1 No score

python311-starlette-1.2.0-1.1 on GA media

These are all security issues fixed in the python311-starlette-1.2.0-1.1 package on the GA media of openSUSE Tumbleweed.

Record
openSUSE-SU-2026:11026-1
Updated
2026-11-02
OSVopenSUSE-SU-2026:11044-1 No score

python311-google-adk-2.2.0-1.1 on GA media

These are all security issues fixed in the python311-google-adk-2.2.0-1.1 package on the GA media of openSUSE Tumbleweed.

Record
openSUSE-SU-2026:11044-1
Updated
2026-11-02
OSVopenSUSE-SU-2026:20975-1 No score

Security update for python-starlette

This update for python-starlette fixes the following issues

  • CVE-2025-54121: denial-of-service when parsing a multi-part form with large files (bsc#1246855).
  • CVE-2025-62727: DoS via Range header merging (bsc#1252805).
  • CVE-2026-48710: Missing Host header validation poisons request.url.path, bypassing path-based security checks (bsc#1266369).
Record
openSUSE-SU-2026:20975-1
Updated
2026-11-02
OSVPYSEC-2026-161 No score

BadHost: Missing Host header validation poisons request.url.path, bypassing path-based security checks

Starlette reconstructs the requested URL based on the HTTP Host request header and requested path, but does not perform any validation of the Host header value. This allows attackers to inject paths into the host part, prepending the actual path. However, routing in Starlette is based on the actual request path. This inconsistent interpretation of HTTP requests may lead to issues such as authentication bypass when the authentication depends on the reconstructed URL’s path.

Record
PYSEC-2026-161
Updated
2026-11-02
OSVROOT-APP-PYPI-CVE-2026-48710 No score

CVE-2026-48710 in starlette - Patched by Root

Root has patched CVE-2026-48710 in the starlette package for Root:PyPI. Multiple fixed versions available.

Record
ROOT-APP-PYPI-CVE-2026-48710
Updated
2026-11-02
OSVSUSE-SU-2026:22151-1 No score

Security update for python-starlette

This update for python-starlette fixes the following issues

  • CVE-2025-54121: denial-of-service when parsing a multi-part form with large files (bsc#1246855).
  • CVE-2025-62727: DoS via Range header merging (bsc#1252805).
  • CVE-2026-48710: Missing Host header validation poisons request.url.path, bypassing path-based security checks (bsc#1266369).
Record
SUSE-SU-2026:22151-1
Updated
2026-11-02

Affected products

Show 12 moreShow less

Affected packages

Affected packages
PackageAffectedFixed
starlette
PyPI
through 1.0.0
1.0.1
py3-starlette
Alpine:v3.24
0.8.3 up to 1.1.0-r0
1.1.0-r0
starlette
TuxCare:PyPI
0.27.0 up to 0.27.0.post3+tuxcare, plus listed versions
0.27.0.post1+tuxcare0.27.0.post2+tuxcare
0.27.0.post3+tuxcare
starlette
TuxCare:PyPI
From an advisory covering 8 CVEs
0.25.0 up to 0.25.0.post1+tuxcare
0.25.0.post1+tuxcare
starlette
TuxCare:PyPI
0.13.6 up to 0.13.6.post6+tuxcare, plus listed versions
0.13.6.post1+tuxcare0.13.6.post2+tuxcare0.13.6.post3+tuxcare0.13.6.post4+tuxcare0.13.6.post5+tuxcare
0.13.6.post6+tuxcare
starlette
Debian:12
before 0.26.1-1+deb12u1, plus listed versions
0.26.1-1
0.26.1-1+deb12u1
starlette
Debian:13
before 0.46.1-3+deb13u2, plus listed versions
0.46.1-30.46.1-3+deb13u1
0.46.1-3+deb13u2
starlette
Debian:14
before 1.1.0-1, plus listed versions
0.46.1-30.50.0-11.0.0-1
1.1.0-1
starlette
PyPI
before 1.0.1, plus listed versions
0.1.00.1.10.1.100.1.110.1.12
Show 45 moreShow less
0.1.130.1.140.1.150.1.160.1.170.1.20.1.30.1.40.1.50.1.60.1.70.1.80.1.90.10.00.10.10.10.20.10.30.10.40.10.50.10.60.10.70.11.00.11.10.11.20.11.30.11.40.12.00.12.0b10.12.0b20.12.0b30.12.10.12.100.12.110.12.120.12.130.12.20.12.30.12.40.12.50.12.60.12.70.12.80.12.90.13.00.13.1
1.0.1
python-starlette
Mageia:10
From an advisory covering 3 CVEs
before 0.46.0-3.1.mga10
0.46.0-3.1.mga10
Show 12 moreShow less
Affected packages
PackageAffectedFixed
starlette
Root:PyPI
before 0.27.0+aikido.11
0.27.0+aikido.110.22.0+aikido.70.19.0+aikido.10.19.1+aikido.10.21.0+aikido.10.27.0+aikido.10.36.1+aikido.10.36.2+aikido.10.45.3+aikido.100.45.3+aikido.110.45.3+aikido.50.45.3+aikido.60.45.3+aikido.70.45.3+aikido.80.45.3+aikido.90.9.9+aikido.10.38.6+aikido.10.45.0+aikido.10.9.9+aikido.20.45.1+aikido.10.47.0+aikido.30.49.2+aikido.10.45.2+aikido.20.49.3+aikido.10.44.0+aikido.10.43.0+aikido.10.46.0+aikido.20.41.0+aikido.10.51.0+aikido.10.52.0+aikido.10.38.5+aikido.10.49.0+aikido.10.38.4+aikido.10.38.2+aikido.10.22.0+aikido.30.47.2+aikido.20.47.1+aikido.20.41.2+aikido.20.41.3+aikido.20.41.3+aikido.30.47.2+aikido.30.47.1+aikido.30.41.3+aikido.50.41.3+aikido.60.49.3+aikido.30.46.2+aikido.60.45.3+aikido.130.52.1+aikido.20.49.1+aikido.20.49.2+aikido.30.48.0+aikido.50.47.3+aikido.50.45.3+aikido.140.49.3+aikido.40.49.2+aikido.40.41.3+aikido.70.46.2+aikido.70.52.1+aikido.30.22.0+aikido.50.49.1+aikido.31.0.0+aikido.30.45.3+aikido.150.50.0+aikido.30.22.0+aikido.60.27.0+aikido.100.37.2+aikido.20.39.2+aikido.20.13.1+aikido.10.13.8+aikido.1
rootio-starlette
Root:PyPI
before 0.22.0+aikido.4
0.22.0+aikido.40.21.0+aikido.20.19.0+aikido.20.19.1+aikido.20.41.3+aikido.40.43.0+aikido.20.44.0+aikido.20.45.0+aikido.20.47.2+aikido.40.45.3+aikido.120.45.1+aikido.20.46.0+aikido.30.47.1+aikido.40.47.0+aikido.40.49.1+aikido.10.49.2+aikido.20.49.3+aikido.20.49.0+aikido.20.51.0+aikido.20.52.0+aikido.20.9.9+aikido.30.52.1+aikido.10.45.2+aikido.3
python-starlette
SUSE:Linux Enterprise Server 16.0
From an advisory covering 3 CVEs
before 0.41.3-160000.3.1
0.41.3-160000.3.1
python-starlette
SUSE:Linux Enterprise Server for SAP applications 16.0
From an advisory covering 3 CVEs
before 0.41.3-160000.3.1
0.41.3-160000.3.1
starlette
Ubuntu:22.04:LTS
All versions, plus listed versions
0.14.1-10.16.0-10.18.0-1
None known
starlette
Ubuntu:24.04:LTS
All versions, plus listed versions
0.30.0-10.31.1-1
None known
starlette
Ubuntu:25.10
All versions, plus listed versions
0.46.1-20.46.1-3
None known
starlette
Ubuntu:26.10
All versions, plus listed versions
0.50.0-11.1.0-11.3.1-11.7.0-2
None known
starlette
Ubuntu:26.04:LTS
All versions, plus listed versions
0.46.1-30.50.0-1
None known
python-starlette
openSUSE:Tumbleweed
before 1.2.0-1.1
1.2.0-1.1
python-google-adk
openSUSE:Tumbleweed
before 2.2.0-1.1
2.2.0-1.1
python-starlette
openSUSE:Leap 16.0
From an advisory covering 3 CVEs
before 0.41.3-160000.3.1
0.41.3-160000.3.1

Public exploits

Links only. Every CVE stores no exploit code.

Public exploits
SourceLinkDate
PoC in GitHuberis-ths/supply-chain-guard2026-04-01
PoC in GitHubxtremebeing/starlette-host-header-lab2026-05-27
PoC in GitHubBhanunamikaze/BadHost-CVE-2026-48710-Exploit2026-05-28
PoC in GitHubsb-ox/repro-OXDEV-77637-uv-workspace2026-08-03
PoC in GitHubCuteeCat/CVE-2026-487102026-08-11
NucleiStarlette - Improper Validation of Unsafe Equivalence in Input

History

History
RecordedChangedSources
affected
exploitation
affected, aliases, exploits, referencesOSV
first indexedCVE List, EUVD, GitHub Advisories, CISA KEV, Nuclei, NVD, OSV, PoC in GitHub

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-48710 is a medium vulnerability (CVSS 6.5) in Encode Starlette, published May 22, 2026. CISA lists it as known to be exploited, since September 2, 2026. EUVD reports exploitation since September 2, 2026. Public exploit code exists. EPSS puts the chance of exploitation in the next 30 days at 70.3%, the 99th percentile. Fixed in starlette 1.0.1.

References

Show 45 moreShow less
This page doesn't list everything

Left out here: 141 versions. The JSON record has them.

MoveEnter Open