<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Style Dictionary (&gt;= 4.3.0, &lt; 5.4.4) - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/style-dictionary--4.3.0--5.4.4/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata. Fed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Tue, 28 Jul 2026 22:23:45 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/style-dictionary--4.3.0--5.4.4/feed.xml" rel="self" type="application/rss+xml"/><item><title>Prototype Pollution Vulnerability in Style Dictionary convertTokenData Function</title><link>https://feed.craftedsignal.io/briefs/2026-07-style-dictionary-pollution/</link><pubDate>Tue, 28 Jul 2026 22:23:45 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-07-style-dictionary-pollution/</guid><description>A prototype pollution vulnerability exists in the Style Dictionary library, specifically within the `convertTokenData()` utility function, allowing malicious users to exploit it by crafting a token array containing `__proto__` keys, which, when processed, will globally pollute the `Object.prototype`, impacting NodeJS server applications and web applications.</description><content:encoded><![CDATA[<p>A significant prototype pollution vulnerability, tracked as CVE-2026-54639, has been identified in the Style Dictionary library, affecting versions <code>&gt;=4.3.0</code> but prior to <code>5.4.4</code>. This flaw resides within the <code>convertTokenData()</code> utility function. An attacker can exploit this by introducing a specially crafted token array, for instance, <code>[{ key: '{__proto__.foo}', value: 'malicious' }]</code>. When this malicious input is processed by the vulnerable function, it leads to a global pollution of the <code>Object.prototype</code>. This means that any object subsequently created within the application's runtime will inherit the injected <code>foo</code> property with an attacker-controlled value. The vulnerability can be triggered directly via <code>convertTokenData()</code>, indirectly through Style Dictionary's Expand API, or during its transform lifecycle. This poses a high risk to NodeJS server applications and a moderate risk to web applications using Style Dictionary, allowing for potential manipulation of application logic, bypass of security controls, or data tampering.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An attacker identifies a target application using Style Dictionary versions <code>&gt;=4.3.0</code> and <code>&lt;5.4.4</code>.</li>
<li>The attacker crafts a malicious token data structure, such as <code>[{ key: '{__proto__.foo}', value: 'malicious' }]</code>, containing a key that targets the JavaScript <code>__proto__</code> property.</li>
<li>The crafted token data is introduced into the vulnerable application, for example, through an untrusted configuration file, API endpoint, or user-controlled input.</li>
<li>The application processes the malicious token data, either by directly invoking the <code>convertTokenData()</code> utility function, or indirectly via Style Dictionary's <code>Expand API</code> or <code>transform lifecycle</code> mechanisms.</li>
<li>Due to insufficient sanitization and validation within the <code>convertTokenData()</code> function, the specially crafted <code>__proto__</code> key is processed.</li>
<li>The <code>Object.prototype</code> is globally polluted, injecting a new property (<code>foo</code>) with an attacker-defined value (<code>malicious</code>) into all newly created objects, potentially leading to arbitrary code execution or logic manipulation.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>The impact of this prototype pollution vulnerability varies depending on the application context. For NodeJS server applications integrating Style Dictionary, the impact is considered high, as global object modification can lead to severe consequences, including remote code execution, denial of service, or data manipulation. For web applications, the impact is rated as moderate, potentially leading to client-side attacks like cross-site scripting (XSS) or data exfiltration. In scenarios where the user of Style Dictionary also maintains the tokens and access is strictly controlled, the impact is low. Successful exploitation can enable attackers to manipulate application behavior, bypass authentication or authorization checks, or inject malicious properties into system-level objects, compromising the integrity and security of the affected application.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Patch CVE-2026-54639 immediately by upgrading the <code>npm/style-dictionary</code> package to version <code>5.4.4</code> or higher.</li>
<li>Implement the provided workaround by sanitizing all token data recursively to check for object keys containing <code>__proto__</code> before processing them with Style Dictionary.</li>
<li>Ensure that, if using the workaround, the <code>expand</code> configuration option in Style Dictionary is explicitly set to <code>false</code> to prevent indirect exploitation pathways.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>prototype-pollution</category><category>supply-chain</category><category>npm</category><category>nodejs</category></item></channel></rss>