Block processing in Bitcoin Core before versions 29.2 and 30.0 may be stalled by a malicious peer exploiting witness malleation in compact blocks, under some conditions.
This issue is considered Medium severity.
Details
Affected Bitcoin Core versions would clear download state for a compact block following
reconstruction, but prior to checking for witness malleation. If that check failed, the node
would fallback to requesting the block to the same peer via GETDATA, with a 10 minutes timeout.
A malicious peer, when it announces a compact block to a victim first, could leverage this defect to
stall the victim’s block processing. If the attacker controlled the victim’s 3 high-bandwidth peers,
or if the victim was running with -blocksonly, this could be repeated indefinitely.
Attribution
Eugene Siegel discovered this issue and responsibly disclosed it.
Timeline
- 2025-04-28 Eugene reports this issue to the Bitcoin Core security list
- 2025-05-30 Gregory Sanders open PR #32646 to fix this issue
- 2025-06-30 PR #32646 is merged
- 2025-09-12 PR #32646 is backported to version 29
- 2025-10-10 Bitcoin Core 30.0 is released with a fix
- 2025-10-14 Bitcoin Core 29.2 is released with a fix
- 2026-10-27 The last vulnerable Bitcoin Core version (29.x) goes end of life
- 2026-11-10 Public disclosure.
