CVE-2026-33471 PUBLISHED

nimiq-block has skip block quorum bypass via out-of-range BitSet indices & u16 truncation

Assigner: GitHub_M
Reserved: 20.03.2026 Published: 22.04.2026 Updated: 22.04.2026

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.

Metrics

CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:H/A:H
CVSS Score: 9.6

Product Status

Vendor nimiq
Product nimiq-block
Versions
  • Version < 1.3.0 is affected

References

Problem Types

  • CWE-20: Improper Input Validation CWE
  • CWE-190: Integer Overflow or Wraparound CWE
  • CWE-345: Insufficient Verification of Data Authenticity CWE
  • CWE-1284: Improper Validation of Specified Quantity in Input CWE