Executive brief
A vulnerability in the Nimiq blockchain software allows a malicious network participant to crash a syncing node. By sending a specially crafted data packet during the synchronization process, an attacker can trigger an internal error that shuts down the victim's node. While the node can be restarted to resume operations, this can cause temporary service outages and disrupt the network's stability.
Technical details
A denial-of-service vulnerability exists in the `nimiq-primitives` library due to an unhandled exception (panic) in the `TrieProof::verify()` function. The root cause is an unconditional `unwrap()` on a `None` value in `TrieProofNode::child_index()` when processing two `TrieProofNode`s with identical keys, as `is_prefix_of` returns true for equal keys. This panic occurs during the processing of untrusted network input before cryptographic verification, meaning an attacker does not need a valid proof to trigger the crash. The attack is limited to the window when a victim is performing a state sync and has selected the attacker as a peer. The issue is fixed in version 1.6.0 by returning a `WrongPrefix` error instead of panicking.
Affected products
- Nimiq core-rs-albatross <= 1.5.1
- Nimiq nimiq-primitives < 1.6.0
Timeline
- 2026-06-05: disclosed
- 2026-07-16: advisory: GitHub Advisory published
- 2026-07-16: patched: Version 1.6.0 released