{"id":"CVE-2026-112366","kind":"vulnerability","aliases":["CVE-2026-112366"],"related":[],"title":"Picomatch: crafted extglob patterns freeze Node.js event loop","description":"Picomatch through 4.0.7 contains a regular expression denial of service vulnerability that allows attackers to block the event loop by supplying single-branch repeated extglob patterns. Attackers can provide globs like +(*) or +(*a), which analyzeRepeatedExtglob in lib/parse.js skips, causing exponential backtracking against short crafted strings and denying service to Node.js applications.","summary":"Picomatch through 4.0.7 mishandles repeated extglob patterns such as +(*) or +(*a), causing exponential regex backtracking on short strings. An attacker who can supply such a glob can block the Node.js event loop and deny service.","severity":"high","cvss":8.7,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["node.js","npm","package","picomatch","self-hosted"],"not_affected_if":["auth-required","no-user-supplied-globs"],"how_to_check":"Run `npm ls picomatch` (and `pnpm why picomatch`) to find installed versions and whether any Node.js app passes user-supplied globs to picomatch.","fix":"Upgrade picomatch to a release newer than 4.0.7; the fixed version is unknown from the sources, so check the picomatch changelog or npm.\nIf upgrading is not possible, reject or sanitize user-supplied glob patterns containing extglob syntax.","status":"open","published_at":"2026-10-19T16:17:07+00:00","first_seen_at":"2026-10-23T21:57:18+00:00","triaged_at":"2026-10-23T22:37:30+00:00","updated_at":"2026-10-23T22:37:30+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-10-23T22:37:30Z","model":"claude-haiku-5-5","output":{"fix":"Upgrade picomatch to a release newer than 4.0.7; the fixed version is unknown from the sources, so check the picomatch changelog or npm.\nIf upgrading is not possible, reject or sanitize user-supplied glob patterns containing extglob syntax.","reach":"internet","title":"Picomatch: crafted extglob patterns freeze Node.js event loop","impact":"medium","summary":"Picomatch through 4.0.7 mishandles repeated extglob patterns such as +(*) or +(*a), causing exponential regex backtracking on short strings. An attacker who can supply such a glob can block the Node.js event loop and deny service.","category":"package","who_cares":["node.js","picomatch","npm","self-hosted"],"confidence":0.6,"needs_auth":"unknown","worst_case":"Attacker blocks the Node.js event loop, denying service to the application.","analyst_note":"Confirm the fixed picomatch version and whether the glob input must come from an untrusted user; check the NVD entry at https://nvd.nist.gov/vuln/detail/CVE-2026-112366.","how_to_check":"Run `npm ls picomatch` (and `pnpm why picomatch`) to find installed versions and whether any Node.js app passes user-supplied globs to picomatch.","needs_analyst":true,"not_affected_if":["no-user-supplied-globs","auth-required"],"user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"high"},"cost_usd":0.000553,"input_tokens":2943,"output_tokens":517,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-112366':11A,14A '-2026':10A,13A '4.0.7':24B,59C 'allow':69C 'analyzerepeatedextglob':92C 'applic':108C 'attack':41B,70C,84C 'backtrack':36B,98C 'block':49B,72C 'branch':80C 'caus':33B,96C 'contain':60C 'craft':2A,101C 'cve':9A,12A 'deni':55B,104C 'denial':64C 'event':7A,52B,74C 'exponenti':34B,97C 'express':63C 'extglob':3A,27B,82C 'freez':5A 'glob':47B,87C 'host':21B 'lib/parse.js':94C 'like':88C 'loop':8A,53B,75C 'mishandl':25B 'node.js':6A,15B,51B,107C 'npm':16B 'packag':17B 'pattern':4A,28B,83C 'picomatch':1A,18B,22B,57C 'provid':86C 'regex':35B 'regular':62C 'repeat':26B,81C 'self':20B 'self-host':19B 'servic':56B,66C,105C 'short':38B,100C 'singl':79C 'single-branch':78C 'skip':95C 'string':39B,102C 'suppli':44B,77C 'vulner':67C","nicknames":[],"mitigations":[],"who_affected":null,"tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-19T16:17:07+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-112366","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-112366","severity":null,"published_at":"2026-10-19T16:17:07+00:00","modified_at":"2026-10-19T21:13:39+00:00","first_seen_at":"2026-10-23T21:57:18+00:00","fetched_at":"2026-10-23T22:28:57+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}