Skip to main content

http4k CVE-2026-100724

| EUVDEUVD-2026-87855 MEDIUM
HTTP Request/Response Smuggling (CWE-444)
2026-09-27 VulnCheck GHSA-9hc9-gcfq-xg98
6.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify public http4k reverseProxy with vhosts
  2. Delivery
    Craft Host header containing target vhost name
  3. Exploit
    Send request to inbound proxy
  4. Execution
    Substring match routes to protected vhost
  5. Impact
    Access 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

http4k 0 <5.42.0.0
http4k 0 <4.51.0.0
http4k 0 <6.49.0.0

Affected Packages

maven org.http4k:http4k-core fix: 4.51.0.0, 5.42.0.0, 6.49.0.0
euvd http4k fix: 4.51.0.0, 5.42.0.0, 6.49.0.0

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

Vendor (VulnCheck) PRIMARY 6.3 MEDIUM
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
vuln.today AI 5.4 MEDIUM

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.

3.1 AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
Low
Subsequent system: Integrity
Low
Subsequent system: Availability
None

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
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 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

EPSS Score
0.3%
Top 75% exploitable
Prevalence
Low
niche Kotlin/JVM HTTP toolkit, limited enterprise footprint vs mainstream frameworks
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

32
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

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.

Related Vulnerabilities in http4k Cookie, Host Matching, and Auth Flaws

View all 3

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy