CVE-2026-52735
Received Received - Intake

Zcash Zebra Block Consensus Split via P2SH SigOp Miscount

Vulnerability report for CVE-2026-52735, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-08-18

Last updated on: 2026-08-18

Assigner: GitHub, Inc.

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.

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-08-18
Last Modified
2026-08-18
Generated
2026-08-19
AI Q&A
2026-08-18
EPSS Evaluated
N/A
NVD
EUVD

Affected Vendors & Products

Showing 4 associated CPEs
Vendor Product Version / Range
zebra zebra 4.5.0
zcashfoundation zebra to 4.5.0 (exc)
zcashfoundation zebra From 4.4.2 (inc)
zcashfoundation zebra 4.5.0

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-684 The code does not function according to its published specifications, potentially leading to incorrect usage.

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

CVE-2026-52735 is a consensus divergence vulnerability in Zebra, a Rust-based Zcash node. It occurs because Zebra and zcashd (the reference implementation) count signature operations (sigops) in P2SH transactions differently when disabled opcodes like OP_CODESEPARATOR are present. Zebra stops counting sigops after encountering a disabled opcode, while zcashd continues counting. This can lead to Zebra accepting blocks that zcashd rejects if the block exceeds the 20,000 sigops limit on one side but not the other.

Detection Guidance

Check Zebra version with 'zebrad --version'. If below 4.5.0, the system is vulnerable. Monitor for chain splits by comparing block acceptance between Zebra and zcashd nodes. Look for 'bad-blk-sigops' errors in zcashd logs.

Impact Analysis

This vulnerability can cause a chain split where Zebra validators accept a block while zcashd validators reject it. If exploited, it may disrupt network integrity and availability. Attackers can broadcast transactions that trigger this discrepancy without needing mining power or special privileges, only requiring the ability to pay transaction fees. Users running affected Zebra versions risk participating in a fragmented network.

Mitigation Strategies

Upgrade Zebra to version 4.5.0 or later immediately. Ensure all nodes in the network run the patched version to prevent consensus divergence. Monitor network forks and validate block acceptance between Zebra and zcashd nodes.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-52735. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart