Nimiq: Panic in TrieProof::verify via child_index unwrap on equal-length keys
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- None
- Attack complexity
- High
- Impact type
- Denial of service
- Confidentiality · integrity · availability
- None · None · Low
- Fix status
- Fixed
Attack profile from CVSS 3.1 · CNA. Fix status from CNA and GitHub. Impact type from CWE-248.
Summary
Nimiq is a Rust implementation of the Nimiq Proof-of-Stake protocol based on the Albatross consensus algorithm. Prior to 1.6.0, a malicious state-sync peer can crash a syncing node by sending a crafted TrieChunk proof containing two TrieProofNode values with identical keys. TrieProof::verify calls TrieProofNode::child_index in primitives/src/trie/trie_proof_node.rs, where is_prefix_of accepts equal keys and KeyNibbles::get is called at the key length, returns None, and is unconditionally unwrapped. Untrusted ResponseChunk data reaches commit_chunks, put_chunk, and proof.verify before cryptographic proof validation, so the attacker does not need a valid proof. Exploitation requires the attacker to be selected as the victim's sync peer during state sync, and the resulting panic is transient because the node restarts and resynchronizes. This issue is fixed in version 1.6.0.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- No
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| nimiq | core-rs-albatross | before 1.6.0 | 1.6.0 | Patch available | CNA |
| — | nimiq-primitives (crates.io) | before 1.6.0 | 1.6.0 | Patch available | GHSA-46wq-28cx-mhw4 |
- core-rs-albatross Vendornimiq Affected before 1.6.0 Fixed in 1.6.0 Patch available CNA
- nimiq-primitives (crates.io) Vendor— Affected before 1.6.0 Fixed in 1.6.0 Patch available GHSA-46wq-28cx-mhw4
Remediation
- Fix · CNA core-rs-albatross (nimiq) Fixed in 1.6.0
- Fix · GHSA-46wq-28cx-mhw4 nimiq-primitives (crates.io) Fixed in 1.6.0 Advisory →
Timeline
- 2026-10-02 Threatist record created from CVE-2026-54541
- 2026-10-03 Alias added: GHSA-46wq-28cx-mhw4
References
Other 5
- https://github.com/nimiq/core-rs-albatross/security/advisories/GHSA-46wq-28cx-mhw4
- https://github.com/nimiq/core-rs-albatross/pull/3789
- https://github.com/nimiq/core-rs-albatross/commit/41d35acee1b5cf3bc34ec3ddc1abbc03604e791e
- https://github.com/nimiq/core-rs-albatross/releases/tag/v1.6.0
- https://github.com/nimiq/core-rs-albatross
More nimiq vulnerabilities
- TI-2026-26389 nimiq-account: Vesting insufficient funds error can panic CVSS 3.1HIGH 8.2
- TI-2026-25867 nimiq-block has skip block quorum bypass via out-of-range BitSet indices & u16 truncation CVSS 3.1CRITICAL 9.6
- TI-2026-34086 Nimiq: Validity store off by one error CVSS 3.1HIGH 7.5
- TI-2026-28920 nimiq-keys: Unchecked Ed25519 signature length in TaggedPublicKey::verify causes remote node panic via DHT CVSS 3.1HIGH 7.5
- TI-2025-29800 nimiq-network-libp2p Uncontrolled Resource Consumption vulnerability CVSS 3.1HIGH 7.5
- TI-2026-34224 nimiq-primitives: Panic DoS in trie chunk processing via ROOT-keyed item CVSS 3.1HIGH 7.5
Sources
- CVE-2026-54541 · CVE Program
- CVE-2026-54541 · NVD
- FIRST EPSS
- GHSA-46wq-28cx-mhw4 · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences