GO-2026-5075
Heimdall: IP Spoofing via Unvalidated Forwarding Headers in github.com/dadrus/heimdall
Quick fix
GO-2026-5075 — github.com/dadrus/heimdall: upgrade to the fixed version with the command below.
go get github.com/dadrus/heimdall@v0.17.17 Details
When the trusted_proxies option is configured, heimdall extracts client IP addresses from the Forwarded and X-Forwarded-For headers and exposes them as Request.ClientIPAddresses to the rule pipeline. However, extracted values are not validated to be syntactically valid IP addresses. Arbitrary strings, malformed IP literals, and RFC 7239 unknown values and obfuscated identifiers are accepted without further checks. In addition, the Forwarded header parser splits on commas and semicolons without accounting for RFC 7239 quoted strings, which can cause a single quoted value to be parsed as multiple entries, with fragments treated as independent addresses.
Request.ClientIPAddresses is available to all pipeline mechanisms. Its contents can therefore influence rule evaluation in deployments where rules reference this property. Additionally, in proxy mode, Request.ClientIPAddresses is used directly to construct the X-Forwarded-For and Forwarded headers forwarded to upstream services. Injected or malformed values are therefore propagated to upstream services unchanged.
An attacker who can influence forwarding headers can inject arbitrary values into Request.ClientIPAddresses. In deployments where a rule references this property, this may allow an attacker to bypass the intended access control logic. In proxy mode, upstream services that trust this header may receive and act on attacker-controlled IP values.
Are you affected?
Enter the version of the package you're using.
Affected packages
0 Fixed in: 0.17.17 go get github.com/dadrus/heimdall@v0.17.17