<?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>Picomatch — CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/tags/picomatch/</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, 25 Mar 2026 21:13:29 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/tags/picomatch/feed.xml" rel="self" type="application/rss+xml"/><item><title>Picomatch ReDoS Vulnerability via Extglob Quantifiers</title><link>https://feed.craftedsignal.io/briefs/2026-04-picomatch-redos/</link><pubDate>Wed, 25 Mar 2026 21:13:29 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-04-picomatch-redos/</guid><description>Picomatch is vulnerable to Regular Expression Denial of Service (ReDoS) when processing crafted extglob patterns with quantifiers, leading to excessive CPU consumption and denial of service.</description><content:encoded><![CDATA[<p>The picomatch library is susceptible to a Regular Expression Denial of Service (ReDoS) attack when processing maliciously crafted extended glob (extglob) patterns. This vulnerability arises from inefficient regular expression generation when handling patterns that include extglob quantifiers like <code>+()</code> and <code>*()</code>, especially when these are combined with overlapping alternatives or nested extglobs. The flawed regex compilation can lead to catastrophic backtracking when processing non-matching input strings. Problematic patterns include examples like <code>+(a|aa)</code>, <code>+(*|?)</code>, <code>+(+(a))</code>, <code>*(+(a))</code>, and <code>+(+(+(a)))</code>. The issue affects picomatch versions before 4.0.4, 3.0.2, and 2.3.2. Applications that permit untrusted users to supply glob patterns to picomatch are at risk, potentially causing a denial-of-service condition due to excessive CPU usage and event loop blocking.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An attacker identifies an application that utilizes the picomatch library to process user-supplied glob patterns.</li>
<li>The attacker crafts a malicious glob pattern containing nested extglobs or extglob quantifiers such as <code>+(a|aa)</code> or <code>+(+(a))</code>.</li>
<li>The attacker submits the malicious glob pattern to the vulnerable application.</li>
<li>The application passes the attacker-supplied glob pattern to the <code>picomatch</code> library for compilation or matching.</li>
<li>Picomatch compiles the malicious glob pattern into an inefficient regular expression.</li>
<li>When matching the compiled regex against an input string, catastrophic backtracking occurs due to the regex complexity.</li>
<li>CPU consumption spikes as the regex engine struggles to process the input, blocking the Node.js event loop.</li>
<li>The application becomes unresponsive, leading to a denial-of-service condition.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of this ReDoS vulnerability in picomatch can lead to significant denial-of-service conditions. While the number of affected applications is unknown, any application utilizing picomatch to process untrusted glob patterns is potentially vulnerable. The impact includes excessive CPU consumption, event loop blocking in Node.js applications, and potential service outages, causing disruption and impacting availability. Local testing has shown multi-second delays with short inputs, demonstrating the severity of the issue.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Upgrade to picomatch version 4.0.4, 3.0.2, or 2.3.2, or a later version depending on the supported release line to patch CVE-2026-33671.</li>
<li>Implement input validation on any endpoint that accepts glob patterns to reject or sanitize patterns containing nested extglobs or extglob quantifiers such as <code>+()</code> and <code>*()</code> as described in the overview.</li>
<li>Disable extglob support for untrusted patterns by using <code>noextglob: true</code> as mentioned in the workarounds section.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>picomatch</category><category>ReDoS</category><category>denial-of-service</category><category>extglob</category></item></channel></rss>