Executive brief
Zebra, a Zcash node implementation, contains a vulnerability in how it validates certain transaction signatures. A malicious actor could exploit this to cause a 'consensus split,' where Zebra nodes disagree with other nodes on the network about which transactions are valid. This can lead to network partitioning, service disruptions, and potential double-spend attacks, undermining the reliability of the blockchain.
Technical details
A vulnerability exists in Zebra's transparent transaction verification where insufficient error handling during sighash computation leads to a stale buffer being used. When a Rust callback returns 'None' for an undefined hash type, the FFI bridge fails to update the C++ sighash buffer, leaving the digest from a previous valid signature validation intact. An attacker can exploit this by crafting a script with a valid OP_CHECKSIGVERIFY followed by an OP_CHECKSIG using an invalid hash type; Zebra will incorrectly validate the second signature against the stale digest while other implementations (like zcashd) reject it. This results in a consensus split. The issue is fixed in zebrad 4.4.0 and zebra-script 6.0.0.
Affected products
- ZcashFoundation zebra-script <= 5.0.1
- ZcashFoundation zebrad < 4.4.0
Timeline
- 2026-05-02: disclosed
- 2026-05-07: advisory
- 2026-05-08: other: NVD published