<?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>Nimiq-Primitives (&lt; 1.5.0) — CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/nimiq-primitives--1.5.0/</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>Thu, 21 May 2026 19:51:50 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/nimiq-primitives--1.5.0/feed.xml" rel="self" type="application/rss+xml"/><item><title>Nimiq Primitives Trie Chunk Processing Denial-of-Service (CVE-2026-46545)</title><link>https://feed.craftedsignal.io/briefs/2026-05-nimiq-trie-dos/</link><pubDate>Thu, 21 May 2026 19:51:50 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-05-nimiq-trie-dos/</guid><description>A remote denial-of-service vulnerability (CVE-2026-46545) exists in Nimiq primitives where an unauthenticated peer can send a malicious chunk with an empty key, leading to a panic when `put_raw` attempts to store a value at the root node, causing the node process to abort.</description><content:encoded><![CDATA[<p>A remote, unauthenticated denial-of-service vulnerability has been identified in the <code>nimiq-primitives</code> library, specifically affecting the <code>MerkleRadixTrie::put_chunk</code> function. This vulnerability allows any state-sync peer to crash a node performing state synchronization, including freshly joining nodes and those recovering from data loss. The vulnerability occurs because a malicious peer can respond to a <code>RequestChunk</code> with a <code>ResponseChunk::Chunk</code> whose first <code>TrieItem.key</code> is the empty (ROOT) key. When <code>put_raw</code> tries to store a value at the root node, it calls <code>TrieNode::put_value(...).unwrap()</code>, which returns <code>Err(RootCantHaveValue)</code> and panics, aborting the node process. This vulnerability impacts any node running state sync against untrusted peers. The affected package is <code>rust/nimiq-primitives</code> versions prior to 1.5.0. This issue is tracked as CVE-2026-46545.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>A node initiates state synchronization with peers.</li>
<li>A malicious peer receives a <code>RequestChunk</code> message from the victim node.</li>
<li>The malicious peer crafts a <code>ResponseChunk::Chunk</code> message.</li>
<li>The crafted <code>ResponseChunk::Chunk</code> message contains a <code>TrieItem.key</code> with an empty (ROOT) key as its first element.</li>
<li>The victim node receives the malicious chunk and processes it using <code>MerkleRadixTrie::put_chunk</code> (around line 819 in <code>primitives/trie/src/trie.rs</code>).</li>
<li>During processing, the <code>put_raw</code> function (around line 351 in <code>primitives/trie/src/trie.rs</code>) attempts to store a value at the root node.</li>
<li><code>TrieNode::put_value(...).unwrap()</code> returns <code>Err(RootCantHaveValue)</code>.</li>
<li>The node process panics and aborts, resulting in a denial-of-service.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>This vulnerability can lead to a denial-of-service condition for nodes running state synchronization against untrusted peers. This includes freshly joining nodes performing initial download and existing nodes recovering from data loss. Successful exploitation results in the crashing of the victim node, disrupting its ability to participate in the network. The vulnerability can be triggered without authentication and is not subject to rate limiting, making it highly impactful.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Upgrade to <code>nimiq-primitives</code> version 1.5.0 or later to patch CVE-2026-46545.</li>
<li>Monitor network traffic for unexpected state synchronization behavior with untrusted peers.</li>
<li>Implement rate limiting and authentication mechanisms for state synchronization requests where feasible.</li>
</ul>
]]></content:encoded><category domain="severity">medium</category><category domain="type">advisory</category><category>denial-of-service</category><category>rust</category></item></channel></rss>