CVE-2026-52735: Zcash Zebra consensus divergence via P2SH sigop undercount

CVE-2026-52735 · Severity: critical · CVSS 4 · Published 2026-08-18

Zebra is a software node used to validate and participate in the Zcash cryptocurrency network. A flaw in how it counts security operations for certain transaction types allows an attacker to create transactions that Zebra accepts but other network nodes (zcashd) reject. This can lead to a 'chain split,' where the network divides into two incompatible versions, potentially disrupting transactions, mining operations, and the overall stability of the Zcash ecosystem.

Technologies: zebra-script (crates.io), zebrad (crates.io). Vendors: crates.io.

Quick answers

Is CVE-2026-52735 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-52735 being exploited in the wild.
How severe is CVE-2026-52735?
Critical severity, with a CVSS score of 4, published 18 August 2026.
Which products and versions are affected?
zebra-script (crates.io) <= 6.0.1, SEMVER:introduced=0,fixed=7.0.0; zebrad (crates.io) <= 4.4.1, SEMVER:introduced=0,fixed=4.5.0.
Is there a fix for CVE-2026-52735?
Yes. zebra-script (crates.io): upgrade to 7.0.0 or later; zebrad (crates.io): upgrade to 4.5.0 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-52735 attacked?
It is attacked over the network, in a hosted service.
Am I affected by CVE-2026-52735?
Check whether you run zebra-script (crates.io) or zebrad (crates.io) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • zebra-script (crates.io): upgrade to 7.0.0 or later
    cargo update -p zebra-script
  • zebrad (crates.io): upgrade to 4.5.0 or later
    cargo update -p zebrad

Technical details

A consensus divergence exists in Zebra's P2SH sigop counter within the `zebra-script` crate. The pure-Rust parser in `zcash_script` incorrectly short-circuits when encountering disabled opcodes (e.g., OP_CODESEPARATOR), returning a partial sigop count of zero for subsequent operations. In contrast, the reference implementation (zcashd) continues counting through these opcodes during static analysis. An attacker can broadcast transactions with malicious P2SH redeem scripts that cause Zebra to undercount sigops, allowing a block to stay under the MAX_BLOCK_SIGOPS limit for Zebra while exceeding it for zcashd. This results in Zebra nodes accepting blocks that zcashd nodes reject, triggering a chain split. The issue is fixed in Zebra 4.4.2 (zebrad) and 7.0.0 (zebra-script) by routing P2SH sigop counting through the C++ FFI.

Affected products

  • ZcashFoundation zebrad <= 4.4.1
  • ZcashFoundation zebra-script <= 6.0.1

Identifiers

  • CVE-2026-52735
  • GHSA-gf9r-m956-97qx

Timeline

  • 2026-05-29: disclosed: Reported via private GitHub Security Advisory
  • 2026-07-02: advisory: Public advisory published

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.