Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify service minifying untrusted JS
-
DeliverySend request with leading slash input
-
ExploitBackward token walk runs off list head
-
ExecutionRead/dereference NULL contents pointer
-
ImpactWorker process crashes (denial of service)
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Null pointer safety, defensive checks
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 | The concrete prerequisite is that the input passed to minify() must have a slash as its first meaningful token - start-of-input, or only whitespace and comments, followed by '/'. Input as small as a single '/' byte triggers the crash. The deployment condition that makes this remotely exploitable is that the vulnerable minify() API must receive attacker-influenced JavaScript (e.g., a service that minifies untrusted or third-party JS from a request). What LIMITS exploitation: the module version must be before 0.16, and the attack surface exists only where untrusted input reaches minify() - a minifier used purely on trusted, developer-authored source at build time is not remotely exploitable and effectively degrades to a local/offline issue. No authentication, privileges, or user interaction are required against a network-exposed minification endpoint (PR:N/UI:N). |
| Impact | The signals are internally consistent and point to a genuine but bounded availability risk. The CVSS 3.1 vector AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H yields 7.5 (High) driven entirely by availability - there is no confidentiality or integrity impact, so this is a pure DoS, not RCE despite CWE-476 being a memory-safety class. SSVC reinforces this: Exploitation 'none' (no observed exploitation), Automatable 'yes' (trivial, deterministic trigger), Technical Impact 'partial'. EPSS of 0.49% (38th percentile) is low and aligns with the absence of a KEV listing and no known public exploit code. One caveat on attack vector: AV:N is only accurate when the vulnerable minify() call sits behind a network-facing service that feeds it attacker-controlled JavaScript; for a purely local/offline build-time minifier the practical vector is closer to local. Bottom line: prioritize patching where the module processes untrusted or third-party JS in a request path (exploitation is deterministic and automatable), but this is not a critical RCE and can be scheduled rather than treated as an emergency. |
| Exploit ScenarioDerived | An attacker submits a snippet of JavaScript beginning with a slash - even a single '/' byte - to a web service, build API, or SaaS feature that minifies user-supplied or third-party JavaScript via JavaScript::Minifier::XS. The tokenizer's regexp-versus-division disambiguator walks past the head of the node list, dereferences NULL, and crashes the worker process, denying service. Because the trigger is deterministic and requires no authentication or user interaction (AV:N/AC:L/PR:N/UI:N), the request can be scripted and repeated; no public POC is currently identified, but the reproduction is trivially described in the disclosure. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 22, 2026
Denial of service in JavaScript::Minifier::XS before 0.16 (a Perl XS module) lets remote attackers crash any service that minifies untrusted JavaScript by supplying input whose first meaningful token is a slash - as little as a single '/' byte. The flaw is a NULL pointer dereference (CWE-476) reachable directly through the public minify() API, terminating the calling process. There is no public exploit identified at time of analysis and it is not in CISA KEV; EPSS is low (0.49%, 38th percentile), consistent with a crash-only availability bug rather than a code-execution target.
RemediationAI
Upgrade to JavaScript::Minifier::XS 0.16 or later, the vendor-released patched version available on CPAN (https://metacpan.org/release/GTERMARS/JavaScript-Minifier-XS-0.16/changes); this is the primary and complete fix. Until the upgrade is deployed, if the module processes untrusted input, wrap the minify() call in a crash-isolated worker or child process so a single request cannot take down the parent service, and/or add an input-validation guard in the calling code that rejects input whose first non-whitespace, non-comment character is a slash - note that naive filtering of leading slashes may reject legitimate scripts that begin with a regex literal, so prefer process isolation over content filtering. Restrict the minification endpoint to authenticated or trusted callers where feasible to reduce exposure. Advisory and disclosure details: oss-security https://seclists.org/oss-sec/2026/q2/1065, NVD https://nvd.nist.gov/vuln/detail/CVE-2026-56017, and VulDB https://vuldb.com/vuln/374740.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The affected component is JavaScript::Minifier::XS, a Perl module (namespace gtermars per the CPE cpe:2.3:a:gtermars:javascript::minifier::xs) that wraps a C tokenizer/minifier via Perl's XS (native extension) layer for speed. The root cause lives in JsTokenizeString within XS.xs: the tokenizer must disambiguate a '/' as either the start of a regular-expression literal or a division operator, and it does so by inspecting the last byte of the previous token. It walks backward over whitespace and comment nodes to find that token. When '/' is the first meaningful token - preceded only by start-of-input, whitespace, or comments - the backward walk runs off the head of the linked node list to NULL, and the code then reads through a NULL contents pointer at an underflowed length index; a subsequent identifier check dereferences the same NULL pointer. CWE-476 (NULL Pointer Dereference) precisely captures this: a missing guard for the 'no preceding token' boundary condition causes an invalid memory read/dereference and a hard process crash.
Know when JavaScript 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
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Deterministic single-byte trigger with no auth or interaction gives AC:L/PR:N/UI:N; impact is a pure process crash so C:N/I:N/A:H, and AV:N holds only where a remote service feeds untrusted JS to minify().
Primary rating from Vendor (CPANSec).
CVSS VectorVendor: CPANSec
Lifecycle Timeline
3DescriptionCVE.org
JavaScript::Minifier::XS versions before 0.16 for Perl crash with a NULL pointer dereference when the first meaningful token of the input is a slash.
The regexp versus division disambiguator in JsTokenizeString (XS.xs) inspects the previous token's last byte to choose between a regexp literal and a division operator. When a slash is the first meaningful token, with the start of input or only whitespace and comments before it, there is no valid preceding token: the walk back over whitespace and comment nodes runs off the head of the node list to NULL, and the byte lookup reads through a NULL contents pointer at an underflowed length index. The following identifier check dereferences the same NULL pointer.
The crash is reachable through the public minify() API, so input as small as a single slash byte crashes the calling process. A service that minifies untrusted or third-party JavaScript can be crashed by a remote request, causing denial of service.
Executive ViewAI
JavaScript::Minifier::XS before version 0.16 contains a denial-of-service vulnerability that crashes any application using this module to process untrusted JavaScript. Organizations deploying this module for user-facing or critical services face interruption risk when processing certain malformed input. A vendor patch is available and should be deployed immediately to restore service availability guarantees.
Vendor-released patch: JavaScript::Minifier::XS version 0.16 or later. Upgrade all deployments to this version or newer.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
A null pointer dereference occurs when a program attempts to access memory through a pointer that has been set to NULL (address 0x0).
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
More in JavaScript
View allCommand injection in simple-git, the Node.js library for running git commands and published on npm, affects all releases
Stored DOM-based cross-site scripting in Paella Player's closed-caption rendering path (paella-core before 2.12.11) allo
Authorization bypass in Wiki.js through 2.5.314 allows an authenticated user who has been granted access to at least one
Untrusted git configuration includes reachable through simple-git before 4.0.0 let an attacker execute arbitrary command
Improper memory allocation control in ExifReader before 4.41.1 allows remote attackers to exhaust heap memory and termin
Deeply nested brace patterns cause unbounded recursion in the npm brace-expansion library, exhausting the native stack a
Stack exhaustion in the npm library brace-expansion (all versions prior to 1.1.19, 2.1.5, 3.0.7, and 5.0.10) lets a craf
Server-side request forgery in Wiki.js through 2.5.314 lets an authenticated user who holds page-editing permissions for
The JavaScript library ip-address (npm) fails to treat the NAT64 local-use prefix 64:ff9b:1::/48 as private, so applicat
Authorization bypass in the @grpc/grpc-js-xds package (the xDS/RBAC extension for @grpc/grpc-js) lets a request for one
Cross-family subnet comparisons in the ip-address npm library (all versions before 10.7.1) can cause isInSubnet and isHo
Denial of service in the ip-address JavaScript/npm library (all versions prior to 10.7.1) lets remote attackers stall or
Same weakness CWE-476 – NULL Pointer Dereference
View allSame technique Denial Of Service
View allVendor StatusVendor
SUSE
Severity: Important| Product | Status |
|---|---|
| openSUSE Tumbleweed | Fixed |
EUVD-2026-40181
GHSA-72fp-jmq3-p5xj
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB