Skip to main content

JavaScript::Minifier::XS CVE-2026-56017

| EUVDEUVD-2026-40181 HIGH
NULL Pointer Dereference (CWE-476)
2026-06-29 CPANSec GHSA-72fp-jmq3-p5xj
7.5
CVSS 3.1 · Vendor: CPANSec
Share

Severity by source

Vendor (CPANSec) PRIMARY
7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI
7.5 HIGH

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().

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
SUSE
HIGH
qualitative

Primary rating from Vendor (CPANSec).

CVSS VectorVendor: CPANSec

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

Lifecycle Timeline

4
Analysis Generated
Jul 22, 2026 - 20:05 vuln.today
Patch available
Jun 29, 2026 - 22:02 EUVD
CVE Published
Jun 29, 2026 - 19:38 cve.org
HIGH 7.5
CVE Published
Jun 29, 2026 - 19:38 cve.org
UNKNOWN (no severity yet)

DescriptionCVE.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.

AnalysisAI

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.

Technical ContextAI

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.

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.

Vendor StatusVendor

SUSE

Severity: Important
Product Status
openSUSE Tumbleweed Fixed

Share

CVE-2026-56017 vulnerability details – vuln.today

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