Impact
The vulnerability arises from an assert in the `HistoryStore::put_historic_txns` function, which verifies that each historic transaction’s block number belongs to the macro block being pushed and to the same epoch. During a history synchronization, a malicious peer can supply a crafted list of historic transactions with block numbers outside these boundaries. The inbound list is fed into `Blockchain::push_history_sync`, and before the node rejects the history based on the root hash comparison, the assert in the history store can fire, causing a panic and terminating the node. Because the panic occurs prior to other validation checks, the attack can successfully crash a node that otherwise would have rejected the malformed data, effectively denying service to that node and potentially disrupting the network topology.
Affected Systems
The flaw is present in the Rust implementation of Nimiq’s blockchain, specifically the nimiq-blockchain component. All versions released before 1.3.0 include the buggy assert. The vulnerability is triggered when a node participates in the history synchronization protocol and receives a history that does not satisfy the block‑number invariants.
Risk and Exploitability
With a CVSS score of 5.3 the hazard is moderate, yet a malicious or compromised peer can exploit it over the peer‑to‑peer network by sending a malicious history during sync. The likelihood of exploitation is uncertain because the EPSS score is not available and the issue is not listed in the CISA KEV catalog. Nonetheless any node still running a pre‑1.3.0 build remains vulnerable to a denial‑of‑service attack that could cause repeated crashes and loss of node availability.
OpenCVE Enrichment
Github GHSA