<?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>Liquidjs (&gt;= 10.26.0, &lt; 10.27.1) - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/liquidjs--10.26.0--10.27.1/</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>Thu, 03 Sep 2026 18:04:10 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/liquidjs--10.26.0--10.27.1/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>Denial of Service Vulnerability in LiquidJS strip_html Filter</title><link>https://feed.craftedsignal.io/briefs/2026-09-liquidjs-infinite-loop/</link><pubDate>Thu, 03 Sep 2026 18:04:10 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-09-liquidjs-infinite-loop/</guid><description>An infinite loop vulnerability in the LiquidJS strip_html filter, tracked as CVE-2026-61556, allows attackers to trigger a process-wide denial of service by providing specific malformed HTML strings.</description><content:encoded><![CDATA[<p>LiquidJS versions 10.26.0 through 10.27.0 contain a vulnerability in the <code>strip_html</code> filter that leads to an infinite loop, resulting in a denial of service (DoS). The flaw exists in <code>src/filters/html.ts</code> due to improper state management during string parsing. When an input string contains a <code>&lt;</code> character that is not followed by a matching <code>&gt;</code> (or a corresponding closing tag for script, style, or comment blocks), the loop index <code>i</code> fails to increment. Because the loop logic repeatedly encounters the same unclosed <code>&lt;</code> at the same index, the process hangs indefinitely. This vulnerability is highly accessible, requiring only a two-character input (e.g., &quot;a&lt;&quot;) to exhaust system resources. Given the prevalence of template engines in web applications, this vulnerability poses a significant risk for server-side resource exhaustion.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker identifies a web application or internal service utilizing LiquidJS to render user-supplied input.</li>
<li>Attacker crafts a malicious payload containing an unclosed HTML tag structure, such as &quot;a&lt;&quot; or similar variants lacking a closing <code>&gt;</code>.</li>
<li>Attacker submits the malicious input to an application endpoint that triggers the <code>strip_html</code> filter processing.</li>
<li>The LiquidJS engine initializes the <code>strip_html</code> function with the attacker-controlled input.</li>
<li>The function's <code>while</code> loop locates the <code>&lt;</code> at index 1 but fails to find a matching closing delimiter.</li>
<li>The logic checks <code>if (i === lt)</code>, which remains true because <code>i</code> never advances, returning the control flow to the start of the loop.</li>
<li>The process consumes CPU cycles continuously in an infinite loop.</li>
<li>The application worker process hangs, leading to a denial of service for that specific thread or process.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation results in a complete denial of service for the affected application process. Because the infinite loop is triggered by minimal input (two characters), an attacker can easily overwhelm web servers or template-rendering services, leading to system unavailability and resource exhaustion. This impacts any sector deploying LiquidJS in environments that process untrusted user input through the <code>strip_html</code> filter.</p>
<h2 id="recommendation">Recommendation</h2>
<ol>
<li>Upgrade the <code>liquidjs</code> package to version 10.27.1 or later immediately to include the patch for CVE-2026-61556.</li>
<li>Audit applications using <code>strip_html</code> to determine if user-controlled input is passed directly to this filter without pre-validation.</li>
<li>Implement resource monitoring (CPU usage per worker process) to detect stalled processes indicative of DoS attempts.</li>
</ol>
]]></content:encoded><category domain="severity">medium</category><category domain="type">advisory</category><category>denial-of-service</category><category>vulnerability</category><category>web-application</category></item></channel></rss>