Read the docs
TI-2026-66893 Aliases GHSA-jrpc-7vxp-69p6

http4k: `reverseProxy()` defaulted to substring (`Contains`) matching on `Host`; tightened to `Exact`

Priority LOW 38CWE-444Published · Updated

Key facts

Attack vector
—
Privileges required
—
User interaction
—
Attack complexity
—
Impact type
—
Confidentiality · integrity · availability
—
Fix status
Fixed

No CVSS vector from any source. Fix status from GitHub.

Summary

### Impact `reverseProxy()` and `reverseProxyRouting()` matched configured vhosts by substring on the `Host` header (`Contains` matcher) by default. The intended use of these functions in http4k is **outbound dispatch** (e.g. matching AWS service subdomains, per the `Contains` docstring) and **test-time composition** of fake backend networks. In either of those contexts the matched `Host` is set by the calling application, not by an external attacker, so the loose match has no exploit surface. If, however, `reverseProxy()` was deployed as a public-facing inbound HTTP handler — which the function technically supports but is not the documented intent — an external attacker could send `Host: admin.evil.com` and reach a vhost configured as `admin`, bypassing routing-based authorization. The `Contains` matcher's docstring explicitly documented this loose behaviour, but because `Contains` was the default, callers who never read the matcher docs would still get the loose behaviour. **Who is affected:** only deployments using `reverseProxy()` / `reverseProxyRouting()` as a public-facing inbound HTTP handler with two or more configured virtual hosts. The intended outbound / test-time usage is unaffected. If you *did* deploy `reverseProxy()` inbound and rely on multi-vhost routing for authorization, treat upgrade as urgent. ### Patches | Line | Fixed in | Edition | |------|----------|---------| | v6.x (Community) | **6.49.0.0** | Community | | v5.x (LTS) | **5.42.0.0** | Enterprise — contact [[email protected]](mailto:[email protected]) (if `reverseProxy()` is present in your v5.x line) | | v4.x (LTS) | **4.51.0.0** | Enterprise — contact [[email protected]](mailto:[email protected]) (if `reverseProxy()` is present in your v4.x line) | The fix changes the default matcher to `Exact`. Existing callers that genuinely need substring matching (e.g. AWS subdomain dispatch) must explicitly pass `matcher = Contains`. ### Workarounds For deployments that cannot upgrade immediately: wrap your `reverseProxy()` with a host-allow-list filter that requires an exact match against expected vhost names before delegating.

Why it matters now

Fix Fixed org.http4k:http4k-core (Maven): 6.49.0.0, 5.42.0.0, 4.51.0.0

SSVC decision points

Not available: CISA has not published SSVC decision points for this record.

Affected products

VendorProductAffected versionsFixed inStatusSource
—org.http4k:http4k-core (Maven)6.0.0.0 to before 6.49.0.06.49.0.0Patch availableGHSA-jrpc-7vxp-69p6
—org.http4k:http4k-core (Maven)5.0.0.0 to before 5.42.0.05.42.0.0Patch availableGHSA-jrpc-7vxp-69p6
—org.http4k:http4k-core (Maven)before 4.51.0.04.51.0.0Patch availableGHSA-jrpc-7vxp-69p6
  • org.http4k:http4k-core (Maven) Vendor— Affected 6.0.0.0 to before 6.49.0.0 Fixed in 6.49.0.0 Patch available GHSA-jrpc-7vxp-69p6
  • org.http4k:http4k-core (Maven) Vendor— Affected 5.0.0.0 to before 5.42.0.0 Fixed in 5.42.0.0 Patch available GHSA-jrpc-7vxp-69p6
  • org.http4k:http4k-core (Maven) Vendor— Affected before 4.51.0.0 Fixed in 4.51.0.0 Patch available GHSA-jrpc-7vxp-69p6

Remediation

  • Fix · GHSA-jrpc-7vxp-69p6 org.http4k:http4k-core (Maven) Fixed in 6.49.0.0 Advisory →
  • Fix · GHSA-jrpc-7vxp-69p6 org.http4k:http4k-core (Maven) Fixed in 5.42.0.0 Advisory →
  • Fix · GHSA-jrpc-7vxp-69p6 org.http4k:http4k-core (Maven) Fixed in 4.51.0.0 Advisory →

Timeline

  1. 2026-10-03 Threatist record created from GHSA-jrpc-7vxp-69p6

References

Sources

This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences