Skip to main content

Node.js CVE-2026-33671

HIGH
Inefficient Regular Expression Complexity (ReDoS) (CWE-1333)
2026-03-25 https://github.com/micromatch/picomatch
7.5
CVSS 3.1 · GitHub Advisory
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Craft malicious extglob pattern with nested quantifiers
  2. Exploit
    Submit pattern to picomatch parser
  3. Execution
    Trigger catastrophic regex backtracking
  4. Impact
    Exhaust CPU resources and block event loop

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2021 - Vulnerable and Outdated Components
ASVS 5.0
V2 - Validation and Business Logic Regex complexity limits
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Remote unauthenticated attacker sends crafted extglob patterns (e.g., '+(a|aa)', '+(+(a))') to picomatch library processing user-controlled input. No special configuration required; affects default installations processing untrusted glob patterns.

Impact

The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) indicates a network-accessible attack with low complexity, requiring no privileges or user interaction, resulting in high availability impact. Real-world risk is significant for applications that accept untrusted glob patterns from users, such as web-based file browsers, API endpoints accepting search patterns, or multi-tenant platforms with user-defined filtering. The vulnerability is highly automatable given the straightforward exploitation (simply submit a malicious pattern), and the technical impact is a complete denial of service for the affected process. However, risk is substantially lower for applications using only developer-controlled patterns. The availability of working examples in the advisory (41-character inputs causing 2-second blocks, 33-character inputs causing 29-second blocks) effectively serves as proof-of-concept, lowering the exploitation barrier. The patch availability from the vendor and the specificity of affected pattern types (extglobs) make this a clear priority for organizations exposing picomatch to untrusted input, though less urgent for those using only static, trusted patterns.

Exploit ScenarioDerived

An attacker identifies a web application that allows users to filter files or search content using glob patterns processed by picomatch, such as a cloud storage interface or code repository search feature. The attacker submits a malicious pattern like '+(a|aa)' with a 41-character non-matching input or a nested pattern like '+(+(a))' with a 33-character input through the API or web form. The Node.js event loop blocks for 2-29 seconds per request, and by sending multiple concurrent requests, the attacker can sustain a complete denial of service, making the application unresponsive to all users until the requests timeout or the service is restarted.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.0% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Mar 25, 2026

picomatch, a widely-used Node.js glob pattern matching library, contains a Regular Expression Denial of Service (ReDoS) vulnerability when processing crafted extglob patterns such as '+(a|aa)' or nested patterns like '+(+(a))'. The vulnerability affects picomatch versions prior to 4.0.4, 3.0.2, and 2.3.2 (tracked via CPE pkg:npm/picomatch) and allows unauthenticated remote attackers to cause multi-second event-loop blocking with relatively short inputs, resulting in application-wide denial of service. Patches are available from the vendor, and while no KEV listing or EPSS score is provided in the data, the CVSS score of 7.5 (High) reflects the network-accessible, low-complexity attack vector requiring no privileges or user interaction.

RemediationAI

Upgrade picomatch to version 4.0.4, 3.0.2, or 2.3.2 or later depending on your release line, as detailed in the vendor advisory at https://github.com/micromatch/picomatch/security/advisories/GHSA-c2c7-rcm5-vvqj. The patch commit is available at https://github.com/micromatch/picomatch/commit/5eceecd27543b8e056b9307d69e105ea03618a7d for verification. If immediate upgrading is not feasible, implement defense-in-depth measures: disable extglob support for untrusted patterns using the 'noextglob: true' option, reject patterns containing nested extglobs or quantifiers like '+()' and '*()', enforce strict allowlists for accepted pattern syntax, isolate pattern matching operations in worker threads or separate processes with timeout limits, and apply rate limiting and input validation on endpoints accepting glob patterns.

Affected Packages

npm picomatch fix: 2.3.2, 3.0.2, 4.0.4

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in npm

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

picomatch is a popular npm package used for matching file paths against glob patterns, commonly employed in build tools, testing frameworks, and file processing utilities throughout the Node.js ecosystem. The vulnerability is rooted in CWE-1333 (Inefficient Regular Expression Complexity), where the library's parsing logic in lib/parse.js and lib/constants.js generates regular expressions with catastrophic backtracking behavior when processing extglob quantifiers like '+()' and '*()', particularly when combined with overlapping alternatives or nested structures. For example, the pattern '+(a|aa)' compiles to the regex '^(?:(?=.)(?:a|aa)+)$' which exhibits exponential time complexity on non-matching inputs. This issue parallels CVE-2024-4067 in the related micromatch library and CVE-2024-45296 in path-to-regexp, both involving ReDoS through generated regular expressions.

Know when Node.js gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

GitHub Advisory PRIMARY 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Red Hat 6.5 MEDIUM

Primary rating from GitHub Advisory.

CVSS VectorGitHub Advisory

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

2
Patch released
Mar 25, 2026 - 21:17 nvd
Patch available
CVE Published
Mar 25, 2026 - 21:12 nvd
HIGH 7.5

DescriptionGitHub Advisory

Impact

picomatch is vulnerable to Regular Expression Denial of Service (ReDoS) when processing crafted extglob patterns. Certain patterns using extglob quantifiers such as +() and *(), especially when combined with overlapping alternatives or nested extglobs, are compiled into regular expressions that can exhibit catastrophic backtracking on non-matching input.

Examples of problematic patterns include +(a|aa), +(*|?), +(+(a)), *(+(a)), and +(+(+(a))). In local reproduction, these patterns caused multi-second event-loop blocking with relatively short inputs. For example, +(a|aa) compiled to ^(?:(?=.)(?:a|aa)+)$ and took about 2 seconds to reject a 41-character non-matching input, while nested patterns such as +(+(a)) and *(+(a)) took around 29 seconds to reject a 33-character input on a modern M1 MacBook.

Applications are impacted when they allow untrusted users to supply glob patterns that are passed to picomatch for compilation or matching. In those cases, an attacker can cause excessive CPU consumption and block the Node.js event loop, resulting in a denial of service. Applications that only use trusted, developer-controlled glob patterns are much less likely to be exposed in a security-relevant way.

Patches

This issue is fixed in picomatch 4.0.4, 3.0.2 and 2.3.2.

Users should upgrade to one of these versions or later, depending on their supported release line.

Workarounds

If upgrading is not immediately possible, avoid passing untrusted glob patterns to picomatch.

Possible mitigations include:

  • disable extglob support for untrusted patterns by using noextglob: true
  • reject or sanitize patterns containing nested extglobs or extglob quantifiers such as +() and *()
  • enforce strict allowlists for accepted pattern syntax
  • run matching in an isolated worker or separate process with time and resource limits
  • apply application-level request throttling and input validation for any endpoint that accepts glob patterns

Resources

  • Picomatch repository: https://github.com/micromatch/picomatch
  • lib/parse.js and lib/constants.js are involved in generating the vulnerable regex forms
  • Comparable ReDoS precedent: CVE-2024-4067 (micromatch)
  • Comparable generated-regex precedent: CVE-2024-45296 (path-to-regexp)

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 1 npm packages depend on picomatch (1 direct, 0 indirect)

Ecosystem-wide dependent count for version 4.0.0.

Executive ViewAI

Why It Matters

A critical vulnerability in the picomatch library, commonly used in Node.js applications, allows attackers to crash services through specially crafted input patterns, potentially disrupting business operations and customer access. Organizations using affected versions must prioritize patching to prevent denial-of-service attacks that could impact availability across development, CI/CD, and production environments.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.0%
Top 88% exploitable
Data Quality
4 sources
Confidence: Medium
NVD CVE.org EPSS Vulnrichment Vendor GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.0%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

38
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

Affected Products (CPE)GitHub Advisory

pkg:npm/picomatch
pkg:npm/picomatch
pkg:npm/picomatch

Related Vulnerabilities in picomatch ReDoS and Injection Vulnerabilities

View all 2
CVE-2025-68613 HIGH POC
8.8 Dec 19

Remote code execution in n8n's workflow expression evaluation system allows an authenticated user with workflow creation

CVE-2024-41713 CRITICAL POC
9.1 Oct 21

A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could

CVE-2024-55591 CRITICAL POC
9.8 Jan 14

FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote

CVE-2023-44487 HIGH POC
7.5 Oct 10

Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour

CVE-2014-7205 CRITICAL POC
10.0 Oct 08

Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t

CVE-2025-59528 CRITICAL POC
10.0 Sep 22

Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete

CVE-2017-14849 HIGH POC
7.5 Sep 28

Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc

CVE-2017-5941 CRITICAL POC
9.8 Feb 09

An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner

CVE-2014-0224 HIGH POC
7.4 Jun 05

OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph

CVE-2014-3744 HIGH POC
7.5 Oct 23

Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi

CVE-2014-9566 HIGH POC
7.5 Mar 10

Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin

CVE-2024-35286 CRITICAL POC
9.8 Oct 21

A vulnerability in NuPoint Messenger (NPM) of Mitel MiCollab through 9.8.0.33 allows an unauthenticated attacker to cond

Vendor StatusVendor

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy