ZeroHour

CVE-2026-63376

moderate

Prototype Pollution in toml-node (npm 'toml') allows Object.prototype corruption

CVSS 3.1
8.2 high
EPSS
<1%p32
Published
()
Modified
AI analysis

CVE-2026-63376 is a prototype pollution vulnerability (CWE-1321) in the npm 'toml' package (toml-node): toml.parse() writes attacker-controlled keys onto Object.prototype, corrupting every ordinary JavaScript object in the process. Although the compiler shields the tables it builds with Object.create(null), the deepRef path resolver fails to reject descent through an existing scalar value because its duplicate-key tracking strings desynchronize from the keys actually used during traversal; a crafted table header such as [a.b.y.__proto__.__proto__] (where a.b.y = 1) therefore walks the native prototype chain onto Object.prototype, after which all subsequent key/value pairs pollute it, including injection of nested gadget objects. An attacker who can get malicious TOML parsed by a server or application gains arbitrary global property injection — high integrity impact per the CVSS 3.1 score of 8.2 — which can alter program logic via polluted properties or gadgets and cause availability loss, with no confidentiality impact. Any Node.js project that parses untrusted or semi-trusted TOML with this package is exposed; version 4.1.1, the latest at the time of disclosure, is vulnerable, and the source data identifies no fixed version or affected range. No exploitation in the wild is known (absent from CISA KEV, EPSS about 0.4% at the 32nd percentile), and no public proof of concept is tracked beyond the reproduction steps in the advisory.

What to do: Audit your dependency tree for npm 'toml' (e.g., npm ls toml) and determine whether any service parses attacker-supplied TOML with it; upgrade to a patched release when one is published, verifying against the npm security advisory since no fixed version is named in the source data. Until patched, avoid parsing untrusted TOML with toml.parse(), reject or sanitize table headers and dotted keys containing __proto__ segments before parsing, and consider freezing Object.prototype as defense-in-depth. Watch downstream services for pollution symptoms such as unexpected inherited properties, logic anomalies, or crashes.

Affected
toml-node project (npm package: 'toml') toml (toml-node) TOML parser for Node.js4.1.1 (latest at time of disclosure) is vulnerable; no fixed version or earlier affected range stated in the source data
Estimated exposure
moderateOrder of tens of thousands of weekly npm downloads (about 10^4-10^5); exploitable deployments parsing attacker-controlled TOML likely in the thousands to low… — The 'toml' package is a niche Node.js TOML parser whose npm weekly download counts are historically in the tens of thousands, well below flagship TOML parsers, and it is typically used for configuration parsing where input is trusted, so…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

toml-node is a TOML parser for Node.js and the browser. Prior to 4.1.2, toml.parse() in lib/compiler.js can be tricked by a table path such as a.b.y.__proto__.__proto__, allowing traversal from a scalar value into Number.prototype and Object.prototype. The currentPath tracking value uses both arrays and strings, so valueAssignments records a comma-joined path such as a,b.y while deepRef checks the dot-joined path a.b.y, allowing the duplicate-key guard to miss and attacker-controlled keys to be written to Object.prototype. A table-array prefix-clearing path in addTableArray can also erase guard state before the same __proto__ traversal. Injected properties become visible throughout the Node.js process and can cause denial of service, logic or authorization bypass, or code execution when an application contains a suitable gadget. This issue is fixed in version 4.1.2.

Ecosystems
npm
Weakness
CWE-1321
Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:L
GHSA
GHSA-v5mp-jgw5-2x6j (high)

In the news

No ingested article mentions this CVE yet.