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.
http4k before 6.49.0.0 Host Header Routing Bypass via reverseProxy
Problem type
Affected products
http4k
< 6.49.0.0 - AFFECTED
6.49.0.0 - UNAFFECTED
< 5.42.0.0 - AFFECTED
5.42.0.0 - UNAFFECTED
< 4.51.0.0 - AFFECTED
4.51.0.0 - UNAFFECTED
References
https://github.com/http4k/http4k/security/advisories/GHSA-jrpc-7vxp-69p6
https://github.com/http4k/http4k/commit/0121b05537
https://github.com/http4k/http4k/commit/54c6385615
https://www.vulncheck.com/advisories/http4k-before-6.49.0.0-host-header-routing-bypass-via-reverseproxy
GitHub Security Advisories
GHSA-9hc9-gcfq-xg98
http4k (Maven package org.http4k:http4k-core) before 6.49.0.0, 5.42.0.0 and 4.51.0.0 uses...
https://github.com/advisories/GHSA-9hc9-gcfq-xg98http4k (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.
https://github.com/http4k/http4k/security/advisories/GHSA-jrpc-7vxp-69p6
https://nvd.nist.gov/vuln/detail/CVE-2026-100724
https://github.com/http4k/http4k/commit/0121b05537
https://github.com/http4k/http4k/commit/54c6385615
https://www.vulncheck.com/advisories/http4k-before-6.49.0.0-host-header-routing-bypass-via-reverseproxy
https://github.com/advisories/GHSA-9hc9-gcfq-xg98
JSON source
https://cveawg.mitre.org/api/cve/CVE-2026-100724Click to expand
{
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"cveMetadata": {
"cveId": "CVE-2026-100724",
"assignerOrgId": "83251b91-4cc7-4094-a5c7-464a1b83ea10",
"assignerShortName": "VulnCheck",
"dateUpdated": "2026-09-27T01:28:30.710Z",
"dateReserved": "2026-09-26T02:40:56.226Z",
"datePublished": "2026-09-27T01:28:30.710Z",
"state": "PUBLISHED"
},
"containers": {
"cna": {
"providerMetadata": {
"orgId": "83251b91-4cc7-4094-a5c7-464a1b83ea10",
"shortName": "VulnCheck",
"dateUpdated": "2026-09-27T01:28:30.710Z"
},
"datePublic": "2026-06-16T00:00:00.000Z",
"title": "http4k before 6.49.0.0 Host Header Routing Bypass via reverseProxy",
"descriptions": [
{
"lang": "en",
"value": "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."
}
],
"affected": [
{
"vendor": "http4k",
"product": "http4k",
"defaultStatus": "unaffected",
"versions": [
{
"version": "0",
"status": "affected",
"versionType": "custom",
"lessThan": "6.49.0.0"
},
{
"version": "6.49.0.0",
"status": "unaffected",
"versionType": "custom"
}
]
},
{
"vendor": "http4k",
"product": "http4k",
"defaultStatus": "unaffected",
"versions": [
{
"version": "0",
"status": "affected",
"versionType": "custom",
"lessThan": "5.42.0.0"
},
{
"version": "5.42.0.0",
"status": "unaffected",
"versionType": "custom"
}
]
},
{
"vendor": "http4k",
"product": "http4k",
"defaultStatus": "unaffected",
"versions": [
{
"version": "0",
"status": "affected",
"versionType": "custom",
"lessThan": "4.51.0.0"
},
{
"version": "4.51.0.0",
"status": "unaffected",
"versionType": "custom"
}
]
}
],
"problemTypes": [
{
"descriptions": [
{
"lang": "en",
"description": "Inconsistent Interpretation of HTTP Requests ('HTTP Request/Response Smuggling')",
"cweId": "CWE-444",
"type": "CWE"
}
]
}
],
"references": [
{
"url": "https://github.com/http4k/http4k/security/advisories/GHSA-jrpc-7vxp-69p6",
"name": "GitHub Security Advisory (GHSA-jrpc-7vxp-69p6)",
"tags": [
"vendor-advisory"
]
},
{
"url": "https://github.com/http4k/http4k/commit/0121b05537",
"name": "Patch Commit",
"tags": [
"patch"
]
},
{
"url": "https://github.com/http4k/http4k/commit/54c6385615",
"name": "Patch Commit",
"tags": [
"patch"
]
},
{
"url": "https://www.vulncheck.com/advisories/http4k-before-6.49.0.0-host-header-routing-bypass-via-reverseproxy",
"name": "VulnCheck Advisory: http4k before 6.49.0.0 Host Header Routing Bypass via reverseProxy",
"tags": [
"third-party-advisory"
]
}
],
"metrics": [
{
"format": "CVSS"
},
{
"format": "CVSS",
"cvssV3_1": {
"version": "3.1",
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:N",
"attackVector": "NETWORK",
"attackComplexity": "HIGH",
"privilegesRequired": "NONE",
"userInteraction": "NONE",
"scope": "CHANGED",
"confidentialityImpact": "LOW",
"integrityImpact": "LOW",
"availabilityImpact": "NONE",
"baseScore": 5.4,
"baseSeverity": "MEDIUM"
}
}
]
}
}
}