Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify public http4k reverseProxy with vhosts
-
DeliveryCraft Host header containing target vhost name
-
ExploitSend request to inbound proxy
-
ExecutionSubstring match routes to protected vhost
-
ImpactAccess authorization-gated backend
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V4 - API and Web Service HTTP request consistency
|
| Exploitation Conditions | Exploitable ONLY when http4k reverseProxy() or reverseProxyRouting() is deployed as a public-facing INBOUND HTTP handler AND configured with two or more virtual hosts AND the application relies on that vhost routing to enforce authorization. This is explicitly NOT the documented intent of these functions (intended use is outbound service dispatch and test-time fake-backend composition, where the Host value is trusted/application-set and is unaffected). The flaw is the default Contains (substring) Host-header matcher - a Host header merely containing a configured vhost name (e.g. Host: admin.evil.com for a vhost 'admin') is routed to that vhost. Limiting factors: requires the specific inbound multi-vhost deployment pattern (captured as AT:P), affects only versions < 6.49.0.0 / < 5.42.0.0 / < 4.51.0.0, and mitigable without upgrade by wrapping with an exact host-allow-list filter. |
| Impact | This is a genuine but tightly-scoped authorization-bypass issue, not a high-severity emergency. The vendor CVSS 4.0 score of 6.3 (AV:N/AC:L/AT:P/PR:N/UI:N with only subsequent-system SC:L/SI:L impact) already reflects a limited, conditional flaw: the AT:P (Attack Requirements: Present) metric is the key signal - exploitation depends on a specific, non-default deployment (reverseProxy()/reverseProxyRouting() used as a public-facing INBOUND handler with 2+ vhosts and routing-based authorization). The vendor's own advisory stresses this is NOT the documented/intended use of these functions (intended use is outbound dispatch and test composition, where Host is set by the trusted calling app). No EPSS score, no CISA KEV listing, and no public POC are provided in the input, so per precision rules this is 'no public exploit identified at time of analysis' - though the advisory describes the trivial exploit mechanics (Host: admin.evil.com hitting a vhost named 'admin'). The CVSS 4.0 vector is internally consistent with the description (network vector, no privileges, no user interaction, impact realized on a downstream/subsequent vhost rather than the proxy itself). Bottom line: real for the narrow population that deployed reverseProxy() inbound for multi-tenant authz, low relevance for everyone else. Priority is LOW-to-MEDIUM. |
| Exploit ScenarioDerived | An organization deploys http4k's reverseProxy() as a public internet-facing gateway routing to virtual hosts named e.g. 'admin' and 'public', relying on that routing to keep the admin vhost internal. Because matching is substring-based by default, a remote unauthenticated attacker sends Host: admin.evil.com (or any value containing 'admin') and is routed straight to the admin vhost, bypassing the routing-based authorization boundary. No public POC is provided, but the advisory documents the exact trivial payload. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 27, 2026
Host-header routing bypass in http4k (Maven artifact org.http4k:http4k-core) before 6.49.0.0, 5.42.0.0 and 4.51.0.0 lets remote, unauthenticated attackers reach a virtual host they should not be authorized for by supplying a Host header that merely contains a configured vhost name - for example Host: admin.evil.com against a vhost configured as "admin" - because reverseProxy() and reverseProxyRouting() default to a substring (Contains) matcher rather than an exact match. Exploitation is tightly scoped: it requires the functions to be deployed as a public-facing inbound HTTP handler with two or more configured virtual hosts, where that routing is what enforces authorization; the documented outbound-dispatch and test-time fake-backend uses set the Host value from the calling application and are unaffected. No public exploit code and no confirmed active exploitation were identified at time of analysis, and the issue is a genuine but narrow authorization-bypass rather than a high-severity emergency; vendor patches are available in 6.49.0.0 (Community 6.x), 5.42.0.0 and 4.51.0.0 (Enterprise LTS lines).
RemediationAI
Upgrade to a fixed release: 6.49.0.0 on the Community 6.x line, 5.42.0.0 on the Enterprise 5.x LTS line, or 4.51.0.0 on the Enterprise 4.x LTS line (contact enterprise@http4k.org for the LTS builds); the changes are in commits 0121b05537 and 54c6385615, and the fix flips the default Host matcher from Contains to Exact. Note the behavioural side effect: after upgrading, code that intentionally relied on substring matching - for example AWS-style subdomain dispatch - must explicitly pass matcher = Contains to reverseProxy()/reverseProxyRouting(), so audit those call sites before or during the upgrade to avoid breaking dispatch. If an immediate upgrade is not possible, the vendor-recommended workaround is to wrap the reverseProxy() handler in a filter that enforces an exact allow-list match against the expected vhost names before delegating; the trade-off is that this filter must be maintained in sync with the vhost configuration and, being application-level code, is easier to bypass through misconfiguration than the library default. As a lower-priority hardening measure, avoid relying on multi-vhost routing as the sole authorization boundary and enforce authorization inside the target handlers themselves. Patch status is vendor-confirmed, and no public exploit code was identified at time of analysis, so prioritisation should focus on the subset of deployments matching the inbound multi-vhost pattern rather than a blanket emergency response. Advisory references: https://github.com/http4k/http4k/security/advisories/GHSA-jrpc-7vxp-69p6 and https://www.vulncheck.com/advisories/http4k-before-6.49.0.0-host-header-routing-bypass-via-reverseproxy.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in maven, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
http4k is a Kotlin HTTP server/client toolkit whose reverseProxy() and reverseProxyRouting() helpers build an HttpHandler that dispatches inbound requests to different backend handlers based on the Host header (falling back to the URI authority when no Host header is present). Internally each configured host is compiled into a route matcher; in affected versions the default matcher used Kotlin String.contains(), i.e. it tested whether the incoming host string contained the configured vhost name. That semantics was intentional for the documented use cases - outbound service dispatch to subdomains (such as AWS-style endpoints) and test-time composition of fake backend networks - where the matched Host is trusted because it is set by the calling application. It becomes a security defect when the same function is used as an inbound, externally reachable router: an attacker-controlled Host value such as admin.evil.com contains the substring "admin" and therefore satisfies the route predicate, so the request is dispatched to the privileged vhost and any authorization decision delegated to vhost routing is silently bypassed. This is classified as CWE-444 (inconsistent interpretation of HTTP requests) in the sense of divergent Host parsing/interpretation between attacker and application, though it is implemented as an over-permissive matcher rather than classic request smuggling. The vendor fix introduces a ReverseProxyHostMatcher functional interface with Contains and Exact implementations, changes the default for reverseProxy()/reverseProxyRouting() to Exact, and adds a matcher parameter so callers who genuinely need substring behaviour must opt in explicitly. The CPE records (cpe:2.3:a:http4k:http4k) cover the impacted http4k-core artifact. The v4.0 CVSS vector rates 6.3 with AT:P and SC:L/SI:L, consistent with an attack that only lands under the specific inbound multi-vhost deployment configuration and that leaks/alters limited-scope data or behaviour rather than granting full system compromise; the independent assessment's CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:N captures the same nuance.
Know when Http4K gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
AC:H because exploitation requires a specific non-default inbound multi-vhost deployment; PR:N/UI:N as any remote attacker can send a Host header; S:C and C:L/I:L reflect crossing into a separate authorization-gated vhost.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
http4k (Maven package org.http4k:http4k-core) before 6.49.0.0, 5.42.0.0 and 4.51.0.0 uses substring (Contains) matching on the Host header by default in reverseProxy() and reverseProxyRouting() when dispatching to configured virtual hosts. If these functions are deployed as a public-facing inbound HTTP handler with two or more configured virtual hosts, a remote attacker can supply a Host header that merely contains a configured vhost name (for example Host: admin.evil.com for a vhost configured as "admin") and be routed to that vhost, bypassing routing-based authorization. The intended outbound-dispatch and test-time uses, where the Host value is set by the calling application, are not affected.
Blast Radius
ecosystem impact- 177 maven packages depend on org.http4k:http4k-core (144 direct, 33 indirect)
Ecosystem-wide dependent count for version 6.0.0.0.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
HTTP request smuggling exploits inconsistencies in how front-end and back-end servers parse HTTP message boundaries.
EUVD-2026-87855
GHSA-9hc9-gcfq-xg98
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB