Executive brief
Zebra, a Zcash node implementation, is vulnerable to a denial-of-service attack that can permanently stall a node at a specific block height. By exploiting how the software handles block validation, a remote attacker can trick a node into rejecting legitimate new blocks, causing it to fall behind the rest of the network. This affects the reliability of services relying on the node, such as wallets, block explorers, and mining infrastructure.
Technical details
A vulnerability in Zebra's block processing logic allows for block suppression through a 'same-header body poisoning' attack. Zebra records a block hash in its internal cache before contextual validation is complete; if validation fails, the hash is not removed. An attacker can exploit ZIP-244 transaction malleability to construct a poisoned block body that shares the same header hash as a valid block. By winning a propagation race and delivering the poisoned body first, the attacker causes Zebra to cache the hash and reject the subsequent valid block as a duplicate. This stalls the node at the current height. The issue is fixed in Zebra 4.4.2 and zebra-state 7.0.0 by ensuring stale entries are removed from the cache upon validation failure.
Affected products
- ZcashFoundation zebrad <= 4.4.1
- ZcashFoundation zebra-state <= 6.0.0
Timeline
- 2026-05-29: disclosed: Reported to ZcashFoundation
- 2026-07-02: advisory: GitHub Advisory published