Skip to main content

Browserslist EUVDEUVD-2026-56285

| CVE-2026-73088 HIGH
Uncaught Exception (CWE-248)
2026-08-11 security-advisories@github.com GHSA-73wf-gq98-2v4g
7.5
CVSS 3.1 · Vendor: github
View

Attack ChainAIDerived

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

  1. Access
    Supply crafted stats JSON with `__proto__` key
  2. Delivery
    Application calls `browserslist()` with attacker-controlled stats
  3. Exploit
    `normalizeStats()` iterates via unguarded `for...in`
  4. Execution
    Bracket assignment writes to Object.prototype
  5. Persist
    Uncaught TypeError thrown
  6. Impact
    Node.js process crashes

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Exception handling completeness
Exploitation Conditions

Exploitation requires that the consuming application processes attacker-controlled stats data via one of three paths: a browserslist-stats.json file the attacker can write to or influence on the server filesystem; the opts.stats parameter in a programmatic browserslist() API call where user-supplied values flow into that parameter without sanitization; or the --stats CLI flag in an environment where an attacker controls command-line arguments. Default Browserslist usage in build tooling - where the stats file is a static, developer-committed artifact - does not expose this attack surface. Exploitation is limited to Node.js environments; browser-side builds are unaffected. The CVSS PR:N metric accurately reflects the CLI --stats path where no authentication is needed, but server-side API paths may require authenticated access depending on the application layer. The DoS outcome (uncaught TypeError) is reliably triggerable; prototype object mutation outcomes depend on the specific key used and the JavaScript engine's prototype chain behavior.

Impact

The NVD CVSS vector CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H assigns a 7.5 base score reflecting high availability impact with no authentication barrier. This rating is accurate for the CLI --stats attack path but overstates risk in typical build-tool deployments where stats files are developer-controlled and static. Real-world exploitability depends entirely on whether the consuming application passes attacker-influenced data to browserslist() - a condition absent in most CI/CD pipelines using local configuration. No EPSS score was included in the provided data; no CISA KEV listing is present; and no public proof-of-concept code was identified at time of analysis. The SSVC automatable dimension would be low for build-tool deployments but could be high for server-side applications that expose Browserslist programmatically. The absence of active exploitation evidence suggests opportunistic rather than targeted risk, though the patch has no known side effects and the upgrade cost is minimal - even a mid-sized municipal IT team in malbork running Node.js build infrastructure should treat this as an immediate patch-and-move-on item rather than a crisis response. One signal tension worth noting: the NVD omits an integrity impact metric entirely, but the prototype pollution mechanism carries a real, if limited, integrity dimension that the CVSS vector underrepresents.

Exploit ScenarioDerived

An attacker who can supply or overwrite the browserslist-stats.json file consumed by a Node.js application, or who can inject values into the opts.stats parameter through an exposed API, crafts a JSON payload containing __proto__ as a top-level key. When normalizeStats() processes this payload via the unguarded for...in loop, it attempts a bracket assignment onto the object prototype, either corrupting Object.prototype for the process or triggering an uncaught TypeError that crashes the Node.js worker. No public proof-of-concept code was identified at time of analysis, though the prototype pollution technique is extensively documented and the vulnerable code pattern is straightforward to identify from the public commit diff.

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

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

Alert me

AnalysisAIv1 – Aug 11, 2026

Prototype pollution and denial-of-service in Browserslist prior to 4.28.7 enable attackers to crash Node.js processes or corrupt object prototypes by supplying crafted stats data to the unconditionally-called normalizeStats() function. Any application that invokes browserslist() with attacker-influenced browserslist-stats.json, opts.stats, or CLI --stats input is at risk of an uncaught TypeError or object prototype modification. The vendor-released patch is available in version 4.28.7, and no public exploit has been identified at time of analysis.

RemediationAI

Upgrade to Browserslist version 4.28.7, which fully resolves the issue as confirmed by the GitHub release tag and commit f9914ad9effc865ccc27d816255625890b31ca51. The fix requires no configuration changes and introduces no breaking API changes in the 4.28.x series. If immediate upgrade is blocked by dependency constraints, apply the following compensating control: sanitize any externally-sourced stats JSON before passing it to browserslist() by explicitly rejecting or deleting keys matching Object.prototype property names (__proto__, constructor, prototype, toString, valueOf, hasOwnProperty, isPrototypeOf). Additionally, avoid exposing the --stats CLI flag to untrusted input in automated or web-facing pipelines. Restricting stats data sources to developer-controlled, committed files eliminates the attack surface entirely for build-only deployments. Advisory references: https://github.com/browserslist/browserslist/security/advisories/GHSA-73wf-gq98-2v4g and https://github.com/browserslist/browserslist/releases/tag/4.28.7.

Affected VersionsENISA

browserslist < 4.28.7

Affected Packages

npm browserslist fix: 4.28.7

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

Browserslist is a foundational npm ecosystem package consumed by major front-end tools including webpack, Babel, Autoprefixer, Stylelint, and ESLint to coordinate browser and Node.js version targeting. The vulnerable code path is normalizeStats() in node.js, which is reached unconditionally on every browserslist() call through getStat() and loadStat(). The function iterates over user-supplied stats data using an unguarded for...in loop, which in JavaScript enumerates all enumerable properties including those inherited from Object.prototype. Because the result object was constructed as a plain {} literal and assignments were made via bracket notation without hasOwnProperty guards, keys such as __proto__, toString, valueOf, constructor, hasOwnProperty, and isPrototypeOf in a malicious stats payload could be written directly onto the result's prototype or trigger an uncaught TypeError. The CWE-248 (Uncaught Exception) classification captures the crash surface but understates the mechanism, which is a textbook prototype pollution antipattern. The fix in 4.28.7 replaces {} with Object.create(null) (null-prototype objects immune to prototype chain traversal) and wraps property access with Object.prototype.hasOwnProperty.call(data, i) guards, as confirmed by the commit diff.

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

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

Network-supplied stats data allows unauthenticated exploitation; prototype mutation adds limited integrity impact beyond the availability crash.

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

Primary rating from Vendor (github).

CVSS VectorVendor: github

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

Lifecycle Timeline

2
Patch available
Aug 11, 2026 - 18:19 EUVD
CVE Published
Aug 11, 2026 - 17:19 cve.org
HIGH 7.5

DescriptionCVE.org

Browserslist is a configuration tool for sharing target browsers and Node.js versions between front-end tools. Prior to 4.28.7, normalizeStats() in node.js, reached unconditionally through getStat() and loadStat() on every browserslist() call, processes untrusted browserslist-stats.json, opts.stats, and CLI --stats data with an unguarded for...in loop and plain-object bracket access and assignment, allowing inherited Object.prototype keys including __proto__, toString, valueOf, constructor, hasOwnProperty, and isPrototypeOf to cause an uncaught TypeError or modify the prototype of the returned normalized object. This issue is fixed in version 4.28.7.

Blast Radius

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

Ecosystem-wide dependent count for version 4.28.7.

Latest POC

1 public PoC link from github

Sign in to open the public PoC links collected for this CVE.

Executive ViewAI

Why It Matters

Browserslist versions prior to 4.28.7 are vulnerable to denial-of-service attacks that can crash Node.js application processes through malicious configuration data. Organizations using affected library versions face potential service disruptions, as any application accepting external stats input is exposed to attack. Immediate upgrade to version 4.28.7 is required to mitigate this availability risk.

Business Impact: High
Compensating Controls

Vendor-released patch: version 4.28.7

Threat Intelligence Overview

EPSS Score
0.4%
Top 71% exploitable
Prevalence
High
core npm package consumed by webpack, Babel, Autoprefixer ecosystem
Threat Intel
1
1 source
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA 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 Yes
EPSS 0.4%
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
Out-of-Cycle
Exploitation
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

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

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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-2013-4660 MEDIUM POC
6.8 Jun 28

The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic

Vendor StatusVendor

SUSE

Severity: Important
Product Status
openSUSE Leap 16.0 Fixed
openSUSE Tumbleweed Fixed
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise High Performance Computing 12 Not-Affected
SUSE Linux Enterprise High Performance Computing 15 SP7 Not-Affected

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