Intel

AIKIDO-2026-842415

browserslist is vulnerable to Prototype Pollution

Prototype PollutionGHSA-73wf-gq98-2v4g Published 3 days ago

75

High Risk

This Affects:

JSbrowserslist
4.3.1 - 4.28.6
Fixed in 4.28.7
Are you affected? Scan for Free

TL;DR

The normalizeStats function in node.js iterates untrusted custom stats with an unguarded for...in loop and uses plain-object bracket access and assignment on keys taken from a browserslist-stats.json file or opts.stats. A key matching an inherited Object.prototype member such as __proto__, toString, or constructor makes a data lookup resolve to an inherited function and throws an uncaught TypeError, while a literal __proto__ key invokes the real prototype setter and rewrites the object prototype. Because custom stats are auto-discovered by walking the directory tree and are read on every browserslist() call regardless of the query, a single poisoned file anywhere in the project tree crashes every downstream tool that invokes Browserslist. The fix normalizes into an Object.create(null) object and guards data lookups with an explicit hasOwnProperty check so untrusted keys can no longer reach inherited members or the prototype setter.

Who does this affect?

You are affected if you are using a version that falls within the vulnerable range and your project reads an untrusted browserslist-stats.json file from its directory tree or passes externally influenced data into opts.stats.

Background info

browserslist is vulnerable to Prototype Pollution in versions 4.3.1 - 4.28.6.

How to fix this

Upgrade the org.mvnpm:browserslist library to the patch version.