CVE-2026-63376
moderatePrototype Pollution in toml-node (npm 'toml') allows Object.prototype corruption
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.
| toml-node project (npm package: 'toml') toml (toml-node) TOML parser for Node.js | 4.1.1 (latest at time of disclosure) is vulnerable; no fixed version or earlier affected range stated in the source data |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
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 news0 stories
No ingested article mentions this CVE yet.