CVE-2026-34064 PUBLISHED

nimiq-account: Vesting insufficient funds error can panic

Assigner: GitHub_M
Reserved: 25.03.2026 Published: 22.04.2026 Updated: 22.04.2026

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.

Metrics

CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
CVSS Score: 5.3

Product Status

Vendor nimiq
Product nimiq-account
Versions
  • Version < 1.3.0 is affected

References

Problem Types

  • CWE-191: Integer Underflow (Wrap or Wraparound) CWE