PT-2026-75918 · Crates.Io · Nimiq-Blockchain

Published

2026-08-12

·

Updated

2026-08-12

CVSS v3.1

7.5

High

VectorAV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N

Impact

The validity store treats a transaction with stored block number = X as "in window" only when X > last bn - transaction validity window blocks (strict inequality). However the protocol's Transaction::is valid at accepts a transaction for inclusion in any block in [validity start height - blocks per batch, validity start height + window - 1]. By choosing validity start height = X + blocks per batch (the largest value still compatible with first inclusion at block X), an attacker can replay the same signed transaction in any block B such that X + window < B < validity start height + window, i.e., a contiguous window of blocks per batch - 1 blocks (59 on MainNet, ~10 minutes) during which the replay-protection check fails to flag it. The same transaction is then executed twice: the sender is debited twice, the recipient credited twice.

Patches

Workarounds

No known workarounds

Fix

Found an issue in the description? Have something to add? Feel free to write us 👾

Weakness Enumeration

Related Identifiers

GHSA-3763-QP59-59VF

Affected Products

Nimiq-Blockchain