NimiqのNimiq Proof of Stake (core-rs-albatross)における整数アンダーフローの脆弱性
| Title |
NimiqのNimiq Proof of Stake (core-rs-albatross)における整数アンダーフローの脆弱性
|
| Summary |
nimiq-accountはNimiqのRust実装で使用されるアカウントプリミティブを含みます。バージョン1.3.0より前では、`VestingContract::can_change_balance`が`new_balance min_cap`の場合に`AccountError::InsufficientFunds`を返しますが、このエラーは`balance: self.balance - min_cap`を使用して構築されます。`Coin::sub`はアンダーフローでパニックを起こすため、攻撃者が`min_cap balance`の状態に到達すると、エラーを返そうとする際にノードがクラッシュします。この`min_cap balance`の前提条件は攻撃者によって到達可能であり、ベスティングコントラクト作成データ(32バイト形式)が`total_amount = transaction.value`(実際のコントラクト残高)の検証なしに`total_amount`をエンコード可能にしているためです。このようなベスティングコントラクトを作成した後、攻撃者はパニックをトリガーする送信トランザクションをブロードキャストして、メンプールの受理やブロック処理時にクラッシュを引き起こすことができます。この脆弱性の修正はv1.3.0に含まれており、既知の回避策はありません。
|
| Possible impacts |
当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 また、当該ソフトウェアが扱う情報の一部が書き換えられる可能性があります。 さらに、当該ソフトウェアが完全に停止する可能性があります。 そして、この脆弱性を悪用した攻撃の影響は、他のソフトウェアには及びません。 |
| Solution |
正式な対策が公開されています。ベンダ情報を参照して適切な対策を実施してください。 |
| Publication Date |
April 22, 2026, midnight |
| Registration Date |
April 27, 2026, 11:18 a.m. |
| Last Update |
April 27, 2026, 11:18 a.m. |
|
CVSS3.0 : 重要
|
| Score |
8.2
|
| Vector |
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H |
Affected System
| Nimiq |
|
Nimiq Proof of Stake (core-rs-albatross) 1.3.0 未満
|
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
ベンダー情報
その他
Change Log
| No |
Changed Details |
Date of change |
| 1 |
[2026年04月27日] 掲載 |
April 27, 2026, 11:18 a.m. |
NVD Vulnerability Information
CVE-2026-34064
| 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.
|
| Publication Date |
April 23, 2026, 5:16 a.m. |
| Registration Date |
April 25, 2026, 4:06 a.m. |
| Last Update |
April 25, 2026, 2:12 a.m. |
Affected software configurations
| Configuration1 |
or higher |
or less |
more than |
less than |
| cpe:2.3:a:nimiq:nimiq_proof-of-stake:*:*:*:*:*:rust:*:* |
|
|
|
1.3.0 |
Related information, measures and tools
Common Vulnerabilities List