<?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/" xmlns:webfeeds="http://webfeeds.org/rss/1.0"><channel><title>Tinyauth (&lt; 5.1.2) - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/tinyauth--5.1.2/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata. Fed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Wed, 23 Sep 2026 01:55:12 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/tinyauth--5.1.2/feed.xml" rel="self" type="application/rss+xml"/><image><url>https://feed.craftedsignal.io/favicon-32x32.png</url><title>CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/</link><width>32</width><height>32</height></image><webfeeds:icon>https://feed.craftedsignal.io/favicon.svg</webfeeds:icon><item><title>tinyauth Authorization Bypass via Case-Sensitive Hostname Matching</title><link>https://feed.craftedsignal.io/briefs/2026-09-tinyauth-bypass/</link><pubDate>Wed, 23 Sep 2026 01:55:12 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-09-tinyauth-bypass/</guid><description>An authorization bypass vulnerability in tinyauth allows authenticated users to access restricted applications by manipulating the character casing of the request hostname, causing the service to fail open.</description><content:encoded><![CDATA[<p>tinyauth is a forward-auth service that acts as a gatekeeper for reverse proxies like Traefik, Caddy, Nginx, and Envoy. It verifies authentication and enforces per-app access control lists (ACLs) based on hostnames. An authorization bypass exists in tinyauth versions prior to 5.1.2 due to case-sensitive string comparisons when matching incoming hostnames against configured ACLs.</p>
<p>Because DNS, HTTP routing, and TLS treat hostnames as case-insensitive, a reverse proxy will correctly route a mixed-case hostname (e.g., <code>APP.example.com</code>) to the intended application. However, when tinyauth receives this request, its lookup logic fails to match the hostname because it performs a case-sensitive comparison. When the lookup fails, the application incorrectly falls back to an empty configuration object instead of denying access. This &quot;fail-open&quot; behavior grants authorized status to any already-authenticated user, effectively ignoring any per-app <code>users</code>, <code>groups</code>, or <code>ip</code> allowlists. This vulnerability allows an attacker with a valid session to bypass intended access restrictions for any protected app on the same instance.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker obtains a valid user session for the target tinyauth instance.</li>
<li>Attacker identifies a target application protected by an ACL that explicitly excludes their user account or group.</li>
<li>Attacker crafts an HTTP request for the target application using a mixed-case hostname (e.g., <code>TargetApp.Example.Com</code> instead of <code>targetapp.example.com</code>).</li>
<li>The reverse proxy receives the request, ignores the case difference, and routes it to the intended upstream backend.</li>
<li>The proxy sends the request to tinyauth via the configured forward-auth endpoint, preserving the mixed-case hostname in the <code>X-Forwarded-Host</code> or <code>Host</code> header.</li>
<li>tinyauth's <code>GetAccessControls</code> function attempts to lookup the mixed-case hostname, fails to find a match due to case-sensitive logic, and returns an empty App configuration.</li>
<li>The authorization logic evaluates the empty configuration, defaults to &quot;allow,&quot; and returns a <code>200 Authenticated</code> response to the reverse proxy.</li>
<li>The proxy forwards the request to the upstream application, treating the attacker as an authorized user.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation allows any authenticated user to bypass per-app access restrictions, gaining full access to the data and functionality of restricted applications. This defeats the product's primary security feature - the per-app trust boundary - within multi-app SSO deployments. Impacted sectors include any organization relying on tinyauth to manage granular access to internal services.</p>
<h2 id="recommendation">Recommendation</h2>
<ol>
<li>Upgrade tinyauth to version 5.1.2 or later immediately to resolve the case-insensitive matching logic.</li>
<li>Audit application access logs for unexpected <code>200 OK</code> responses from the forward-auth endpoint that correspond to known restricted users accessing sensitive subdomains.</li>
<li>Validate that your reverse proxy configuration and tinyauth instance are correctly synchronized regarding expected domain case-sensitivity.</li>
</ol>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>authorization-bypass</category><category>reverse-proxy</category><category>identity-management</category></item></channel></rss>