Starlette has missing Host header validation that poisons request.url.path, bypassing path-based security checks
Summary
| CVE | CVE-2026-48710 |
|---|---|
| State | PUBLISHED |
| Assigner | GitHub_M |
| Source Priority | CVE Program / NVD first with legacy fallback |
| Published | 2026-05-26 22:16:44 UTC |
| Updated | 2026-07-10 12:17:06 UTC |
| Description | 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. |
Risk And Classification
Primary CVSS: v3.1 6.5 MEDIUM from [email protected]
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N
EPSS: 0.014380000 probability, percentile 0.700340000 (date 2026-07-12)
Problem Types: CWE-444 | CWE-1289 | CWE-444 CWE-444: Inconsistent Interpretation of HTTP Requests ('HTTP Request/Response Smuggling') | CWE-1289 Improper Validation of Unsafe Equivalence in Input
| Version | Source | Type | Score | Severity | Vector |
|---|---|---|---|---|---|
| 3.1 | [email protected] | Primary | 6.5 | MEDIUM | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N |
| 3.1 | ADP | CVSS | 6.5 | MEDIUM | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N |
| 3.1 | [email protected] | Secondary | 6.5 | MEDIUM | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N |
| 3.1 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | Secondary | 6.5 | MEDIUM | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N |
| 3.1 | CNA | DECLARED | 6.5 | MEDIUM | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N |
CVSS v3.1 Breakdown
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N
NVD Known Affected Configurations (CPE 2.3)
Vendor Declared Affected Products
| Source | Vendor | Product | Version | Platforms |
|---|---|---|---|---|
| CNA | Kludex | Starlette | affected < 1.0.1 | Not specified |
| ADP | Red Hat | Red Hat AI Inference Server 3.3 | Not specified | Not specified |
| ADP | Red Hat | Red Hat Ansible Automation Platform 2.6 | Not specified | Not specified |
| ADP | Red Hat | Red Hat Ansible Automation Platform 2.7 | Not specified | Not specified |
| ADP | Red Hat | Red Hat OpenShift AI 3.3 | Not specified | Not specified |
| ADP | Red Hat | Red Hat OpenShift AI 3.4 | Not specified | Not specified |
| ADP | Red Hat | Red Hat Satellite 6.18 | Not specified | Not specified |
| ADP | Red Hat | Red Hat Satellite 6.19 | Not specified | Not specified |
| ADP | Red Hat | Exploit Intelligence | Not specified | Not specified |
| ADP | Red Hat | Migration Toolkit For Applications 8 | Not specified | Not specified |
| ADP | Red Hat | OpenShift Lightspeed | Not specified | Not specified |
| ADP | Red Hat | Red Hat AI Inference Server | Not specified | Not specified |
| ADP | Red Hat | Red Hat Enterprise Linux AI RHEL AI 3 | Not specified | Not specified |
| ADP | Red Hat | Red Hat OpenShift AI RHOAI | Not specified | Not specified |
| ADP | Red Hat | Red Hat Satellite 6 | Not specified | Not specified |
| ADP | Red Hat | Red Hat Ansible Automation Platform 2 | Not specified | Not specified |
References
| Reference | Source | Link | Tags |
|---|---|---|---|
| ostif.org/disclosing-the-badhost-vulnerability-in-starlette | [email protected] | ostif.org | Mitigation, Third Party Advisory |
| github.com/Kludex/starlette/commit/764dab0dcfb9033d75442d7a359645c9f94648c6 | [email protected] | github.com | Patch |
| github.com/pypa/advisory-database/tree/main/vulns/starlette/PYSEC-2026-1... | [email protected] | github.com | Third Party Advisory |
| access.redhat.com/errata/RHSA-2026:34456 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | access.redhat.com | |
| access.redhat.com/errata/RHSA-2026:23346 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | access.redhat.com | |
| github.com/Kludex/starlette/security/advisories/GHSA-86qp-5c8j-p5mr | [email protected] | github.com | Vendor Advisory |
| security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-48710.json | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | security.access.redhat.com | |
| access.redhat.com/errata/RHSA-2026:22992 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | access.redhat.com | |
| badhost.org | [email protected] | badhost.org | Mitigation, Third Party Advisory |
| access.redhat.com/errata/RHSA-2026:34526 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | access.redhat.com | |
| www.secwest.net/starlette | [email protected] | www.secwest.net | Exploit, Mitigation, Third Party Advisory |
| bugzilla.redhat.com/show_bug.cgi | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | bugzilla.redhat.com | |
| access.redhat.com/errata/RHSA-2026:37275 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | access.redhat.com | |
| access.redhat.com/errata/RHSA-2026:30089 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | access.redhat.com | |
| access.redhat.com/errata/RHSA-2026:22993 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | access.redhat.com | |
| www.x41-dsec.de/lab/advisories/x41-2026-002-starlette | [email protected] | www.x41-dsec.de | Exploit, Mitigation, Third Party Advisory |
| access.redhat.com/errata/RHSA-2026:30088 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | access.redhat.com | |
| access.redhat.com/security/cve/CVE-2026-48710 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | access.redhat.com | |
| access.redhat.com/errata/RHSA-2026:24866 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | access.redhat.com | |
| access.redhat.com/errata/RHSA-2026:26226 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | access.redhat.com | |
| access.redhat.com/errata/RHSA-2026:34532 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | access.redhat.com | |
| www.cve.org/CVERecord | MITRE | www.cve.org | |
| NVD vulnerability detail | NVD | nvd.nist.gov | canonical, analysis |
Additional Advisory Data
| Source | Time | Event |
|---|---|---|
| ADP | 2026-05-26T23:01:03.204Z | Reported to Red Hat. |
| ADP | 2026-05-26T21:54:54.393Z | Made public. |
Solutions
ADP: RHSA-2026:30089: Red Hat AI Inference Server 3.3
ADP: RHSA-2026:30088: Red Hat AI Inference Server 3.3
ADP: RHSA-2026:24866: Red Hat Ansible Automation Platform 2.6
ADP: RHSA-2026:23346: Red Hat Ansible Automation Platform 2.7
ADP: RHSA-2026:37275: Red Hat OpenShift AI 3.3
ADP: RHSA-2026:34456: Red Hat OpenShift AI 3.4
ADP: RHSA-2026:22993: Red Hat Satellite 6.18
ADP: RHSA-2026:26226: Red Hat Satellite 6.18
ADP: RHSA-2026:22992: Red Hat Satellite 6.19
ADP: RHSA-2026:34532: Red Hat Satellite 6.19
ADP: RHSA-2026:34526: Red Hat Satellite 6.19
Workarounds
ADP: Deploying an RFC-compliant reverse proxy (such as nginx, Apache, HAProxy, or Caddy) in front of the ASGI server will reject malformed Host headers before they reach the application. This is the most straightforward mitigation that does not require code changes. If custom middleware is present, it should be updated to use `request.scope["path"]` instead of `request.url.path` for any security decisions. The ASGI scope path is derived from the HTTP request line and is not influenced by the Host header, so it reflects the actual request target.