nimiq-account: Vesting insufficient funds error can panic
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- None
- Attack complexity
- Low
- Impact type
- —
- Confidentiality · integrity · availability
- None · Low · High
- Fix status
- Fixed
Attack profile from CVSS 3.1 · NVD. Fix status from CNA and GitHub.
Summary
nimiq-account contains account primitives to be used in Nimiq's Rust implementation. Prior to version 1.3.0, `VestingContract::can_change_balance` returns `AccountError::InsufficientFunds` when `new_balance < min_cap`, but it constructs the error using `balance: self.balance - min_cap`. `Coin::sub` panics on underflow, so if an attacker can reach a state where `min_cap > balance`, the node crashes while trying to return an error. The `min_cap > balance` precondition is attacker-reachable because the vesting contract creation data (32-byte format) allows encoding `total_amount` without validating `total_amount <= transaction.value` (the real contract balance). After creating such a vesting contract, the attacker can broadcast an outgoing transaction to trigger the panic during mempool admission and block processing. The patch for this vulnerability is included as part of v1.3.0. No known workarounds are available.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- Yes
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| nimiq | nimiq-account | before 1.3.0 | 1.3.0 | Patch available | CNA |
| — | nimiq-account (crates.io) | up to 0.2.0 | — | No fix listed | GHSA-vc34-39q2-m6q3 |
- nimiq-account Vendornimiq Affected before 1.3.0 Fixed in 1.3.0 Patch available CNA
- nimiq-account (crates.io) Vendor— Affected up to 0.2.0 Fixed in — No fix listed GHSA-vc34-39q2-m6q3
Remediation
- Fix · CNA nimiq-account (nimiq) Fixed in 1.3.0
Timeline
- 2026-10-02 Threatist record created from CVE-2026-34064
- 2026-10-03 Alias added: GHSA-vc34-39q2-m6q3
References
Patch 3
More Nimiq Proof-of-stake vulnerabilities
- TI-2026-25867 nimiq-block has skip block quorum bypass via out-of-range BitSet indices & u16 truncation CVSS 3.1CRITICAL 9.6
- TI-2026-27598 nimiq/core-rs-albatross: Panic in history index request handlers when a full node runs without the history index CVSS 3.1HIGH 7.5
- TI-2026-26390 nimiq-primitives: Node crash due to missing interlink validation in election macro block proposals CVSS 3.1HIGH 7.5
- TI-2026-26388 network-libp2p: Peer can crash the node by opening discovery protocol substream twice CVSS 3.1HIGH 7.5
- TI-2026-25612 nimiq/core-rs-albatross: Discovery handshake limit could underflow and later provoke a deterministic overflow panic CVSS 3.1HIGH 7.5
- TI-2026-25114 Nimiq: Remote crash via off-by-one signer bounds check in proposal buffer CVSS 3.1HIGH 7.5
Sources
- CVE-2026-34064 · CVE Program
- CVE-2026-34064 · NVD
- FIRST EPSS
- GHSA-vc34-39q2-m6q3 · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences