<?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>Scim_proto (&lt;= 1.9.2) — CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/scim_proto--1.9.2/</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>Wed, 06 May 2026 23:38:49 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/scim_proto--1.9.2/feed.xml" rel="self" type="application/rss+xml"/><item><title>Kanidm SCIM Filter Stack Exhaustion Vulnerability</title><link>https://feed.craftedsignal.io/briefs/2024-01-kanidm-scim-stack-exhaustion/</link><pubDate>Wed, 06 May 2026 23:38:49 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2024-01-kanidm-scim-stack-exhaustion/</guid><description>An unauthenticated GET request with deeply nested parentheses in the SCIM filter parameter can cause stack exhaustion and process termination in Kanidm, leading to denial of service.</description><content:encoded><![CDATA[<p>Kanidm versions 1.7.0 through 1.9.2 are vulnerable to a stack exhaustion issue due to unbounded recursion in the SCIM filter parser. An attacker can send an unauthenticated GET request to any <code>/scim/v1/...</code> endpoint, including <code>/scim/v1/Application</code>, <code>/scim/v1/Entry/{id}</code>, etc., with a <code>filter</code> query parameter containing thousands of nested parentheses. This input drives the recursive-descent PEG parser beyond the worker thread&rsquo;s stack limit. The vulnerability exists within the axum&rsquo;s <code>Query&lt;ScimEntryGetQuery&gt;</code> extractor, before any authentication or authorization checks. The resulting stack overflow triggers <code>std::process::abort()</code>, causing the entire <code>kanidmd</code> process to terminate, affecting all services relying on the IDM. This can be exploited to cause a denial-of-service condition.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>The attacker crafts a malicious GET request targeting a SCIM endpoint, such as <code>/scim/v1/Application?filter=(...(a+pr)...)</code>.</li>
<li>The crafted request contains a <code>filter</code> query parameter with thousands of nested parentheses, exceeding the stack limit.</li>
<li>The request is received by the Kanidm server.</li>
<li>Axum&rsquo;s <code>Query&lt;ScimEntryGetQuery&gt;</code> extractor attempts to parse the <code>filter</code> parameter using the SCIM filter parser (<code>scimfilter::parse</code>).</li>
<li>The SCIM filter parser recursively processes the nested parentheses without a depth bound, consuming stack space.</li>
<li>The recursive parsing exceeds the worker thread&rsquo;s stack guard page, leading to a stack overflow.</li>
<li>Rust&rsquo;s stack overflow handler triggers <code>std::process::abort()</code>, terminating the <code>kanidmd</code> process.</li>
<li>The entire Kanidm service becomes unavailable, disrupting authentication, authorization, and other IDM functions.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation leads to a process-wide denial of service. The <code>kanidmd</code> process terminates, affecting all in-flight HTTP requests, OAuth2/OIDC sessions, LDAP binds, and the web UI. The vulnerability is unauthenticated and easily repeatable, allowing an attacker to hold the service down indefinitely. A single 12KB GET request is sufficient to crash the service.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Apply the patch or upgrade to a version of <code>kanidm_proto</code> and <code>scim_proto</code> greater than 1.9.2 to resolve the unbounded recursion in the SCIM filter parser.</li>
<li>Implement rate limiting on SCIM endpoints to mitigate the impact of repeated exploitation attempts.</li>
<li>Deploy the following Sigma rule to detect potentially malicious SCIM filter requests based on URL length.</li>
<li>Consider limiting the maximum size of request headers accepted by the web server to prevent large <code>filter</code> parameters.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>denial-of-service</category><category>scim</category><category>stack-overflow</category></item></channel></rss>