CVE-2026-48710: Kludex Starlette HTTP Request/Response Smuggling Vulnerability
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.
CVE-2026-48710 is an HTTP request/response smuggling weakness in Kludex Starlette. In plain terms, crafted requests can confuse how the framework and any front-end proxy or gateway interpret the same HTTP message, so the path an application “sees” may not match what the client actually sent. CISA notes that attackers may inject path material into the host portion in a way that prepends the real path, which can break authentication or access checks that trust a reconstructed URL path. The issue can be chained with CVE-2026-42271. Teams running Starlette-based APIs or apps behind reverse proxies should treat this as a priority to inventory and fix, confirming all version and patch details against the vendor advisory.
Request smuggling of this class matters because path- and host-dependent logic (routing, authz, logging) can be steered incorrectly. Public detail on exact builds and exploit mechanics is limited here; always verify against the official Starlette/Kludex advisory and your deployment topology.
How it works
The weakness is tracked as CWE-444 (HTTP request/response smuggling). Smuggling arises when two HTTP processors disagree on where one request ends and the next begins, or on how headers such as Host and path-related fields are parsed and normalized. In this case, CISA describes injection of path content into the host part so that the reconstructed path used by the application is prepended or altered relative to the intended path.
A technical abuse pattern for this class is: send a request (or sequence) that a proxy accepts under one interpretation while Starlette (or an intermediate) accepts another. Downstream code that authorizes or routes based on the reconstructed URL path may then allow access that would have been denied for the true path, including authentication bypass when checks depend on that path. Chaining with CVE-2026-42271 is noted by CISA; treat combined impact as higher risk until both are addressed. Do not assume specific payloads or parser edge cases beyond what the vendor documents—confirm mechanics in the advisory.
Am I affected? How to find it in your systems
Kludex Starlette is a lightweight ASGI framework commonly used for Python web APIs and services, often behind nginx, Envoy, cloud load balancers, API gateways, or container ingress. It may appear as a direct dependency or transitively via FastAPI and similar stacks.
- Inventory: search application SBOMs, lockfiles (for example poetry/pip freeze/uv), container images, and CI build manifests for the starlette package and packages that vendor it. Note runtime Python environments on VMs, Kubernetes, and serverless where ASGI apps run.
- Versions and config: compare installed Starlette versions to the fixed releases named in the vendor advisory. Pay special attention to apps that reconstruct request URLs for authz, path-based ACLs, or middleware that trusts Host/path normalization, and to multi-hop proxy chains with divergent HTTP parsing.
- Exposure: map internet-facing and high-trust internal entry points that terminate HTTP before Starlette. Stakeholders should evaluate each asset’s internet exposure per CISA BOD 26-04 guidance referenced in the required action.
- Telemetry: look for anomalous path/Host combinations in access logs, sudden auth successes on unexpected paths, desync-like 400/404 patterns between proxy and app logs, or mismatched request IDs across tiers. Smuggling often leaves subtle inconsistencies rather than a single signature—correlate proxy and application logs. Confirm any IoCs or detection rules the vendor or CISA publish.
How to remediate
Patch first. Apply the vendor-supplied update for Kludex Starlette exactly as named in the official advisory, and redeploy all affected services. Align with CISA’s required action: apply mitigations per vendor instructions, follow BOD 26-04 prioritization for security updates based on risk, and meet applicable forensics triage expectations. For cloud-hosted or managed use, follow BOD 26-04 cloud guidance or discontinue use if mitigations are unavailable.
- After upgrading, regression-test URL reconstruction, auth middleware, and reverse-proxy forwarding (Host, X-Forwarded-*, path stripping).
- Normalize HTTP parsing end-to-end: prefer a single well-understood front-end that rejects ambiguous requests; disable conflicting hop-by-hop behaviors where possible.
- Ensure authentication and authorization do not rely solely on a reconstructed path that can be influenced by Host/path smuggling; bind decisions to canonical, server-side route identity where the framework allows.
- Rebuild and redeploy containers/images so transitive pins cannot float back to a vulnerable Starlette build; re-scan SBOMs post-change.
- If CVE-2026-42271 applies in your stack, remediate it on the same schedule to reduce chain risk.
If you can't patch immediately
Use compensating controls until the vendor fix is fully rolled out. These reduce likelihood and impact but do not replace the patch.
- Segmentation: restrict direct client access to Starlette instances; force traffic through a hardened reverse proxy or WAF you control; limit lateral paths from the app tier.
- Virtual patching / WAF: block or challenge requests with ambiguous framing, unusual Host values containing path-like material, or duplicate/conflicting length and encoding headers—tuned to your proxy’s parser and validated so legitimate clients are not broken. Confirm rule guidance against vendor/CISA notes rather than inventing signatures.
- Feature and trust reduction: temporarily simplify path-based authz that depends on reconstructed URLs; prefer fail-closed checks; disable nonessential debug or alternate HTTP entrypoints.
- Monitoring: heighten logging of Host and path at proxy and app; alert on desync indicators and unexpected authorized paths; retain logs for forensic triage consistent with CISA expectations.
- Exposure cutdown: remove public listeners where possible; require mTLS or network allowlists for admin and internal APIs.
If your data may have been exposed
Actively exploited smuggling and related auth-bypass flaws can lead to unauthorized access and data exposure even when ransomware use is not documented for this CVE. If you suspect compromise, follow your incident process: isolate affected services, preserve proxy and application logs, rotate credentials and sessions that may have been reachable via path confusion, and complete forensics triage in line with CISA guidance. You can run a free exposure scan of your email addresses against known breach datasets to see whether associated accounts appear in prior public breaches while you complete internal investigation.
AICompiled with AI assistance from public sources and published under our editorial standards.
Details
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:NReferences
- badhost.org
- github.com/Kludex/starlette/commit/764dab0dcfb9033d75442d7a359645c9f94648c6
- github.com/Kludex/starlette/security/advisories/GHSA-86qp-5c8j-p5mr
- github.com/pypa/advisory-database/tree/main/vulns/starlette/PYSEC-2026-161.yaml
- ostif.org/disclosing-the-badhost-vulnerability-in-starlette
- www.secwest.net/starlette
- www.x41-dsec.de/lab/advisories/x41-2026-002-starlette
- access.redhat.com/errata/RHSA-2026:22992