Loading...
Skip to main content

CVE-2026-57209 — Vulnerability in github.com/dadrus/heimdall — CVE...

HIGH

Heimdall: Forwarded Header Injection via Unsanitized Host Header in Proxy Mode

Published June 18, 2026Updated July 20, 2026Source: osv

Summary

### Summary When Heimdall operates in proxy mode, it constructs the `Forwarded` HTTP header after executing the matched rule pipeline by inserting the incoming request's `Host` header value directly into the header string without sanitizing commas or semicolons. This allows an attacker to inject additional parameters into the `Forwarded` header, potentially spoofing IP addresses for upstream services. ### Vulnerable Code **File: `proxy/request_context.go` (line 201)** ```go entry := "for=" + clientIP + ";host=" + in.Host + ";proto=" + proto ``` Go's `net/http` allows commas and semicolons in Host header values. No sanitization is applied before string concatenation. ### PoC ```bash # Inject a spoofed IP into the Forwarded header curl -s -H "Host: evil.com,for=127.0.0.1" \ "http://TARGET:PORT/protected-resource" ``` This produces the following `Forwarded` header sent to the upstream service: ``` Forwarded: for=1.2.3.4;host=evil.com, for=127.0.0.1;proto=http ``` Upstream services that parse the `Forwarded` header according to RFC 7239 will see two entries. If the service trusts the last or any `for=` value, the attacker successfully spoofs `127.0.0.1` as the client IP. ```bash # More targeted attack: spoof to bypass IP allowlist curl -s -H "Host: legit.com;for=10.0.0.1;proto=https,for=192.168.1.1" \ "http://TARGET:PORT/admin-panel" ``` ### Impact - **IP spoofing:** Upstream services behind Heimdall may trust the injected `for=` value, believing the request originates from an internal/trusted IP - **Access control bypass:** Applications that restrict access based on IP address by themselves, without using the corresponding heimdall capabilities (e.g., admin panels, internal APIs), can be bypassed - **Affects all proxy-mode deployments** where upstream services parse the `Forwarded` header.

Advisory Timeline

  • First published June 18, 2026 (116 days ago).
  • Last revised July 20, 2026 — 32 days after initial publication.

Remediation

Upgrade to the fixed version using your package manager.

Go
Update github.com/dadrus/heimdall to 0.17.17 or later
go get github.com/dadrus/heimdall@v0.17.17

After upgrading, run your dependency scanner again to confirm the vulnerability is resolved.

Affected Packages (1)

Affects 1 ecosystem: go (1).

PackageEcosystemAffectedFixed In
github.com/dadrus/heimdall
go
All versions0.17.17

Vulnerability Classification

Common Weakness Enumeration (CWE) identifiers for this vulnerability type.

CVSS Score Breakdown

What the CVSS (Common Vulnerability Scoring System) 9.9 score means for each attack dimension.

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
—
Confidentiality
—
Integrity
—
Availability
—

CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:N/SC:H/SI:H/SA:N

Frequently Asked Questions

What is CVE-2026-57209?
Heimdall: Forwarded Header Injection via Unsanitized Host Header in Proxy Mode This vulnerability has been assigned a severity rating of HIGH (CVSS score: 9.9/10).
How do I check if my project is affected by CVE-2026-57209?
CVE-2026-57209 affects github.com/dadrus/heimdall. Use GeekWala's free vulnerability scanner to check your dependencies against CVE-2026-57209 and 200,000+ other known vulnerabilities.

Severity & Exploitability

CVSS Score
9.9

Exploitation is straightforward and causes maximum impact. Patch immediately.

Also Known As

GHSA-4jgr-pg2m-m988
GO-2026-5125

Related CVEs

  • CVE-2026-107809
    HIGH

    Nginx-UI AuthRequired token cookie fallback enables CSRF against management APIs

  • CVE-2026-42274
    HIGH

    Heimdall has an authorization bypass via path normalization mismatch

  • CVE-2026-42272
    HIGH

    Heimdall: Case-sensitive handling of URL-encoded slashes may lead to inconsistent path interpretation

  • CVE-2026-42273
    HIGH

    Heimdall: Case-sensitive host matching may lead to policy bypass

  • CVE-2026-107813
    HIGH

    Nginx UI: Incomplete fix of CVE-2026-84315 - the api/cluster router was not - wrapped in RequireSecureSession, so those sensitive mutations run without OTP step-up

Check if you're affected

Scan your dependencies to see if this vulnerability affects your projects.

Scan Your Dependencies