Description
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.
Published: 2026-08-11
Score: 7.5 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Browserslist’s normalizeStats() function processes the untrusted browserslist-stats.json, opts.stats, and CLI --stats data without guarding the for...in loop that accesses and assigns object properties. This permits keys that are inherited from Object.prototype, such as __proto__, toString, valueOf, constructor, hasOwnProperty, and isPrototypeOf, to either trigger an uncaught TypeError or to write over the prototype of the returned normalized object, effectively enabling prototype pollution and potentially a crash during runtime.

Affected Systems

all browserslist releases prior to version 4.28.7 are vulnerable. The vulnerability affects the browserslist tool regardless of the target environment, including Node.js projects that rely on browserslist for configuring front‑end tooling.

Risk and Exploitability

The vulnerability carries a CVSS score of 7.5, indicating high severity, but its EPSS score is reported as < 1%, meaning the likelihood of exploitation is low at present. The issue is not listed in the CISA KEV catalog, and no remote exploitation mechanism is known. The attack vector is likely local, where an attacker can supply malicious content in a browserslist-stats.json file or via the --stats option to a build process that runs browserslist, thereby triggering the prototype pollution or crash. If exploited in a broader context, the polluted prototype could be leveraged by other components that rely on Object.prototype behavior.

Generated by OpenCVE AI on August 12, 2026 at 21:32 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Apply browserslist version 4.28.7 or later
  • Ensure custom stats files are sourced from trusted code or configurations; remove or archive untrusted browserslist‑stats.json files
  • Audit the build environment to confirm that only trusted data is passed to browserslist via opts.stats or the --stats command line option

Generated by OpenCVE AI on August 12, 2026 at 21:32 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Tue, 11 Aug 2026 17:15:00 +0000

Type Values Removed Values Added
Description 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.
Title Browserslist: Uncaught crash / prototype write via untrusted browserslist-stats.json custom stats (normalizeStats)
Weaknesses CWE-1321
CWE-248
References
Metrics cvssV3_1

{'score': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-08-11T17:00:05.869Z

Reserved: 2026-08-10T19:37:41.445Z

Link: CVE-2026-73088

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-11T17:19:16.977

Modified: 2026-08-11T17:19:16.977

Link: CVE-2026-73088

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-12T21:45:10Z

Weaknesses
  • CWE-1321

    Improperly Controlled Modification of Object Prototype Attributes ('Prototype Pollution')

  • CWE-248

    Uncaught Exception