<?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>Recursion — CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/tags/recursion/</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>Thu, 23 Apr 2026 12:00:00 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/tags/recursion/feed.xml" rel="self" type="application/rss+xml"/><item><title>xmldom Uncontrolled Recursion DoS Vulnerability</title><link>https://feed.craftedsignal.io/briefs/2026-04-xmldom-dos/</link><pubDate>Thu, 23 Apr 2026 12:00:00 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-04-xmldom-dos/</guid><description>The xmldom library is vulnerable to a denial-of-service (DoS) attack due to uncontrolled recursion in XML serialization leading to application crashes.</description><content:encoded><![CDATA[<p>The <code>xmldom</code> library is susceptible to a denial-of-service (DoS) vulnerability due to uncontrolled recursion in XML serialization. Seven recursive traversals within <code>lib/dom.js</code> lack depth limits, causing a <code>RangeError: Maximum call stack size exceeded</code> and crashing the application when processing deeply nested XML documents. Publicly disclosed on 2026-04-06, the vulnerability impacts multiple functions, including <code>normalize()</code>, <code>XMLSerializer.serializeToString()</code>, and others related to DOM manipulation. This issue arises from the library&rsquo;s pure-JavaScript recursive implementation of DOM operations, which exhausts the call stack. Exploitation requires no authentication or special options, affecting applications that process attacker-controlled XML using vulnerable <code>xmldom</code> versions ( &lt; 0.8.13, &gt;= 0.9.0 and &lt; 0.9.10, and &lt;= 0.6.0).</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An attacker crafts a malicious XML document with deeply nested elements.</li>
<li>The vulnerable application receives and parses the crafted XML document using <code>DOMParser.parseFromString()</code>.</li>
<li>The application subsequently calls one of the affected DOM operations, such as <code>normalize()</code>, <code>serializeToString()</code>, <code>getElementsByTagName()</code>, or <code>cloneNode(true)</code>.</li>
<li>The affected function initiates a recursive traversal of the deeply nested XML structure within <code>lib/dom.js</code>.</li>
<li>Each level of nesting consumes a JavaScript call stack frame.</li>
<li>The recursive calls continue until the JavaScript engine&rsquo;s call stack is exhausted.</li>
<li>A <code>RangeError: Maximum call stack size exceeded</code> exception is thrown.</li>
<li>The application crashes due to the uncaught exception, leading to a denial of service.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation results in a denial-of-service condition. Any service parsing attacker-controlled XML with a vulnerable version of <code>xmldom</code> can be crashed by a single crafted payload. This can lead to failed request processing. In deployments where uncaught exceptions terminate the worker or process, the impact can extend beyond a single request and disrupt service availability more broadly. Tests show that stack exhaustion occurs with nesting depths between 5,000 and 10,000 levels depending on the operation.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Upgrade <code>@xmldom/xmldom</code> to version &gt;= 0.8.13 or &gt;= 0.9.10 to remediate CVE-2026-41673.</li>
<li>If upgrading is not immediately feasible, consider implementing input validation to limit the nesting depth of XML documents processed by applications using <code>xmldom</code>.</li>
<li>Monitor application logs for <code>RangeError: Maximum call stack size exceeded</code> exceptions originating from <code>lib/dom.js</code>, which could indicate exploitation attempts.</li>
</ul>
]]></content:encoded><category domain="severity">medium</category><category domain="type">advisory</category><category>dos</category><category>xmldom</category><category>recursion</category><category>javascript</category></item><item><title>NestJS Uncontrolled Recursion Denial-of-Service Vulnerability (CVE-2026-40879)</title><link>https://feed.craftedsignal.io/briefs/2026-04-nest-recursion-dos/</link><pubDate>Wed, 22 Apr 2026 12:00:00 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-04-nest-recursion-dos/</guid><description>NestJS versions before 11.1.19 are susceptible to an uncontrolled recursion vulnerability (CVE-2026-40879) where sending many small JSON messages in a single TCP frame triggers a call stack overflow, resulting in a denial-of-service condition.</description><content:encoded><![CDATA[<p>NestJS, a Node.js framework for server-side applications, is vulnerable to an uncontrolled recursion issue. Prior to version 11.1.19, a malicious actor could exploit CVE-2026-40879 by sending a crafted TCP frame containing numerous small, valid JSON messages to a vulnerable NestJS application. The <code>handleData()</code> function recursively processes each message, causing the buffer to shrink with each call. This bypasses the <code>maxBufferSize</code> limit and leads to a call stack overflow. A payload as small as 47 KB is sufficient to trigger a <code>RangeError</code> and crash the application. This vulnerability allows for a denial-of-service attack. The vulnerability has been patched in NestJS version 11.1.19.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An attacker identifies a NestJS application running a version prior to 11.1.19.</li>
<li>The attacker crafts a TCP packet containing multiple small, valid JSON messages.</li>
<li>The attacker sends the crafted TCP packet to the vulnerable NestJS application.</li>
<li>The NestJS application&rsquo;s <code>handleData()</code> function receives the TCP packet.</li>
<li>The <code>handleData()</code> function recursively processes each JSON message in the packet.</li>
<li>With each recursive call, the buffer shrinks.</li>
<li>The <code>maxBufferSize</code> is never reached because of the stack overflow.</li>
<li>The call stack overflows, leading to a <code>RangeError</code> and application crash, resulting in a denial of service.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of CVE-2026-40879 leads to a denial-of-service condition. A single attacker can potentially bring down a vulnerable NestJS application with a relatively small payload of approximately 47KB. This can impact businesses relying on the affected NestJS application, leading to service disruptions and potential data loss. The vulnerability affects any application using NestJS versions before 11.1.19, making a large number of applications potentially vulnerable.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Upgrade all NestJS applications to version 11.1.19 or later to patch CVE-2026-40879.</li>
<li>Deploy the Sigma rule <code>Detect Suspicious NestJS TCP Payload</code> to identify potentially malicious TCP traffic targeting NestJS applications.</li>
<li>Monitor network traffic for large TCP packets containing many small JSON messages, which may indicate an attempted exploit.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>denial-of-service</category><category>nestjs</category><category>recursion</category><category>cve-2026-40879</category><category>linux</category></item></channel></rss>