nimiq-block has skip block quorum bypass via out-of-range BitSet indices & u16 truncation
Key facts
- Attack vector
- Network
- Privileges required
- Low
- User interaction
- None
- Attack complexity
- Low
- Impact type
- Security bypass
- Confidentiality · integrity · availability
- None · High · High
- Fix status
- Fixed
Attack profile from CVSS 3.1 · CNA. Fix status from CNA and GitHub. Impact type from CWE-345.
Summary
nimiq-block contains block primitives to be used in Nimiq's Rust implementation. `SkipBlockProof::verify` computes its quorum check using `BitSet.len()`, then iterates `BitSet` indices and casts each `usize` index to `u16` (`slot as u16`) for slot lookup. Prior to version 1.3.0, if an attacker can get a `SkipBlockProof` verified where `MultiSignature.signers` contains out-of-range indices spaced by 65536, these indices inflate `len()` but collide onto the same in-range `u16` slot during aggregation. This makes it possible for a malicious validator with far fewer than `2f+1` real signer slots to pass skip block proof verification by multiplying a single BLS signature by the same factor. The patch for this vulnerability is included as part of v1.3.0. No known workarounds are available.
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 | nimiq-block | before 1.3.0 | 1.3.0 | Patch available | CNA |
| — | nimiq-block (crates.io) | before 1.7.2 | 1.7.2 | Patch available | GHSA-6973-8887-87ff |
- nimiq-block Vendornimiq Affected before 1.3.0 Fixed in 1.3.0 Patch available CNA
- nimiq-block (crates.io) Vendor— Affected before 1.7.2 Fixed in 1.7.2 Patch available GHSA-6973-8887-87ff
Remediation
- Fix · CNA nimiq-block (nimiq) Fixed in 1.3.0
- Fix · GHSA-6973-8887-87ff nimiq-block (crates.io) Fixed in 1.7.2 Advisory →
Timeline
- 2026-10-02 Threatist record created from CVE-2026-33471
- 2026-10-03 Alias added: GHSA-6973-8887-87ff
- 2026-10-30 Fix available: crates.io/[email protected] · GHSA-6973-8887-87ff
References
Patch 2
More Nimiq Proof-of-stake vulnerabilities
- TI-2026-26389 nimiq-account: Vesting insufficient funds error can panic CVSS 3.1HIGH 8.2
- TI-2026-27598 nimiq/core-rs-albatross: Panic in history index request handlers when a full node runs without the history index CVSS 3.1HIGH 7.5
- TI-2026-26390 nimiq-primitives: Node crash due to missing interlink validation in election macro block proposals CVSS 3.1HIGH 7.5
- TI-2026-26388 network-libp2p: Peer can crash the node by opening discovery protocol substream twice CVSS 3.1HIGH 7.5
- TI-2026-25612 nimiq/core-rs-albatross: Discovery handshake limit could underflow and later provoke a deterministic overflow panic CVSS 3.1HIGH 7.5
- TI-2026-25114 Nimiq: Remote crash via off-by-one signer bounds check in proposal buffer CVSS 3.1HIGH 7.5
Sources
- CVE-2026-33471 · CVE Program
- CVE-2026-33471 · NVD
- FIRST EPSS
- GHSA-6973-8887-87ff · 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