CRITICAL🇬🇧 English

CVE-2026-33471

Nimiq Proof-Of-Stake: obejście weryfikacji kworum w SkipBlockProof

CVSS 9.6v3.1pub. 2026-04-22upd. 2026-04-24

Podatność w bibliotece nimiq-block pozwala złośliwemu walidatorowi na sfałszowanie dowodu pominięcia bloku (skip block proof) bez posiadania wymaganej liczby głosów kworum. Atakujący dysponujący znacznie mniejszą liczbą rzeczywistych slotów podpisujących może ominąć mechanizm konsensusu, co zagraża integralności i dostępności sieci blockchain.

Pokaż oryginał (EN)

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.

🤖 Analiza AI
Jak działa

Funkcja `SkipBlockProof::verify` oblicza kworum na podstawie `BitSet.len()`, a następnie iteruje po indeksach `BitSet`, rzutując każdy indeks typu `usize` na typ `u16` przy wyszukiwaniu slotu. Jeśli pole `MultiSignature.signers` zawiera indeksy spoza zakresu oddalone od siebie o wielokrotność 65536, te indeksy zawyżają wynik `len()` (liczony na pełnych wartościach `usize`), lecz podczas agregacji kolidują na ten sam slot `u16` mieszczący się w zakresie. W efekcie jeden podpis BLS może być wielokrotnie zliczony jako różne głosy, pozwalając spełnić próg `2f+1` bez faktycznego posiadania wymaganej liczby slotów podpisujących. Jest to kombinacja nieprawidłowej walidacji wejścia (CWE-20), przepełnienia liczby całkowitej przy rzutowaniu (CWE-190), braku weryfikacji autentyczności danych (CWE-345) oraz nieodpowiedniej walidacji ilości indeksów (CWE-1284).

Skutki

Złośliwy walidator może przejść weryfikację dowodu pominięcia bloku dysponując znacznie mniejszą liczbą rzeczywistych slotów niż wymagany próg kworum, co umożliwia naruszenie integralności konsensusu sieci i potencjalne zakłócenie jej działania.

Mitygacja

Należy zaktualizować bibliotekę nimiq-block do wersji 1.3.0 lub nowszej, w której zawarto poprawkę eliminującą opisaną podatność. Producent nie wskazuje żadnych znanych obejść (workarounds).

Kogo dotyczy

Biblioteka nimiq-block używana w implementacji Nimiq Proof-Of-Stake w języku Rust (core-rs-albatross) — wersje przed 1.3.0

Uwagi

Poprawka została wprowadzona w wersji v1.3.0. Producent potwierdza brak znanych obejść. Szczegóły dostępne w security advisory GHSA-6973-8887-87ff oraz commicie d02059053181ed8ddad6b59a0adfd661ef5cd823.

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:H/A:H
  • Nimiq Proof Of Stake

    APP
    Nimiq
    < 1.3.0
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
CWE
Referencje

Powiązane podatności

CVE-2026-34065HIGH7.5ten sam produkt

nimiq-primitives contains primitives (e.g., block, account, transaction) to be used in Nimiq's Rust implementa...

CVE-2026-34063HIGH7.5ten sam produkt

Nimiq's network-libp2p is a Nimiq network implementation based on libp2p. Prior to version 1.3.0, `network-lib...

CVE-2026-32605HIGH7.5ten sam produkt

nimiq/core-rs-albatross is a Rust implementation of the Nimiq Proof-of-Stake protocol based on the Albatross c...

CVE-2026-40093HIGH8.1ten sam produkt

nimiq-blockchain provides persistent block storage for Nimiq's Rust implementation. In 1.3.0 and earlier, bloc...

CVE-2026-33184HIGH7.5ten sam produkt

nimiq/core-rs-albatross is a Rust implementation of the Nimiq Proof-of-Stake protocol based on the Albatross c...