{"description":"Trending threats, MITRE ATT\u0026CK coverage, and detection metadata. Fed continuously.","favicon":"https://feed.craftedsignal.io/favicon-32x32.png","feed_url":"https://feed.craftedsignal.io/cpes/cpe2.3atoml_projecttomlnode.js/feed.json","home_page_url":"https://feed.craftedsignal.io/","icon":"https://feed.craftedsignal.io/apple-touch-icon.png","items":[{"_cs_actors":[],"_cs_cpes":["cpe:2.3:a:toml_project:toml:*:*:*:*:*:node.js:*:*"],"_cs_cves":[{"cvss":8.2,"id":"CVE-2026-63376"}],"_cs_exploited":false,"_cs_has_poc":false,"_cs_poc_references":[],"_cs_products":["toml (\u003c 4.1.2)"],"_cs_severities":["high"],"_cs_tags":["prototype-pollution","supply-chain","nodejs"],"_cs_type":"advisory","_cs_vendors":[],"content_html":"\u003cp\u003eThe \u003ccode\u003etoml\u003c/code\u003e Node.js package (vulnerable versions \u0026lt; 4.1.2) is susceptible to a high-severity prototype pollution vulnerability, tracked as CVE-2026-63376. The vulnerability stems from two primary failures in the package's compiler logic: the lack of reserved key validation during path traversal and a path-format desynchronization between internal tracking sets.\u003c/p\u003e\n\u003cp\u003eThe compiler resolves paths using \u003ccode\u003edeepRef\u003c/code\u003e, which treats \u003ccode\u003e__proto__\u003c/code\u003e as an ordinary key. Because intermediate tables are created with \u003ccode\u003eObject.create(null)\u003c/code\u003e but assigned values are not, an attacker can traverse through a scalar value (e.g., a number) into the prototype chain of that scalar's constructor, eventually reaching \u003ccode\u003eObject.prototype\u003c/code\u003e. Furthermore, the internal protection mechanism intended to block path redefinition fails because the tracking strings and the actual traversal path strings utilize different formats - comma-joined versus dot-joined - causing the guard condition to miss. An attacker providing a malicious TOML file can inject arbitrary properties into \u003ccode\u003eObject.prototype\u003c/code\u003e, affecting all objects within the Node.js process. This vulnerability is critical for any application using \u003ccode\u003etoml\u003c/code\u003e to parse external, untrusted input.\u003c/p\u003e\n\u003ch2 id=\"attack-chain\"\u003eAttack Chain\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003eAttacker crafts a malicious TOML payload containing a nested path that targets \u003ccode\u003e__proto__\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe payload defines a scalar value at a path (e.g., \u003ccode\u003ea.b.y = 1\u003c/code\u003e) to occupy a location in the object graph.\u003c/li\u003e\n\u003cli\u003eThe attacker introduces a subsequent table definition targeting \u003ccode\u003ea.b.y.__proto__.__proto__\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003etoml\u003c/code\u003e parser's \u003ccode\u003edeepRef\u003c/code\u003e function begins traversal of the malicious key path.\u003c/li\u003e\n\u003cli\u003eThe internal path-format desynchronization causes the redefinition guard to fail, as the stored path \u003ccode\u003e\u0026quot;a,b.y\u0026quot;\u003c/code\u003e does not match the dot-delimited lookup path \u003ccode\u003e\u0026quot;a.b.y\u0026quot;\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe parser traverses the prototype chain of the scalar value at \u003ccode\u003ea.b.y\u003c/code\u003e, landing on \u003ccode\u003eObject.prototype\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe parser writes the attacker's desired property onto \u003ccode\u003eObject.prototype\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe application performs a logic check or gadget execution that references a polluted property, resulting in RCE or authorization bypass.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"impact\"\u003eImpact\u003c/h2\u003e\n\u003cp\u003eSuccessful exploitation allows for the modification of the global \u003ccode\u003eObject.prototype\u003c/code\u003e within the target Node.js process. This results in global state corruption, which can be leveraged for denial of service, privilege escalation, or remote code execution if the application environment contains reachable gadgets. Given the widespread use of the \u003ccode\u003etoml\u003c/code\u003e package (14.8 million weekly downloads), this poses a systemic risk to dependent configuration loaders and application front-matter parsers.\u003c/p\u003e\n\u003ch2 id=\"recommendation\"\u003eRecommendation\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003eUpgrade the \u003ccode\u003etoml\u003c/code\u003e dependency to version 4.1.2 or later immediately to patch CVE-2026-63376.\u003c/li\u003e\n\u003cli\u003eAudit applications using \u003ccode\u003etoml.parse()\u003c/code\u003e that process untrusted inputs, such as configuration files, project manifests, or user-supplied TOML strings.\u003c/li\u003e\n\u003cli\u003eUse static analysis tools to identify if user-controlled input flows into \u003ccode\u003etoml.parse()\u003c/code\u003e.\u003c/li\u003e\n\u003c/ol\u003e\n","date_modified":"2026-09-04T00:05:22Z","date_published":"2026-09-04T00:05:22Z","id":"https://feed.craftedsignal.io/briefs/2026-09-toml-prototype-pollution/","summary":"The toml Node.js package contains a prototype pollution vulnerability (CVE-2026-63376) that allows attackers to corrupt Object.prototype via __proto__ path manipulation and path-format desynchronization, potentially leading to RCE.","title":"Prototype Pollution in toml Node.js Package via Path Desynchronization","url":"https://feed.craftedsignal.io/briefs/2026-09-toml-prototype-pollution/"}],"language":"en","title":"CraftedSignal Threat Feed - Cpe:2.3:a:toml_project:toml:*:*:*:*:*:node.js:*:*","version":"https://jsonfeed.org/version/1.1"}