CVE-2026-40092
HighCVSS 7.5Exploitation Probability (EPSS)
Low risk46th percentile - higher than 46% of all known CVEs
Summary
nimiq-blockchain prior to version 1.4.0 has a vulnerability where a malicious network peer can crash any Nimiq full node by publishing a crafted Kademlia DHT record. The record contains a TaggedSigned<ValidatorRecord, KeyPair> with a signature field whose byte length is not exactly 64, causing a panic when unwrap() is called in the Ed25519 implementation. The BLS implementation correctly returns false, but Ed25519 panics.
Risk Assessment
The risk is remote crash of a Nimiq node by a malicious peer, potentially disrupting the blockchain network.
Recommendation
Upgrade to version 1.4.0, which fixes this vulnerability.
Other vulnerabilities in nimiq-blockchain
See all- CVE-2026-40094Medium
In the nimiq-blockchain library (versions 1.3.0 and prior), network discovery accepts signed PeerContact updates from untrusted peers and stores them in the contact book, potentially causing an address book crash. An attacker can send a contact with an empty address list, causing a panic when accessing the address book.
- CVE-2026-34066Medium
In nimiq-blockchain before version 1.3.0, HistoryStore::put_historic_txns uses an assert! to enforce invariants about HistoricTransaction.block_number. During history sync, a peer can influence the input passed to Blockchain::push_history_sync, and a malformed history list can violate these invariants and trigger a panic before later rejection checks run.
Original NVD description (English source)
nimiq-blockchain provides persistent block storage for Nimiq's Rust implementation. In versions 1.3.0 and below, a malicious network peer can crash any Nimiq full node by publishing a crafted Kademlia DHT record. The maliciously crafted record would contain a TaggedSigned<ValidatorRecord, KeyPair> with a signature field whose byte length is not exactly 64 in order to cause a crash. When the victim node's DHT verifier calls TaggedSigned::verify, execution reaches Ed25519Signature::from_bytes(sig).unwrap() in the TaggedPublicKey implementation for Ed25519PublicKey. The from_bytes call fails because ed25519_zebra::Signature::try_from rejects slices not 64 bytes, and the unwrap() panics. The BLS TaggedPublicKey implementation correctly returns false on error; only the Ed25519 implementation panics. This issue has been fixed in version 1.4.0.
Vulnerability data from NVD (NIST) · CISA KEV · EPSS

