CVE-2026-28402
WysokieStreszczenie
W wersjach przed 1.2.2 biblioteka nimiq/core-rs-albatross zawiera podatność, która pozwala złośliwemu lub skompromitowanemu walidatorowi na opublikowanie propozycji makro bloku z niezgodnym `header.body_root`. To może prowadzić do awarii walidatorów z powodu niezgodności weryfikacji.
Ocena ryzyka
Podatność ta wpływa jedynie na węzły walidatorów, co może prowadzić do ich awarii i zakłócenia działania sieci Nimiq. W przypadku wykorzystania tej luki, złośliwy walidator może destabilizować system.
Rekomendacja
Zaleca się aktualizację do wersji 1.2.2 lub nowszej, aby załatać tę podatność poprzez dodanie weryfikacji `body_root` w propozycjach. Brak znanych obejść dla tej luki.
Inne podatności w nimiq/core-rs-albatross
Zobacz wszystkie- CVE-2026-34061Średnie
nimiq/core-rs-albatross przed wersją 1.3.0 zawiera podatność, w której wybrany walidator-proposer może wysłać blok makro wyborczy, którego header.interlink nie zgadza się z kanonicznym następnym interlinkiem. Uczciwi walidatorzy akceptują tę propozycję, ponieważ funkcja verify_macro_block_proposal() nie sprawdza wiązania interlink dla bloków wyborczych. Ten sam sfinalizowany blok jest później odrzucany przez verify_block() z błędem InvalidInterlink, ale dzieje się to po podjęciu decyzji przez Tendermint, co może prowadzić do problemów z konsensusem.
- CVE-2026-33184Wysokie
W nimiq/core-rs-albatross (implementacja protokołu Nimiq Proof-of-Stake w Rust) przed wersją 1.3.0, procedura handshake akceptuje od peera limit równy 0 i przechowuje go bez zmian. W ścieżce HandshakeAck limit 0 powoduje zwrócenie zerowych kontaktów, co wygląda nieszkodliwie. Później, w stanie Established, obliczenie self.peer_list_limit.unwrap() jako usize - 1 przy limicie 0 powoduje zawinięcie do usize::MAX, co prowadzi do paniki przy próbie alokacji pamięci.
Oryginalny opis (angielski, źródło NVD)
nimiq/core-rs-albatross is a Rust implementation of the Nimiq Proof-of-Stake protocol based on the Albatross consensus algorithm. Prior to version 1.2.2, a malicious or compromised validator that is elected as proposer can publish a macro block proposal where `header.body_root` does not match the actual macro body hash. The proposal can pass proposal verification because the macro proposal verification path validates the header but does not validate the binding `body_root == hash(body)`; later code expects this binding and may panic on mismatch, crashing validators. Note that the impact is only for validator nodes. The patch for this vulnerability is formally released as part of v1.2.2. The patch adds the corresponding body root verification in the proposal checks. No known workarounds are available.

