<?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 — CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/tags/nimiq/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata — refreshed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Wed, 24 Jan 2024 12:00:00 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/tags/nimiq/feed.xml" rel="self" type="application/rss+xml"/><item><title>Nimiq Node Panic due to Invalid BLS Key</title><link>https://feed.craftedsignal.io/briefs/2024-01-nimiq-panic/</link><pubDate>Wed, 24 Jan 2024 12:00:00 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2024-01-nimiq-panic/</guid><description>An unauthenticated peer can crash a Nimiq node by sending a malformed election macro block containing an invalid BLS voting key, leading to a denial of service.</description><content:encoded><![CDATA[<p>A critical vulnerability exists in Nimiq&rsquo;s core-rs-albatross library, specifically within the nimiq-primitives crate, affecting versions 0.2.0 and earlier. An attacker can exploit this vulnerability by sending a malicious election macro block to a Nimiq node. This block contains an invalid compressed BLS voting key. When the node attempts to process this block, specifically during the hashing of the election macro header and the validation of the validators set via <code>Validators::voting_keys()</code>, the <code>validator.voting_key.uncompress().unwrap()</code> function is triggered. Due to the invalid BLS key, this operation results in a panic, effectively crashing the Nimiq node and causing a denial-of-service condition. The vulnerability was patched in version 1.3.0 of the core-rs-albatross library.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker identifies a vulnerable Nimiq node running a version of <code>nimiq-primitives</code> less than or equal to 0.2.0.</li>
<li>Attacker crafts a malicious election macro block.</li>
<li>The malicious block contains an invalid compressed BLS voting key within the <code>validators</code> set.</li>
<li>The attacker sends the crafted block to the target Nimiq node via the peer-to-peer network.</li>
<li>The Nimiq node receives the block and begins processing it.</li>
<li>During the hashing of the election macro header, the <code>validators</code> set is processed.</li>
<li>The <code>Validators::voting_keys()</code> function is called, which attempts to uncompress the BLS voting key.</li>
<li>Due to the invalid compressed BLS key, the <code>validator.voting_key.uncompress().unwrap()</code> function panics, causing the node to crash and leading to a denial of service.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of this vulnerability leads to a denial-of-service condition for the targeted Nimiq node. This can disrupt network operations, prevent legitimate transactions from being processed, and potentially impact the overall stability of the Nimiq network. The vulnerability allows any untrusted peer to trigger the crash.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Upgrade to version 1.3.0 or later of the <code>core-rs-albatross</code> library to patch CVE-2026-34065.</li>
<li>Implement rate limiting on incoming peer connections to mitigate the impact of malicious blocks being sent to the node.</li>
</ul>
]]></content:encoded><category domain="severity">medium</category><category domain="type">advisory</category><category>denial-of-service</category><category>nimiq</category><category>bls</category></item><item><title>Nimiq Block Skip Block Quorum Bypass Vulnerability</title><link>https://feed.craftedsignal.io/briefs/2024-01-nimiq-block-quorum-bypass/</link><pubDate>Tue, 02 Jan 2024 12:00:00 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2024-01-nimiq-block-quorum-bypass/</guid><description>A vulnerability exists in Nimiq Block's SkipBlockProof verification process, allowing attackers to bypass quorum checks by manipulating MultiSignature signers with out-of-range indices, potentially compromising blockchain integrity, and affecting rust/nimiq-block versions 0.2.0 and earlier.</description><content:encoded><![CDATA[<p>A critical vulnerability has been identified in the Nimiq Block&rsquo;s <code>SkipBlockProof::verify</code> function within the rust-albatross core. This vulnerability stems from the way the quorum check is performed. The vulnerability lies in the ability to craft <code>MultiSignature.signers</code> that contain out-of-range indices spaced by 65536, inflating the <code>len()</code> calculation but colliding onto the same in-range <code>u16</code> slot during aggregation due to truncation. The vulnerability affects <code>rust/nimiq-block</code> versions <code>&lt;= 0.2.0</code>. Successful exploitation allows a malicious validator with significantly fewer than the required <code>2f+1</code> signer slots to pass skip block proof verification. This bypasses the intended security mechanisms, potentially undermining the blockchain&rsquo;s consensus and integrity.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker identifies a Nimiq Block instance running a vulnerable version (&lt;= 0.2.0) of the <code>rust/nimiq-block</code> package.</li>
<li>The attacker crafts a malicious <code>MultiSignature.signers</code> payload.</li>
<li>The malicious payload contains out-of-range indices spaced by 65536. These indices are specifically designed to inflate the <code>BitSet.len()</code> calculation used in the quorum check.</li>
<li>During verification within <code>SkipBlockProof::verify</code>, the <code>usize</code> indices are cast to <code>u16</code> (<code>slot as u16</code>) for slot lookup.</li>
<li>Due to the <code>u16</code> truncation, the out-of-range indices collide onto the same in-range slot. This creates an artificial aggregation of signatures.</li>
<li>The attacker multiplies a single BLS signature by a factor to match the inflated <code>len()</code> value.</li>
<li>The manipulated <code>SkipBlockProof</code> passes the quorum check due to the inflated <code>len()</code> and signature aggregation.</li>
<li>The malicious skip block is accepted, potentially leading to consensus manipulation or other attacks on the blockchain.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of this vulnerability allows a malicious validator to bypass the standard quorum requirements for skip block proof verification. This means that a single compromised validator or a small group of colluding validators can inject fraudulent blocks into the blockchain, potentially leading to double-spending, denial-of-service, or other attacks that compromise the integrity and availability of the Nimiq blockchain. Given the severity of these potential outcomes, this vulnerability poses a critical risk to any system relying on affected versions of Nimiq Block.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Upgrade to <code>rust/nimiq-block</code> version <code>1.3.0</code> or later, which includes the fix for <a href="https://github.com/advisories/GHSA-6973-8887-87ff">CVE-2026-33471</a>.</li>
<li>Monitor network traffic for anomalies related to skip block submissions, focusing on unusually large <code>MultiSignature.signers</code> payloads with indices spaced by multiples of 65536. Create a network monitoring rule.</li>
</ul>
]]></content:encoded><category domain="severity">medium</category><category domain="type">advisory</category><category>blockchain</category><category>quorum bypass</category><category>nimiq</category><category>rust</category></item></channel></rss>