<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Heimdall — CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/heimdall/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata — refreshed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Tue, 02 Jan 2024 12:00:00 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/heimdall/feed.xml" rel="self" type="application/rss+xml"/><item><title>Heimdall Host Matching Case-Sensitivity Vulnerability</title><link>https://feed.craftedsignal.io/briefs/2024-01-02-heimdall-case-sensitivity/</link><pubDate>Tue, 02 Jan 2024 12:00:00 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2024-01-02-heimdall-case-sensitivity/</guid><description>Heimdall performs case-sensitive host matching, which can lead to policy bypass because HTTP hostnames are case-insensitive, potentially leading to unauthorized access, data modification, or privilege escalation if the request host is part of the rule.</description><content:encoded><![CDATA[<p>Heimdall, a Go-based access management system, is susceptible to a case-sensitivity vulnerability in its host matching mechanism. HTTP hostnames are case-insensitive, but Heimdall performs host matching in a case-sensitive manner. Discovered and reported in April 2026, this discrepancy can result in Heimdall failing to match a rule for a request host that differs only in letter casing. Version 0.16.0 and later enforce secure defaults and refuse to start with an &ldquo;allow all&rdquo; configuration unless explicitly disabled using flags like <code>--insecure-skip-secure-default-rule-enforcement</code> or <code>--insecure</code>. The vulnerability affects Heimdall versions prior to 0.17.14 and can be exploited if rule matching relies on the request host, potentially leading to unintended access control bypass.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>The attacker identifies a Heimdall instance with host-based access control rules.</li>
<li>The attacker identifies a specific rule where the host is used for access control (e.g., <code>admin.example.com</code>).</li>
<li>The attacker crafts an HTTP request with a <code>Host</code> header that differs only in casing (e.g., <code>Admin.Example.Com</code>).</li>
<li>Heimdall fails to match the intended rule due to the case-sensitive comparison.</li>
<li>If no default rule is configured, Heimdall returns a &ldquo;404 Not Found&rdquo; error.</li>
<li>If a permissive default rule is configured (e.g., allowing anonymous access, which is discouraged since v0.16.0), Heimdall executes this default rule.</li>
<li>The attacker gains unauthorized access to resources or functionality that should be protected by the intended rule.</li>
<li>The attacker exploits the gained access to modify data, invoke functionality, or escalate privileges depending on the exposed functionality.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Bypassing access control policies enforced by Heimdall can lead to unauthorized access to sensitive data, modification of critical information, or invocation of restricted functionality. Depending on the exposed functionality, this could also lead to privilege escalation. The severity of the impact depends heavily on the misconfiguration of Heimdall&rsquo;s rules, particularly the presence of overly permissive default rules. Successful exploitation can compromise the confidentiality, integrity, and availability of the protected application or service.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Normalize request hosts to lowercase in layers in front of Heimdall to mitigate the case sensitivity issue.</li>
<li>Avoid configuring permissive default rules. Remove or disable the <code>--insecure</code> or <code>--insecure-skip-secure-default-rule-enforcement</code> flags.</li>
<li>When using the <code>regex</code> type for host matching, define expressions in a case-insensitive manner (e.g., <code>(?i)^admin\.example\.com$</code>).</li>
<li>Upgrade to Heimdall version 0.17.14 or later to patch the vulnerability directly.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>defense-evasion</category><category>policy-bypass</category><category>access-control</category></item><item><title>Heimdall Authorization Bypass via Path Normalization Mismatch</title><link>https://feed.craftedsignal.io/briefs/2024-01-02-heimdall-auth-bypass/</link><pubDate>Tue, 02 Jan 2024 12:00:00 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2024-01-02-heimdall-auth-bypass/</guid><description>Heimdall is vulnerable to an authorization bypass due to a path normalization mismatch between Heimdall and downstream components, potentially leading to unauthorized access and privilege escalation.</description><content:encoded><![CDATA[<p>Heimdall, a cloud-native security proxy, is susceptible to an authorization bypass vulnerability. This issue arises from a discrepancy in how Heimdall handles request paths compared to downstream components. Specifically, Heimdall performs rule matching on the raw, non-normalized request path, while downstream components might normalize dot-segments (e.g., <code>/user/../admin</code>) according to RFC 3986. This can lead to Heimdall authorizing a request based on the raw path, whereas the downstream service processes a different, normalized path, potentially bypassing intended access controls. The vulnerability affects Heimdall versions prior to 0.17.14. Exploitation is possible when using wildcards in rule matching without further constraints. This could allow attackers to access restricted resources or functionalities.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker crafts a malicious HTTP request with a path containing dot-segments (e.g., <code>/public/../user/resource</code>).</li>
<li>The request is sent to the Heimdall proxy.</li>
<li>Heimdall performs rule matching on the raw, non-normalized path (<code>/public/../user/resource</code>).</li>
<li>Heimdall incorrectly matches the request to a less restrictive rule, such as a rule for <code>/public/**</code>, due to the initial <code>/public</code> segment.</li>
<li>Heimdall authorizes the request based on the matched rule, potentially allowing anonymous access.</li>
<li>The request is forwarded to the downstream service.</li>
<li>The downstream service normalizes the request path to <code>/user/resource</code>.</li>
<li>The downstream service processes the request as <code>/user/resource</code>, bypassing the intended access controls for that resource, possibly leading to data access or privilege escalation.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of this vulnerability allows attackers to bypass access control policies enforced by Heimdall. This can lead to unauthorized access to sensitive data, modification of restricted data, invocation of privileged functionality without proper authentication or authorization, and in certain configurations, escalation of privileges. The number of potential victims depends on the deployment and configuration of Heimdall within affected environments.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Apply the available patch to upgrade Heimdall to version 0.17.14 or later to remediate the vulnerability.</li>
<li>Implement HTTP path normalization or rejection of HTTP paths containing relative path expressions in layers in front of Heimdall, as suggested in the advisory.</li>
<li>Deploy the Sigma rule provided below to detect suspicious HTTP requests containing dot-segments (..) in the request path.</li>
<li>Configure your proxies (e.g., Envoy) to normalize paths, as described in the advisory.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>authorization-bypass</category><category>path-normalization</category><category>cloud</category></item></channel></rss>