{"id":"CVE-2026-57210","kind":"vulnerability","aliases":["CVE-2026-57210"],"related":[],"title":"Heimdall: forwarded client IP headers accepted without validation, enabling spoofing","description":"Heimdall is a cloud native Identity Aware Proxy and Access Control Decision service. Prior to version 0.17.17, when the trusted_proxies option is configured, heimdall extracts client IP addresses from the Forwarded (for= parameter) 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 , and ; without accounting for RFC 7239 quoted strings, which can cause a single quoted value to be parsed as multiple entries, with fragments — including trailing quote characters — treated as independent addresses. This issue has been patched in version 0.17.17.","summary":"When trusted_proxies is configured, Heimdall takes client IP addresses from Forwarded and X-Forwarded-For headers without checking they are valid IPs, and mis-parses quoted Forwarded values. Rules that trust these addresses can be fooled into accepting attacker-chosen client IPs.","severity":"high","cvss":7.0,"epss":0.00421,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["access-control","heimdall","kubernetes","package","self-hosted"],"not_affected_if":["default-config","no-trusted-proxies","upgraded-0.17.17"],"how_to_check":"- Check the installed Heimdall version, e.g. `heimdall version` or the image tag, and compare it to `0.17.17`\n- Look for `trusted_proxies` in the Heimdall configuration file; the issue only applies when it is set\n- Look for rules that match on client IP addresses (Request.ClientIPAddresses)","fix":"- Upgrade Heimdall to `0.17.17` or later\n- Until upgraded, remove `trusted_proxies` if not needed, or restrict rules that depend on client IP addresses","status":"open","published_at":"2026-10-23T13:17:11+00:00","first_seen_at":"2026-10-23T21:57:33+00:00","triaged_at":"2026-10-25T03:36:57+00:00","updated_at":"2026-10-25T12:38:50+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-10-25T03:36:57Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade Heimdall to `0.17.17` or later\n- Until upgraded, remove `trusted_proxies` if not needed, or restrict rules that depend on client IP addresses","reach":"internet","title":"Heimdall: forwarded client IP headers accepted without validation, enabling spoofing","impact":"medium","summary":"When trusted_proxies is configured, Heimdall takes client IP addresses from Forwarded and X-Forwarded-For headers without checking they are valid IPs, and mis-parses quoted Forwarded values. Rules that trust these addresses can be fooled into accepting attacker-chosen client IPs.","category":"package","nicknames":[],"who_cares":["heimdall","self-hosted","kubernetes","access-control"],"confidence":0.6,"needs_auth":"unknown","worst_case":"Attacker spoofs client IP addresses to bypass IP-based access rules","analyst_note":"Sources do not say which rule types or access decisions are affected or whether the patch in 0.17.17 is the only fix; check the NVD entry and the Heimdall release notes.","how_to_check":"- Check the installed Heimdall version, e.g. `heimdall version` or the image tag, and compare it to `0.17.17`\n- Look for `trusted_proxies` in the Heimdall configuration file; the issue only applies when it is set\n- Look for rules that match on client IP addresses (Request.ClientIPAddresses)","needs_analyst":true,"not_affected_if":["default-config","no-trusted-proxies","upgraded-0.17.17"],"who_is_affected":"Only Heimdall deployments before 0.17.17 that set the trusted_proxies option and use rules that depend on client IP addresses are exposed, because those rules receive the header-supplied addresses. Deployments without trusted_proxies, or whose rules do not check client IPs, are not affected by the header parsing problem.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.000696,"input_tokens":3503,"output_tokens":691,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-2026':12A,15A '-57210':13A,16A '0.17.17':88C,197C '7239':140C,164C 'accept':6A,66B,147C 'access':18B,81C 'access-control':17B 'account':161C 'addit':152C 'address':35B,61B,100C,132C,189C 'arbitrari':133C 'attack':68B 'attacker-chosen':67B 'awar':78C 'caus':169C 'charact':185C 'check':45B,150C 'chosen':69B 'client':3A,33B,70B,98C 'cloud':75C 'configur':30B,95C 'control':19B,82C 'cve':11A,14A 'decis':83C 'enabl':9A 'entri':179C 'expos':113C 'extract':97C,122C 'fool':64B 'forward':2A,37B,41B,55B,103C,109C,154C 'fragment':181C 'header':5A,43B,111C,155C 'heimdal':1A,20B,31B,72C,96C 'host':25B 'howev':121C 'ident':77C 'identifi':145C 'includ':182C 'independ':188C 'ip':4A,34B,49B,71B,99C,131C,136C 'issu':191C 'kubernet':21B 'liter':137C 'malform':135C 'mis':52B 'mis-pars':51B 'multipl':178C 'nativ':76C 'obfusc':144C 'option':93C 'packag':22B 'paramet':105C 'pars':53B,176C 'parser':156C 'patch':194C 'pipelin':120C 'prior':85C 'proxi':28B,79C,92C 'quot':54B,165C,172C,184C 'request.clientipaddresses':116C 'rfc':139C,163C 'rule':57B,119C 'self':24B 'self-host':23B 'servic':84C 'singl':171C 'split':157C 'spoof':10A 'string':134C,166C 'syntact':129C 'take':32B 'trail':183C 'treat':186C 'trust':27B,59B,91C 'unknown':141C 'valid':8A,48B,126C,130C 'valu':56B,123C,142C,173C 'version':87C,196C 'without':7A,44B,148C,160C 'x':40B,108C 'x-forwarded-for':39B,107C","nicknames":[],"mitigations":[],"who_affected":"Only Heimdall deployments before 0.17.17 that set the trusted_proxies option and use rules that depend on client IP addresses are exposed, because those rules receive the header-supplied addresses. Deployments without trusted_proxies, or whose rules do not check client IPs, are not affected by the header parsing problem.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-23T13:17:11+00:00","kev":null,"cvss_vector":"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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-57210","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-57210","severity":null,"published_at":"2026-10-23T13:17:11+00:00","modified_at":"2026-10-23T19:57:42+00:00","first_seen_at":"2026-10-23T21:57:33+00:00","fetched_at":"2026-10-23T22:29:03+00:00","note":null},{"source":"epss","external_id":"CVE-2026-57210","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-57210","severity":null,"published_at":null,"modified_at":null,"first_seen_at":"2026-10-25T12:38:50+00:00","fetched_at":"2026-10-25T12:38:50+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}