Skip to main content
VulnerabilityPublished

CVE-2026-52735: Zebra script · zebrad has consensus divergence via P2SH sigop undercount in pure-Rust disabled-opcode parser

Affects zebra-scriptSource GCVE Database

0
Compare
Authoritative record:CVE-2026-52735· Critical 9.3

Not known to be exploited · CVSS 9.3 Critical : upgrade to 7.0.0 as a priority.

Data as of 30 Oct 2026, 06:59 UTC

CVSS 4.0 base score
9.3Critical
How severe the flaw is on the 0–10 CVSS scale.
EPSS
0.5% chance of exploitation in 30 days – higher than 43% of CVEsExploit Prediction Scoring System: the likelihood attackers will use this flaw soon.
Patch
Available – fixed in 7.0.0, 4.5.0
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:H/SA:H

Exploitation evidence

  1. Disclosed: evidence found.

    CVE published 18 Aug 2026

  2. Detectable: no evidence on record.

    No public nuclei template indexed

  3. Weaponized: no evidence on record.

    No public exploit code indexed in Metasploit or Exploit-DB

  4. Exploited in the wild: no evidence on record.

    Not in CISA KEV and no source reports exploitation

  5. Observed by OffSeq Mirage: no evidence on record.

    No attack traffic recorded by OffSeq Mirage sensors

A missing step is not evidence of safety. Sources: cve.org (opens in a new tab), the Metasploit, Exploit-DB and nuclei-templates index as of 29 Oct 2026.

What to do

Upgrade zebra-script to 7.0.0; zebrad to 4.5.0.

Affected software

ProductAffectedFixed in
crates.iozebra-scriptAffected
  • <7.0.0
Fixed in
  • 7.0.0
crates.iozebradAffected
  • <4.5.0
Fixed in
  • 4.5.0

Check your own hosts for these packages with threat-finder (opens in a new tab), our free open-source scanner.

AI-suggested

A patch is available in Zebra version 4.4.2 that corrects the P2SH sigop counting by using the C++ FFI method consistent with the legacy sigop counter. There is no configuration-level workaround; all Zebra nodes validating blocks on networks shared with zcashd are affected until upgraded. Operators should upgrade to Zebra 4.4.2 or later as soon as possible to prevent chain splits.

Description

ZEBRA is a Zcash node written entirely in Rust. Prior to 4.5.0, Zebra can accept a block that zcashd rejects because the P2SH signature-operation counter undercounts redeem scripts containing a disabled opcode followed by signature opcodes. In zebra-script/src/lib.rs, p2sh_input_sigop_count used the pure-Rust script::Code::sig_op_count path, whose try_fold parser stops at disabled opcodes such as OP_CODESEPARATOR and returns only the partial count accumulated before the error. The zcashd reference implementation continues static signature-operation counting through disabled opcodes, so an attacker can broadcast P2SH spends that Zebra counts below MAX_BLOCK_SIGOPS while zcashd counts above the 20,000-operation limit. If a Zebra miner includes those transactions, Zebra validators accept the block while zcashd validators reject it, creating a consensus chain split that affects network integrity and availability without requiring the attacker to produce a block. This issue is fixed in version 4.5.0.

References

Community reviews

Loading reviews…