CVE-2026-63376: toml-node: Prototype Pollution Leads to `Object.prototype` Corruption via `__proto__` Key-Path Desynchronization
toml.parse() writes attacker-controlled keys onto Object.prototype. The compiler protects the tables it builds by creating them with Object.create(null), which neutralizes a direct [__proto__] table. An attacker bypasses that protection by routing a table path through a scalar value and into the real prototype chain: a path such as a.b.y.__proto__.__proto__, where a.b.y holds a number, resolves to Object.prototype and every subsequent key/value writes onto it.
The bypass succeeds because the compiler’s duplicate-key guards track paths with keys that do not match the keys used during traversal. The tracking strings and the traversal strings desynchronize, so the guard that should reject descending through an existing scalar never fires.
References
- github.com/BinaryMuse/toml-node/commit/def6ab5ea99038c0dd482cd6af1745a6af8b4c44
- github.com/BinaryMuse/toml-node/commit/dfaff662276adc38a2e03df3139f7119b0185463
- github.com/BinaryMuse/toml-node/security/advisories/GHSA-v5mp-jgw5-2x6j
- github.com/advisories/GHSA-v5mp-jgw5-2x6j
- nvd.nist.gov/vuln/detail/CVE-2026-63376
Code Behaviors & Features
Detect and mitigate CVE-2026-63376 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Learn more about Dependency Scanning →