OSV 1.4.0 · github-reviewed · 修改于 2026-08-12 23:16
发布时间
2026-08-12 23:16
GitHub 审查时间
2026-08-12 23:16
NVD 发布时间
—
源文件
advisories/github-reviewed/2026/08/GHSA-3763-qp59-59vf/GHSA-3763-qp59-59vf.json
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.
https://github.com/nimiq/core-rs-albatross/pull/3772
No known workarounds