Executive brief
Zebra, a software implementation of the Zcash cryptocurrency protocol, contains a flaw in how it validates the complexity of transactions within a block. An attacker could create a specially crafted block that Zebra accepts but other Zcash software (like zcashd) rejects, leading to a 'chain split' where different parts of the network disagree on the valid transaction history. This can disrupt the reliability of the payment network and potentially lead to financial loss or service outages for users relying on affected nodes.
Technical details
Zebra's block validation logic incorrectly calculates the total number of signature operations (sigops) against the MAX_BLOCK_SIGOPS limit (20,000). Specifically, it fails to count sigops within the coinbase input's scriptSig and fails to accumulate aggregate P2SH redeem script sigops during block validation (only doing so during mempool acceptance). Because the reference implementation (zcashd) correctly enforces these limits, a miner can produce a block that Zebra accepts but zcashd rejects. This results in a consensus failure and a network split between Zebra and zcashd nodes. The issue is fixed in Zebra v4.4.0.
Affected products
- ZcashFoundation zebra < 4.4.0
Timeline
- 2026-05-02: disclosed: Initial disclosure to Zcash Foundation
- 2026-05-07: advisory: GitHub Advisory published
- 2026-05-08: other: NVD publication