CVE-2026-73088
Browserslist: Uncaught crash / prototype write via untrusted browserslist-stats.json custom stats (normalizeStats)
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.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
7.5
Browserslist: Uncaught crash / prototype write via untrusted browserslist-stats.json custom stats (normalizeStats)
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.
- Record
CVE-2026-73088- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-1321, CWE-248
- Updated
- 2026-11-02
EUVDEUVD-2026-56285
7.5
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.
- Record
EUVD-2026-56285- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-73wf-gq98-2v4g
7.5
Browserslist: Uncaught crash / prototype write via untrusted browserslist-stats.json custom stats (normalizeStats)
Vulnerability Details
File: node.js
Function: normalizeStats() (line ~214), reached from getStat() (called
unconditionally on every browserslist() call) and loadStat()
Root Cause
function normalizeStats(data, stats) {
if (!data) { data = {} }
if (stats && 'dataByBrowser' in stats) { stats = stats.dataByBrowser }
if (typeof stats !== 'object') return undefined
var normalized = {}
for (var i in stats) {
var versions = Object.keys(stats[i])
if (versions.length === 1 && data[i] && data[i].versions.length === 1) {
var normal = data[i].versions[0]
normalized[i] = {}
normalized[i][normal] = stats[i][versions[0]]
} else {
normalized[i] = stats[i]
}
}
return normalized
}
stats is untrusted: it comes from JSON.parse()-ing a
browserslist-stats.json file — auto-discovered by walking up the directory
tree from the project root on every browserslist() call, regardless of
the query (env.getStat(opts, browserslist.data) runs unconditionally
inside browserslist()) — or from opts.stats passed programmatically /
via the CLI's --stats= flag. data is browserslist.data, a plain object
populated only with real browser names.
Two independent bugs from the same root cause (unguarded for...in over
untrusted keys used with plain-object bracket access/assignment):
- Crash:
data[i]has nohasOwnPropertyguard. Ifstatscontains a key that also happens to be an inheritedObject.prototypemember name —"__proto__","toString","valueOf","constructor","hasOwnProperty","isPrototypeOf", etc. —data[i]resolves to that inherited function/object (always truthy), and the code then doesdata[i].versions.length→undefined.length→ uncaughtTypeError, for any such key whose JSON value has exactly one sub-key, e.g.:{ "toString": { "onekey": 5 }, "chrome": { "100": 50 } } - Prototype write:
normalized[i] = ...on the freshnormalized = {}— ifiis exactly"__proto__"(andnormalizedhas no own property by that name yet), this computed assignment invokes the realObject.prototype.__proto__setter, changingnormalized's actual[[Prototype]]instead of creating a plain property.
Because this runs on every browserslist() call regardless of the
query, simply committing a poisoned browserslist-stats.json anywhere in a
project's directory tree breaks every subsequent Browserslist call in that
project — including calls made by Autoprefixer, Babel preset-env,
Stylelint, or PostCSS internally, for completely unrelated queries.
Attack Scenario
- Attacker submits a PR (or a compromised dependency) adding a
browserslist-stats.jsonfile anywhere between the project root and filesystem root, containing e.g.{"toString": {"onekey": 5}, "chrome": {"100": 50}}. - The victim's build/CI pipeline runs any tool that calls
browserslist()internally, for any query. - The auto-discovered poisoned file crashes the process with an uncaught
TypeErroron the very first call.
Measured Impact
Confirmed crash (real browserslist() call, v4.28.6) with stats keys:
__proto__, toString, valueOf, hasOwnProperty, constructor,
isPrototypeOf — each paired with a one-key JSON object — for any query,
including browserslist('defaults') which never mentions stats.
Recommended Fix (implemented and verified)
var normalized = Object.create(null)
for (var i in stats) {
var versions = Object.keys(stats[i])
var known = Object.prototype.hasOwnProperty.call(data, i) && data[i]
if (versions.length === 1 && known && known.versions.length === 1) {
var normal = known.versions[0]
normalized[i] = Object.create(null)
normalized[i][normal] = stats[i][versions[0]]
} else {
normalized[i] = stats[i]
}
}
return normalized
normalized uses Object.create(null) so a…
- Record
GHSA-73wf-gq98-2v4g- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-248, CWE-1321
- Updated
- 2026-11-02
NVD
7.5
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.
- Record
CVE-2026-73088- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-248, CWE-1321
- Updated
- 2026-11-02
OSV
7.5
Browserslist: Uncaught crash / prototype write via untrusted browserslist-stats.json custom stats (normalizeStats)
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.
- Record
CVE-2026-73088- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-1321, CWE-248
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-73088
7.5
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.
- Record
DEBIAN-CVE-2026-73088- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
Show 30 moreShow less
OSVGHSA-73wf-gq98-2v4g
7.5
Browserslist: Uncaught crash / prototype write via untrusted browserslist-stats.json custom stats (normalizeStats)
Vulnerability Details
File: node.js
Function: normalizeStats() (line ~214), reached from getStat() (called
unconditionally on every browserslist() call) and loadStat()
Root Cause
function normalizeStats(data, stats) {
if (!data) { data = {} }
if (stats && 'dataByBrowser' in stats) { stats = stats.dataByBrowser }
if (typeof stats !== 'object') return undefined
var normalized = {}
for (var i in stats) {
var versions = Object.keys(stats[i])
if (versions.length === 1 && data[i] && data[i].versions.length === 1) {
var normal = data[i].versions[0]
normalized[i] = {}
normalized[i][normal] = stats[i][versions[0]]
} else {
normalized[i] = stats[i]
}
}
return normalized
}
stats is untrusted: it comes from JSON.parse()-ing a
browserslist-stats.json file — auto-discovered by walking up the directory
tree from the project root on every browserslist() call, regardless of
the query (env.getStat(opts, browserslist.data) runs unconditionally
inside browserslist()) — or from opts.stats passed programmatically /
via the CLI's --stats= flag. data is browserslist.data, a plain object
populated only with real browser names.
Two independent bugs from the same root cause (unguarded for...in over
untrusted keys used with plain-object bracket access/assignment):
- Crash:
data[i]has nohasOwnPropertyguard. Ifstatscontains a key that also happens to be an inheritedObject.prototypemember name —"__proto__","toString","valueOf","constructor","hasOwnProperty","isPrototypeOf", etc. —data[i]resolves to that inherited function/object (always truthy), and the code then doesdata[i].versions.length→undefined.length→ uncaughtTypeError, for any such key whose JSON value has exactly one sub-key, e.g.:{ "toString": { "onekey": 5 }, "chrome": { "100": 50 } } - Prototype write:
normalized[i] = ...on the freshnormalized = {}— ifiis exactly"__proto__"(andnormalizedhas no own property by that name yet), this computed assignment invokes the realObject.prototype.__proto__setter, changingnormalized's actual[[Prototype]]instead of creating a plain property.
Because this runs on every browserslist() call regardless of the
query, simply committing a poisoned browserslist-stats.json anywhere in a
project's directory tree breaks every subsequent Browserslist call in that
project — including calls made by Autoprefixer, Babel preset-env,
Stylelint, or PostCSS internally, for completely unrelated queries.
Attack Scenario
- Attacker submits a PR (or a compromised dependency) adding a
browserslist-stats.jsonfile anywhere between the project root and filesystem root, containing e.g.{"toString": {"onekey": 5}, "chrome": {"100": 50}}. - The victim's build/CI pipeline runs any tool that calls
browserslist()internally, for any query. - The auto-discovered poisoned file crashes the process with an uncaught
TypeErroron the very first call.
Measured Impact
Confirmed crash (real browserslist() call, v4.28.6) with stats keys:
__proto__, toString, valueOf, hasOwnProperty, constructor,
isPrototypeOf — each paired with a one-key JSON object — for any query,
including browserslist('defaults') which never mentions stats.
Recommended Fix (implemented and verified)
var normalized = Object.create(null)
for (var i in stats) {
var versions = Object.keys(stats[i])
var known = Object.prototype.hasOwnProperty.call(data, i) && data[i]
if (versions.length === 1 && known && known.versions.length === 1) {
var normal = known.versions[0]
normalized[i] = Object.create(null)
normalized[i][normal] = stats[i][versions[0]]
} else {
normalized[i] = stats[i]
}
}
return normalized
normalized uses Object.create(null) so a…
- Record
GHSA-73wf-gq98-2v4g- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-1321, CWE-248
- Updated
- 2026-11-02
OSVRHSA-2026:54517
7.5
Red Hat Security Advisory: Red Hat Hardened Images RPMs Security Update
- Record
RHSA-2026:54517- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVRHSA-2026:54518
7.5
Red Hat Security Advisory: Red Hat Hardened Images RPMs Security Update
- Record
RHSA-2026:54518- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-73088
7.5
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.
- Record
UBUNTU-CVE-2026-73088- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVCLSA-2026-1790004614 No score
TuxCare security update for browserslist (1 CVE)
TuxCare rebuilt browserslist to address 1 CVE. Fixed in 4.14.2-tuxcare.2.
- Record
CLSA-2026-1790004614- Updated
- 2026-11-02
OSVCLSA-2026-1790016470 No score
TuxCare security update for browserslist (1 CVE)
TuxCare rebuilt browserslist to address 1 CVE. Fixed in 4.10.0-tuxcare.4.
- Record
CLSA-2026-1790016470- Updated
- 2026-11-02
OSVCLSA-2026-1790175577 No score
TuxCare security update for browserslist (2 CVEs)
TuxCare rebuilt browserslist to address 2 CVEs. Fixed in 4.27.0-tuxcare.2.
- Record
CLSA-2026-1790175577- Updated
- 2026-11-02
OSVCLSA-2026-1790177674 No score
TuxCare security update for browserslist (2 CVEs)
TuxCare rebuilt browserslist to address 2 CVEs. Fixed in 4.13.0-tuxcare.3.
- Record
CLSA-2026-1790177674- Updated
- 2026-11-02
OSVCLSA-2026-1790541831 No score
TuxCare security update for browserslist (1 CVE)
TuxCare rebuilt browserslist to address 1 CVE. Fixed in 3.2.8-tuxcare.1.
- Record
CLSA-2026-1790541831- Updated
- 2026-11-02
OSVCLSA-2026-1790544273 No score
TuxCare security update for browserslist (1 CVE)
TuxCare rebuilt browserslist to address 1 CVE. Fixed in 2.11.3-tuxcare.1.
- Record
CLSA-2026-1790544273- Updated
- 2026-11-02
OSVCLSA-2026-1790604921 No score
TuxCare security update for browserslist (1 CVE)
TuxCare rebuilt browserslist to address 1 CVE. Fixed in 1.7.7-tuxcare.1.
- Record
CLSA-2026-1790604921- Updated
- 2026-11-02
OSVCLSA-2026-1790615783 No score
TuxCare security update for browserslist (1 CVE)
TuxCare rebuilt browserslist to address 1 CVE. Fixed in 4.24.4-tuxcare.1.
- Record
CLSA-2026-1790615783- Updated
- 2026-11-02
OSVCLSA-2026-1791199466 No score
TuxCare security update for browserslist (2 CVEs)
TuxCare rebuilt browserslist to address 2 CVEs. Fixed in 4.21.5-tuxcare.1.
- Record
CLSA-2026-1791199466- Updated
- 2026-11-02
OSVCLSA-2026-1792163369 No score
TuxCare security update for browserslist (1 CVE)
TuxCare rebuilt browserslist to address 1 CVE. Fixed in 4.24.0-tuxcare.1.
- Record
CLSA-2026-1792163369- Updated
- 2026-11-02
OSVCLSA-2026-1792443101 No score
TuxCare security update for browserslist (2 CVEs)
TuxCare rebuilt browserslist to address 2 CVEs. Fixed in 4.28.5-tuxcare.1.
- Record
CLSA-2026-1792443101- Updated
- 2026-11-02
OSVCLSA-2026-1792473159 No score
TuxCare security update for browserslist (1 CVE)
TuxCare rebuilt browserslist to address 1 CVE. Fixed in 4.28.1-tuxcare.1.
- Record
CLSA-2026-1792473159- Updated
- 2026-11-02
OSVCLSA-2026-1792477554 No score
TuxCare security update for browserslist (2 CVEs)
TuxCare rebuilt browserslist to address 2 CVEs. Fixed in 4.28.4-tuxcare.1.
- Record
CLSA-2026-1792477554- Updated
- 2026-11-02
OSVCLSA-2026-1792495777 No score
TuxCare security update for browserslist (2 CVEs)
TuxCare rebuilt browserslist to address 2 CVEs. Fixed in 4.28.2-tuxcare.1.
- Record
CLSA-2026-1792495777- Updated
- 2026-11-02
OSVCLSA-2026-1793180856 No score
TuxCare security update for browserslist (2 CVEs)
TuxCare rebuilt browserslist to address 2 CVEs. Fixed in 4.23.3-tuxcare.1.
- Record
CLSA-2026-1793180856- Updated
- 2026-11-02
OSVCLSA-2026-1793445784 No score
TuxCare security update for browserslist (1 CVE)
TuxCare rebuilt browserslist to address 1 CVE. Fixed in 4.23.0-tuxcare.2.
- Record
CLSA-2026-1793445784- Updated
- 2026-11-02
OSVCLSA-2026-1793445883 No score
TuxCare security update for browserslist (1 CVE)
TuxCare rebuilt browserslist to address 1 CVE. Fixed in 4.23.1-tuxcare.2.
- Record
CLSA-2026-1793445883- Updated
- 2026-11-02
OSVCLSA-2026-1793445987 No score
TuxCare security update for browserslist (1 CVE)
TuxCare rebuilt browserslist to address 1 CVE. Fixed in 4.21.10-tuxcare.2.
- Record
CLSA-2026-1793445987- Updated
- 2026-11-02
OSVCLSA-2026-1793446139 No score
TuxCare security update for browserslist (1 CVE)
TuxCare rebuilt browserslist to address 1 CVE. Fixed in 4.23.2-tuxcare.2.
- Record
CLSA-2026-1793446139- Updated
- 2026-11-02
OSVCLSA-2026-1794048476 No score
TuxCare security update for browserslist (2 CVEs)
TuxCare rebuilt browserslist to address 2 CVEs. Fixed in 4.18.1-tuxcare.1.
- Record
CLSA-2026-1794048476- Updated
- 2026-11-07
OSVCLSA-2026-1794048573 No score
TuxCare security update for browserslist (1 CVE)
TuxCare rebuilt browserslist to address 1 CVE. Fixed in 4.24.5-tuxcare.1.
- Record
CLSA-2026-1794048573- Updated
- 2026-11-07
OSVopenSUSE-SU-2026:11535-1 No score
bun-1.4.0~git20260808.52bf09cb-2.1 on GA media
These are all security issues fixed in the bun-1.4.0~git20260808.52bf09cb-2.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:11535-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:11540-1 No score
python313-pytest-html-4.2.0-5.1 on GA media
These are all security issues fixed in the python313-pytest-html-4.2.0-5.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:11540-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:11680-1 No score
agama-web-ui-24+0.a836cced5-52.1 on GA media
These are all security issues fixed in the agama-web-ui-24+0.a836cced5-52.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:11680-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:21602-1 No score
Security update for python-pytest-html
This update for python-pytest-html fixes the following issues:
Changes in python-pytest-html:
- Revendor browserslist to fix the following:
- CVE-2026-73088: unguarded for...in loop over untrusted JSON keys in normalizeStats() function leads to prototype pollution and uncaught exceptions (bsc#1275374)
- CVE-2026-73089: unbounded in-memory caching of query pairs in browserslist() can lead to DoS via memory exhaustion through a high volume of distinct queries (bsc#1275437)
- Record
openSUSE-SU-2026:21602-1- Updated
- 2026-11-02
OSVROOT-APP-NPM-CVE-2026-73088 No score
CVE-2026-73088 in browserslist - Patched by Root
Root has patched CVE-2026-73088 in the browserslist package for Root:npm. Multiple fixed versions available.
- Record
ROOT-APP-NPM-CVE-2026-73088- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
browserslistnpm |
through 4.28.6 | 4.28.7 |
browserslistTuxCare:npm |
4.14.2-tuxcare.0 up to 4.14.2-tuxcare.2, plus listed versions 4.14.24.14.2-tuxcare.1 |
4.14.2-tuxcare.2 |
browserslistTuxCare:npm |
4.10.0-tuxcare.0 up to 4.10.0-tuxcare.4, plus listed versions 4.10.04.10.0-tuxcare.14.10.0-tuxcare.24.10.0-tuxcare.3 |
4.10.0-tuxcare.4 |
browserslistTuxCare:npm From an advisory covering 2 CVEs |
4.27.0-tuxcare.0 up to 4.27.0-tuxcare.2, plus listed versions 4.27.04.27.0-tuxcare.1 |
4.27.0-tuxcare.2 |
browserslistTuxCare:npm From an advisory covering 2 CVEs |
4.13.0-tuxcare.0 up to 4.13.0-tuxcare.3, plus listed versions 4.13.04.13.0-tuxcare.14.13.0-tuxcare.2 |
4.13.0-tuxcare.3 |
browserslistTuxCare:npm |
3.2.8-tuxcare.0 up to 3.2.8-tuxcare.1, plus listed versions 3.2.8 |
3.2.8-tuxcare.1 |
browserslistTuxCare:npm |
2.11.3-tuxcare.0 up to 2.11.3-tuxcare.1, plus listed versions 2.11.3 |
2.11.3-tuxcare.1 |
browserslistTuxCare:npm |
1.7.7-tuxcare.0 up to 1.7.7-tuxcare.1, plus listed versions 1.7.7 |
1.7.7-tuxcare.1 |
browserslistTuxCare:npm |
4.24.4-tuxcare.0 up to 4.24.4-tuxcare.1, plus listed versions 4.24.4 |
4.24.4-tuxcare.1 |
browserslistTuxCare:npm From an advisory covering 2 CVEs |
4.21.5-tuxcare.0 up to 4.21.5-tuxcare.1, plus listed versions 4.21.5 |
4.21.5-tuxcare.1 |
Show 29 moreShow less
| Package | Affected | Fixed |
|---|---|---|
browserslistTuxCare:npm |
4.24.0-tuxcare.0 up to 4.24.0-tuxcare.1, plus listed versions 4.24.0 |
4.24.0-tuxcare.1 |
browserslistTuxCare:npm From an advisory covering 2 CVEs |
4.28.5-tuxcare.0 up to 4.28.5-tuxcare.1, plus listed versions 4.28.5 |
4.28.5-tuxcare.1 |
browserslistTuxCare:npm |
4.28.1-tuxcare.0 up to 4.28.1-tuxcare.1, plus listed versions 4.28.1 |
4.28.1-tuxcare.1 |
browserslistTuxCare:npm From an advisory covering 2 CVEs |
4.28.4-tuxcare.0 up to 4.28.4-tuxcare.1, plus listed versions 4.28.4 |
4.28.4-tuxcare.1 |
browserslistTuxCare:npm From an advisory covering 2 CVEs |
4.28.2-tuxcare.0 up to 4.28.2-tuxcare.1, plus listed versions 4.28.2 |
4.28.2-tuxcare.1 |
browserslistTuxCare:npm From an advisory covering 2 CVEs |
4.23.3-tuxcare.0 up to 4.23.3-tuxcare.1, plus listed versions 4.23.3 |
4.23.3-tuxcare.1 |
browserslistTuxCare:npm |
4.23.0-tuxcare.0 up to 4.23.0-tuxcare.2, plus listed versions 4.23.04.23.0-tuxcare.1 |
4.23.0-tuxcare.2 |
browserslistTuxCare:npm |
4.23.1-tuxcare.0 up to 4.23.1-tuxcare.2, plus listed versions 4.23.14.23.1-tuxcare.1 |
4.23.1-tuxcare.2 |
browserslistTuxCare:npm |
4.21.10-tuxcare.0 up to 4.21.10-tuxcare.2, plus listed versions 4.21.104.21.10-tuxcare.1 |
4.21.10-tuxcare.2 |
browserslistTuxCare:npm |
4.23.2-tuxcare.0 up to 4.23.2-tuxcare.2, plus listed versions 4.23.24.23.2-tuxcare.1 |
4.23.2-tuxcare.2 |
browserslistTuxCare:npm From an advisory covering 2 CVEs |
4.18.1-tuxcare.0 up to 4.18.1-tuxcare.1, plus listed versions 4.18.1 |
4.18.1-tuxcare.1 |
browserslistTuxCare:npm |
4.24.5-tuxcare.0 up to 4.24.5-tuxcare.1, plus listed versions 4.24.5 |
4.24.5-tuxcare.1 |
node-browserslistDebian:12 |
All versions, plus listed versions 4.21.10+~cs6.1.25-14.21.10+~cs6.1.25-24.21.4+~cs6.1.17-24.22.1+~cs6.1.27-14.22.1+~cs6.1.28-1 Show 11 moreShow less4.23.0+~cs6.1.32-14.24.4+~cs6.3.21-14.24.4+~cs6.3.22-14.25.0+~cs6.3.22-14.25.2+~cs6.3.22-14.26.0+~cs8.11.27-14.27.0+~cs8.11.53-14.27.0+~cs8.11.53-24.28.1+~cs8.14.48-14.28.2+~cs8.14.68-14.28.7+~cs8.16.65-1 |
None known |
node-browserslistDebian:13 |
All versions, plus listed versions 4.25.0+~cs6.3.22-14.25.2+~cs6.3.22-14.26.0+~cs8.11.27-14.27.0+~cs8.11.53-14.27.0+~cs8.11.53-24.28.1+~cs8.14.48-14.28.2+~cs8.14.68-14.28.7+~cs8.16.65-1 |
None known |
node-browserslistDebian:14 |
before 4.28.7+~cs8.16.65-1, plus listed versions 4.25.0+~cs6.3.22-14.25.2+~cs6.3.22-14.26.0+~cs8.11.27-14.27.0+~cs8.11.53-14.27.0+~cs8.11.53-24.28.1+~cs8.14.48-14.28.2+~cs8.14.68-1 |
4.28.7+~cs8.16.65-1 |
browserslistnpm |
before 4.28.7 | 4.28.7 |
grafana13.1Red Hat:hummingbird:1 From an advisory covering 9 CVEs |
before 0:13.1.3-0.1.1.hum1 | 0:13.1.3-0.1.1.hum1 |
grafana12.4Red Hat:hummingbird:1 From an advisory covering 5 CVEs |
before 0:12.4.8-0.1.1.hum1 | 0:12.4.8-0.1.1.hum1 |
browserslistRoot:npm |
before 4.20.3-aikido.1 | 4.20.3-aikido.14.28.4-aikido.14.28.1-aikido.14.12.0-aikido.14.14.2-aikido.24.20.2-aikido.14.22.2-aikido.14.25.1-aikido.14.28.2-aikido.14.23.0-aikido.14.21.2-aikido.14.21.5-aikido.13.2.8-aikido.14.24.2-aikido.14.24.0-aikido.11.7.7-aikido.14.7.0-aikido.14.17.1-aikido.14.21.4-aikido.11.7.7-aikido.2 |
@rootio/browserslistRoot:npm |
before 4.20.3-root.io.1 | 4.20.3-root.io.14.28.4-root.io.14.28.1-root.io.14.12.0-root.io.14.14.2-root.io.24.20.2-root.io.14.22.2-root.io.14.25.1-root.io.14.28.2-root.io.14.23.0-root.io.14.21.2-root.io.14.21.5-root.io.13.2.8-root.io.14.24.2-root.io.14.24.0-root.io.11.7.7-root.io.14.7.0-root.io.14.17.1-root.io.14.21.4-root.io.11.7.7-root.io.2 |
node-browserslistUbuntu:18.04:LTS |
All versions, plus listed versions 2.11.3-12.11.3-1build32.11.3-1build4 |
None known |
node-browserslistUbuntu:20.04:LTS |
All versions, plus listed versions 2.11.3-1build4 |
None known |
node-browserslistUbuntu:22.04:LTS |
All versions, plus listed versions 4.16.3+~cs5.4.72-34.17.0+~cs5.6.76-14.18.1+~cs5.1.2-14.19.1+~cs5.1.2-14.19.1+repack+~cs5.1.2-24.19.3+~cs5.1.3-1 |
None known |
node-browserslistUbuntu:24.04:LTS |
All versions, plus listed versions 4.21.4+~cs6.1.17-24.22.1+~cs6.1.28-1 |
None known |
node-browserslistUbuntu:26.04:LTS |
All versions, plus listed versions 4.25.2+~cs6.3.22-14.26.0+~cs8.11.27-14.27.0+~cs8.11.53-24.28.1+~cs8.14.48-1 |
None known |
bunopenSUSE:Tumbleweed |
before 1.4.0~git20260808.52bf09cb-2.1 | 1.4.0~git20260808.52bf09cb-2.1 |
python-pytest-htmlopenSUSE:Tumbleweed |
before 4.2.0-5.1 | 4.2.0-5.1 |
agama-web-uiopenSUSE:Tumbleweed From an advisory covering 19 CVEs |
before 24+0.a836cced5-52.1 | 24+0.a836cced5-52.1 |
python-pytest-htmlopenSUSE:Leap 16.0 From an advisory covering 2 CVEs |
before 4.1.1-bp160.5.1 | 4.1.1-bp160.5.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, aliases | OSV | |
| affected, facts | ||
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-73088 is a high vulnerability (CVSS 7.5) in Browserslist, published August 11, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.66%, the 51st percentile. Fixed in browserslist 4.28.7.
References
github.com/browserslist/browserslist/security/advisories/GHSA-73wf-gq98-2v4g
github.com/browserslist/browserslist/commit/f9914ad9effc865ccc27d816255625890b31ca51
github.com/browserslist/browserslist/releases/tag/4.28.7
nvd.nist.gov/vuln/detail/CVE-2026-73088
github.com/advisories/GHSA-73wf-gq98-2v4g
github.com/CVEProject/cvelistV5/tree/main/cves/2026/73xxx/CVE-2026-73088.json
Show 92 moreShow less
security-tracker.debian.org/tracker/CVE-2026-73088
github.com/browserslist/browserslist
access.redhat.com/errata/RHSA-2026:54517
access.redhat.com/security/cve/CVE-2026-73088
access.redhat.com/security/cve/CVE-2026-73089
access.redhat.com/security/updates/classification
images.redhat.com
access.redhat.com/security/cve/CVE-2026-45819
access.redhat.com/security/cve/CVE-2026-16221
access.redhat.com/security/cve/CVE-2026-65904
access.redhat.com/security/cve/CVE-2026-65912
access.redhat.com/security/cve/CVE-2026-65911
access.redhat.com/security/cve/CVE-2026-65914
access.redhat.com/security/cve/CVE-2026-65913
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_54517.json
bugzilla.redhat.com/show_bug.cgi?id=2502307
cve.org/CVERecord?id=CVE-2026-16221
nvd.nist.gov/vuln/detail/CVE-2026-16221
cna.openjsf.org/security-advisories.html
github.com/fastify/fast-uri/security/advisories/GHSA-v2hh-gcrm-f6hx
bugzilla.redhat.com/show_bug.cgi?id=2515240
cve.org/CVERecord?id=CVE-2026-45819
nvd.nist.gov/vuln/detail/CVE-2026-45819
github.com/web-platform-dx/baseline-browser-mapping/blob/b7881aa61c8a057e24468ab5ee18c5ecedbbf691/src/index.ts
github.com/web-platform-dx/baseline-browser-mapping/pull/137/changes
npmjs.com/package/baseline-browser-mapping
bugzilla.redhat.com/show_bug.cgi?id=2506426
cve.org/CVERecord?id=CVE-2026-65904
nvd.nist.gov/vuln/detail/CVE-2026-65904
github.com/cure53/DOMPurify/security/advisories/GHSA-4w3q-35jp-p934
vulncheck.com/advisories/dompurify-before-cross-site-scripting-via-in-place-mode
bugzilla.redhat.com/show_bug.cgi?id=2506434
cve.org/CVERecord?id=CVE-2026-65911
nvd.nist.gov/vuln/detail/CVE-2026-65911
github.com/cure53/DOMPurify/security/advisories/GHSA-9p3w-6h5p-cv75
vulncheck.com/advisories/dompurify-before-xss-via-add-attr-add-tags-state-leakage
bugzilla.redhat.com/show_bug.cgi?id=2506427
cve.org/CVERecord?id=CVE-2026-65912
nvd.nist.gov/vuln/detail/CVE-2026-65912
github.com/cure53/DOMPurify/security/advisories/GHSA-cjmm-f4jc-qw8r
vulncheck.com/advisories/dompurify-before-uri-validation-bypass-via-add-attr
bugzilla.redhat.com/show_bug.cgi?id=2506429
cve.org/CVERecord?id=CVE-2026-65913
nvd.nist.gov/vuln/detail/CVE-2026-65913
github.com/cure53/DOMPurify/security/advisories/GHSA-cj63-jhhr-wcxv
vulncheck.com/advisories/dompurify-before-prototype-pollution-via-use-profiles
bugzilla.redhat.com/show_bug.cgi?id=2506430
cve.org/CVERecord?id=CVE-2026-65914
nvd.nist.gov/vuln/detail/CVE-2026-65914
github.com/cure53/DOMPurify/security/advisories/GHSA-h8r8-wccr-v5f2
vulncheck.com/advisories/dompurify-before-mutation-xss-via-re-contextualization
bugzilla.redhat.com/show_bug.cgi?id=2514177
cve.org/CVERecord?id=CVE-2026-73088
bugzilla.redhat.com/show_bug.cgi?id=2514195
cve.org/CVERecord?id=CVE-2026-73089
nvd.nist.gov/vuln/detail/CVE-2026-73089
github.com/browserslist/browserslist/commit/f2931a3ff2a3a31abf84ef01a7400b270aad6405
github.com/browserslist/browserslist/security/advisories/GHSA-c83g-rgw3-j3cx
access.redhat.com/errata/RHSA-2026:54518
access.redhat.com/security/cve/CVE-2026-73086
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_54518.json
bugzilla.redhat.com/show_bug.cgi?id=2514175
cve.org/CVERecord?id=CVE-2026-73086
nvd.nist.gov/vuln/detail/CVE-2026-73086
github.com/ai/nanoid/commit/7087969281cab8ba8ae3babf1894e819068b3bb4
github.com/ai/nanoid/commit/821dfed7b5db7f88e92f56c60eef32c8135077c3
github.com/ai/nanoid/commit/b0036ed60dc9facd7f1191a50dfb3076500202ac
github.com/ai/nanoid/releases/tag/3.3.12
github.com/ai/nanoid/releases/tag/5.1.11
github.com/ai/nanoid/security/advisories/GHSA-xwg4-73v4-xw9w
ubuntu.com/security/CVE-2026-73088
suse.com/security/cve/CVE-2026-73088
suse.com/security/cve/CVE-2025-7783
suse.com/security/cve/CVE-2026-13149
suse.com/security/cve/CVE-2026-13676
suse.com/security/cve/CVE-2026-33245
suse.com/security/cve/CVE-2026-49356
suse.com/security/cve/CVE-2026-53550
suse.com/security/cve/CVE-2026-53632
suse.com/security/cve/CVE-2026-54466
suse.com/security/cve/CVE-2026-55602
suse.com/security/cve/CVE-2026-67313
suse.com/security/cve/CVE-2026-67315
suse.com/security/cve/CVE-2026-67317
suse.com/security/cve/CVE-2026-67319
suse.com/security/cve/CVE-2026-67321
suse.com/security/cve/CVE-2026-69153
suse.com/security/cve/CVE-2026-73086
suse.com/security/cve/CVE-2026-73089
suse.com/security/cve/CVE-2026-73650
bugzilla.suse.com/1275374
bugzilla.suse.com/1275437
Left out here: the rest of 2 source descriptions. The JSON record has them.