CVE-2026-27904: 
JavaScript vulnerability analysis and mitigation

Overview

CVE-2026-27904 is a Regular Expression Denial of Service (ReDoS) vulnerability in the minimatch npm package, a minimal matching utility for converting glob expressions into JavaScript RegExp objects. Nested *() and +() extglob patterns generate regular expressions with nested unbounded quantifiers (e.g., (?:(?:a|b)*)*) that exhibit catastrophic backtracking in V8. The vulnerability was disclosed on February 25, 2026, and affects all major version lines prior to the patched releases: 3.1.4, 4.2.5, 5.1.8, 6.2.2, 7.4.8, 8.0.6, 9.0.7, and 10.2.3. It carries a CVSS v3.1 base score of 7.5 (High) (Github Advisory, Red Hat Bugzilla).

Technical details

The root cause (CWE-1333: Inefficient Regular Expression Complexity) lies in AST.toRegExpSource() at src/ast.ts#L598, where the * extglob type emits a close token of )*, wrapping the recursive body in (?:...)*. Each level of nesting adds another * quantifier, producing textbook nested-quantifier patterns such as (?:(?:(?:a|b)*)*)* for a depth-3 pattern. Against a non-matching input of repeated characters followed by a terminator (e.g., 'a'.repeat(19) + 'z'), V8's backtracking engine explores an exponential number of paths before returning false. The vulnerability is triggered by the default minimatch() API with no special options required, and the minimum viable attack pattern is only 12 bytes (*(*(*(a|b)))). A public PoC demonstrating both standalone timing and HTTP event-loop starvation is available in the security advisory (Github Advisory).

Impact

Successful exploitation causes a denial of service by stalling the Node.js event loop, blocking all concurrent request processing for the duration of the backtracking computation. A 12-byte pattern with an 18-byte non-matching input stalls processing for over 7 seconds; adding one nesting level or a few input characters extends this to minutes. In a server context, a single malicious request can block all other requests from being served until the attack completes, effectively taking the application offline. There is no confidentiality or integrity impact — the vulnerability is purely an availability issue affecting any application that processes attacker-controlled glob patterns (Github Advisory).

Exploitability

A public proof-of-concept exploit is available in the GitHub security advisory, including both a standalone timing script and an HTTP server event-loop starvation demonstration. No authentication or special privileges are required to exploit the vulnerability — it is triggered via the default minimatch() API. There is no evidence of in-the-wild exploitation at this time, and no threat actor attribution has been reported. The EPSS score is approximately 0.04% (0.000400), indicating low current exploitation probability. The vulnerability is not listed in the CISA KEV catalog (Github Advisory, Red Hat Bugzilla).

Exploitation steps

  1. Identify attack surface: Locate applications that use a vulnerable version of minimatch (< 3.1.4, 4.x < 4.2.5, 5.x < 5.1.8, 6.x < 6.2.2, 7.x < 7.4.8, 8.x < 8.0.6, 9.x < 9.0.7, 10.x < 10.2.3) and accept user-controlled glob patterns — such as build tools, CI/CD pipelines, multi-tenant platforms with file filter configuration, or any API endpoint that passes user input to minimatch().
  2. Craft the malicious pattern: Construct a nested extglob pattern such as *(*(*(a|b))) (12 bytes, depth 3) or deeper nesting for greater impact. The +() extglob variant (e.g., +(+(+(a|b)))) is equally effective.
  3. Craft the non-matching input: Prepare an input string of repeated characters followed by a non-matching character, e.g., 'a'.repeat(19) + 'z' (20 bytes). Longer inputs or deeper nesting exponentially increase stall duration.
  4. Submit the payload: Send the malicious pattern and input to the target application via the available interface (e.g., HTTP query parameter, JSON body, configuration file, CLI argument). Example HTTP request: curl "http://target/match?pattern=*%28*%28*%28a%7Cb%29%29%29&path=aaaaaaaaaaaaaaaaaaaz"
  5. Achieve denial of service: The Node.js event loop stalls for 7+ seconds (cold server: ~64 seconds) per request, blocking all concurrent legitimate requests until the backtracking completes. Repeated requests compound the effect (Github Advisory).

Indicators of compromise

  • Network: Unusual HTTP requests containing URL-encoded extglob patterns such as *%28*%28*%28 or %2B%28%2B%28%2B%28 in query parameters or request bodies targeting endpoints that perform glob matching.
  • Logs: Application or web server logs showing requests with patterns containing nested *() or +() extglobs (e.g., *(*(*(a|b)))); unusually long request processing times (7+ seconds) for specific endpoints that use minimatch.
  • Process: Node.js process CPU usage spiking to 100% for extended periods (seconds to minutes) on a single core; event loop lag metrics showing sustained high latency; other requests queuing or timing out during the spike.
  • Application Metrics: Sudden increase in request timeout errors or 503 responses coinciding with specific pattern-matching requests; monitoring alerts for event loop delay exceeding normal thresholds (Github Advisory).

Mitigation and workarounds

Upgrade minimatch to one of the patched versions corresponding to your current version line: 3.1.4, 4.2.5, 5.1.8, 6.2.2, 7.4.8, 8.0.6, 9.0.7, or 10.2.3. As an immediate workaround, pass { noext: true } to minimatch() calls when handling untrusted patterns — this disables extglob processing entirely and reduces processing time to ~0ms for the same inputs. Additionally, implement input validation to reject or sanitize glob patterns before processing, and consider adding timeout mechanisms for minimatch operations. Red Hat has issued multiple errata (RHSA-2026:6277, RHSA-2026:7080, RHSA-2026:7123, RHSA-2026:7302, and others) addressing this in Node.js packages across RHEL 8, 9, 10, and related products (Github Advisory, Red Hat Bugzilla).

Community reactions

Socket.dev published a blog post covering the three high-severity ReDoS vulnerabilities patched in minimatch, highlighting CVE-2026-27904 as the most severe due to its triggering via the default API with no special options (Socket Blog). IBM issued numerous security bulletins addressing the vulnerability across a wide range of products including Maximo Application Suite, Cloud Pak for Business Automation, IBM Db2 Big SQL, Guardium Data Security Center, watsonx Orchestrate, and others, reflecting the broad reach of the minimatch dependency in enterprise software. Red Hat responded with multiple errata across RHEL 8, 9, 10, Ansible Automation Platform, and JBoss EAP. The vulnerability was also noted in the LLVM project issue tracker and picked up by downstream Linux distribution security advisories for Rocky Linux and AlmaLinux.

Additional resources

Linux Distribution fix status

Fix availability across major Linux distributions and their releases.

Debian

Fixed

bookworm

node-minimatch

Affected

sid

node-minimatch: 9.0.7-1

Fixed

trixie

node-minimatch

Affected

Ubuntu

Unknown

bionic (esm-apps)

node-minimatch

Unknown

devel

node-minimatch

Unknown

focal (esm-apps)

node-minimatch

Unknown

jammy

node-minimatch

Unknown

jammy (esm-apps)

node-minimatch

Unknown

noble

node-minimatch

Unknown

noble (esm-apps)

node-minimatch

Unknown

resolute

node-minimatch

Unknown

RHEL / CentOS

Fixed

OpenShift

el9:odf4/cephcsi-rhel9-0:v4.16.36

Fixed

RHEL 8

:appstream:nodejs:20/nodejs/nodejs-0:20.20.2-1.module%2Bel8.10.0%2B24197%2B1602b452

Fixed

RHEL 9

:appstream:nodejs:20/nodejs/nodejs-0:20.20.2-2.module%2Bel9.4.0%2B24216%2B64c58546

Fixed

RHEL 10

nodejs22-1:22.22.2-2.el10_0.src

Fixed

Source: This report was generated using AI

Related JavaScript vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

GHSA-966w-4vpf-p7hcHIGH7.1
  • JavaScript logoJavaScript
  • @aloma.io/aloma
NoYesOct 25, 2026
GHSA-mrwp-f3q8-3g9pMEDIUM5.9
  • JavaScript logoJavaScript
  • follow-redirects
NoYesOct 25, 2026
GHSA-hfm3-x63j-7fxpHIGHN/A
  • JavaScript logoJavaScript
  • @payload-auth-link/migrate
NoYesOct 25, 2026
GHSA-6244-vvv9-76f5MEDIUMN/A
  • JavaScript logoJavaScript
  • @payload-auth-link/plugin
NoYesOct 25, 2026
GHSA-q53q-qg98-p9jfHIGHN/A
  • JavaScript logoJavaScript
  • llm-fw
NoYesOct 25, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Additional Wiz resources

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management