Zebra CVE-2026-44497
CRITICALAttack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconCraft transaction with chained signature checks
-
DeliverySubmit via P2P to Zebra 4.3.1 node
-
ExploitFirst OP_CHECKSIGVERIFY primes buffer with valid sighash
-
InstallSecond OP_CHECKSIG triggers invalid hash-type
-
C2Rust callback returns error without clearing buffer
-
ExecuteC++ verifier reads stale buffer
-
ImpactInvalid signature accepted
-
Step 8Consensus divergence from zcashd network
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A04:2025 - Cryptographic Failures
ASVS 5.0
V11 - Cryptography Signature verification
|
| Exploitation Conditions | Exploitation requires the attacker to construct a transparent transaction output with a custom Bitcoin Script containing specific opcode sequencing: a valid signature check operation (OP_CHECKSIGVERIFY or OP_CHECKSIG) that succeeds, immediately followed by another signature check operation (OP_CHECKSIG) using an undefined ZIP 244 V5 hash-type byte. The target Zebra node must be running version 4.3.1 specifically, which contains the prior GHSA-8m29-fpq5-89jj fix that introduced the incomplete error handling. The vulnerability exists only at the Rust-to-C++ FFI boundary during transparent transaction verification, so exploitation is limited to transactions with transparent inputs (not shielded Sapling or Orchard transactions). Network-accessible attack vector with no authentication required-any peer can submit crafted transactions via standard P2P protocol. Exploitation does NOT require miner cooperation, special node configuration, or user interaction, but practical impact depends on network topology: since most Zcash miners currently run zcashd, malicious blocks created by Zebra nodes accepting invalid transactions would likely be orphaned, limiting attacker profit from double-spends unless targeting specific Zebra-dependent services. |
| Impact | This is a critical consensus-layer vulnerability with potential for coordinated network attacks despite no confirmed active exploitation. The vendor rates severity as Critical due to the consensus failure impact class: blockchain consensus vulnerabilities can enable double-spend attacks, miner revenue loss through orphaned blocks on minority chains, and service disruption across the network. Attack complexity is moderate-exploitation requires understanding of Bitcoin Script opcodes, Zcash transaction structure, and the specific OP_CHECKSIGVERIFY-then-OP_CHECKSIG chaining pattern, but the GitHub advisory provides a complete attack blueprint. Real-world risk is currently mitigated by deployment topology: the advisory explicitly notes most Zcash miners run zcashd rather than Zebra, limiting attacker return-on-investment for consensus attacks since minority-chain blocks would be orphaned. However, any infrastructure depending on Zebra for transaction validation (exchanges, payment processors, layer-2 protocols) faces immediate risk of accepting invalid transactions that the broader network rejects. CVSS metrics are not provided, but consensus vulnerabilities typically score CVSS:3.1/AV:N/AC:L/PR:N/UI:N with integrity impact due to network-accessible exploitation without authentication. The technical disclosure is complete with proof-of-concept transaction structure details, lowering the barrier for weaponization. SSVC decision framework indicates this warrants immediate patching: exploitation status is public (PoC available in advisory), automatable (transaction crafting can be scripted), technical impact is total (consensus failure affects all validation outcomes), and mission prevalence is situational (depends on Zebra adoption in critical infrastructure). Patch availability is confirmed with explicit version 4.4.0 fix, making delayed patching indefensible. |
| Exploit ScenarioDerived | An attacker creates a Zcash transaction spending a transparent output secured by a custom script containing two consecutive signature checks: first an OP_CHECKSIGVERIFY with a valid signature and standard SIGHASH_ALL type, immediately followed by OP_CHECKSIG with an identical signature but an undefined hash-type byte not recognized by ZIP 244. When Zebra processes this transaction, the first opcode executes normally-the Rust callback computes the correct sighash, writes it to the C++ buffer, and signature verification succeeds. The second opcode triggers the callback with the invalid hash type, causing it to return None, but the FFI bridge skips the buffer write. The C++ verifier reads the stale buffer containing the prior valid sighash and verifies the signature against it, accepting the transaction. Meanwhile, zcashd nodes correctly reject the transaction due to the undefined hash type. The attacker broadcasts this transaction to partition the network: Zebra nodes accept it into blocks, zcashd nodes reject those blocks, creating competing chain tips and enabling potential double-spend attacks against services relying on Zebra validation. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – May 07, 2026
Consensus divergence in Zebra 4.3.1 enables blockchain network partitioning through crafted transparent transactions with invalid sighash types. Insufficient error handling at the Rust-to-C++ FFI boundary causes Zebra to incorrectly accept transactions with undefined hash types by reusing stale buffer data from prior valid signature checks, while zcashd correctly rejects these transactions. Attackers can exploit this by chaining OP_CHECKSIGVERIFY with OP_CHECKSIG opcodes using invalid hash types to trigger acceptance on Zebra nodes but rejection on zcashd nodes, creating a consensus split that could enable double-spend attacks. Vendor-released patch: 4.4.0. No public exploit identified at time of analysis, but the technical mechanism is fully disclosed in the GitHub advisory GHSA-gq4h-3grw-2rhv.
RemediationAI
Upgrade to Zebra 4.4.0 or later immediately per vendor advisory. The fix implements a defense-in-depth workaround: when the Rust callback rejects an undefined hash type, it fills the sighash buffer with cryptographically secure random bytes from a per-call CSPRNG instead of leaving it unmodified, ensuring signature verification fails with overwhelming probability even if the error signal is lost at the FFI boundary. This approach avoids breaking changes to the zcash_script crate API. Future releases will implement direct error propagation for a definitive fix. Download fixed version from https://github.com/ZcashFoundation/zebra/releases/tag/v4.4.0. No workarounds exist for this vulnerability-the vendor explicitly states immediate upgrade is the only protection against consensus divergence and potential chain forks. For operators unable to upgrade immediately (not recommended), consider temporarily halting transaction acceptance and operating in read-only monitoring mode until patching is complete, though this does not prevent network-level consensus split if other vulnerable nodes exist. Verify upgrade success by confirming version 4.4.0 or later in node logs. Downstream users of zebra-script library must upgrade to version 6.0.0 to address the underlying vulnerability in the FFI layer.
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in cargo
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Zebra is an independent Rust implementation of the Zcash protocol that validates blockchain consensus rules. This vulnerability exists at the foreign function interface (FFI) boundary between Zebra's Rust validation logic and inherited Bitcoin Script verification code in C++. During transparent transaction verification, Zebra computes transaction sighashes via Rust callback and passes them to C++ signature validators. The fix for prior vulnerability GHSA-8m29-fpq5-89jj added validation to reject undefined ZIP 244 V5 hash-type bytes by returning None from the Rust callback. However, the FFI bridge only writes to the C++ sighash buffer when the callback returns Some. When None is returned, the buffer remains unchanged with data from previous operations, and the C++ verifier unconditionally reads this stale buffer without detecting the error condition. CWE-347 (Improper Verification of Cryptographic Signature) accurately captures the root cause: the signature verification logic fails to properly handle invalid inputs, leading to acceptance of cryptographically invalid signatures. The consensus rules for Zcash transaction validation require strict hash-type checking per ZIP 244 specification, and deviation from zcashd's behavior creates exploitable network partitioning.
Know when Jwt Attack gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:H/SC:N/SI:H/SA:H
Primary rating from GitHub Advisory · only source for this CVE.
CVSS VectorGitHub Advisory
Lifecycle Timeline
2DescriptionGitHub Advisory
CVE-2026-44497: Consensus Divergence in Transparent Sighash Hash-Type Handling due to Stale Buffer
Summary
The fix for https://github.com/ZcashFoundation/zebra/security/advisories/GHSA-8m29-fpq5-89jj introduced a separate issue due to insuficient error handling of the case where the sighash type is invalid, during sighash computation. Instead of returning an error, the normal flow would resume, and the input sighash buffer would be left untouched. In scenarios where a previous signature validation could leave a valid sighash in the buffer, an invalid hash-type could be incorrectly accepted, which would create a consensus split between Zebra and zcashd nodes.
Severity
Critical - This is a Consensus Vulnerability that could allow a malicious party to induce network partitioning, service disruption, and potential double-spend attacks against affected nodes.
Note that the impact is currently alleviated by the fact that currently most miners run zcashd.
Affected Versions
Zebra 4.3.1.
Description
Verification of transparent transactions inherits the Bitcoin Script verification code in C++, called from Zebra through a foreign function interface (FFI) with a Rust callback that computes the sighash. The fix for https://github.com/ZcashFoundation/zebra/security/advisories/GHSA-8m29-fpq5-89jj added the missing V5 hash-type consensus check on the Rust side, returning None for undefined hash types. However, the FFI bridge only writes to the C++ sighash buffer when the callback returns Some, and the C++ checker reads that buffer unconditionally, so the failure signal is lost.
An attacker could exploit this by:
- Constructing a transparent output spent by a script that runs a valid
OP_CHECKSIGVERIFYimmediately before anOP_CHECKSIGwith an undefined hash type. - The first opcode primes the C++ sighash buffer with a valid digest; the second causes Zebra's callback to return
Nonewhile the C++ checker verifies the invalid signature against the stale digest. - Zebra accepts the spend, zcashd rejects it, creating a consensus split in the network.
Impact
Consensus Failure
- Attack Vector: Network.
- Effect: Network partition/consensus split.
- Scope: Any affected Zebra node, and any miner or template pipeline that relies on Zebra's validation result.
Fixed Versions
This issue is fixed in 4.4.0.
The fixes uses a workaround where the input buffer is filled with random bytes on validation failure, which makes signature validation fail (as expected) with overwhelming probability. This avoids a breaking release of the zcash_script crate. A future release will propagate the error correctly for a direct fix.
Mitigation
Users should upgrade to 4.4.0 or later immediately.
There are no known workarounds for this issue. Immediate upgrade is the only way to ensure the node remains on the correct consensus path and is protected against malicious chain forks.
Credits
Zebra thanks @sangsoo-osec for finding and reporting the issue.
Executive ViewAI
Zebra 4.3.1 contains a critical consensus vulnerability that allows attackers to partition the Zcash blockchain network by crafting transactions accepted by Zebra but rejected by zcashd, potentially enabling double-spend attacks. Organizations operating Zebra nodes face immediate risk of transactional inconsistency and network divergence, directly threatening the integrity of blockchain operations and financial settlement finality.
Vendor-released patch: 4.4.0. Immediate mitigation: disable Zebra 4.3.1 nodes from accepting or propagating transactions; route all transaction validation through zcashd nodes until upgrade completes. Monitor for consensus divergence via dual-node validation of incoming transactions.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Affected Products (CPE)GitHub Advisory
More in Jwt Attack
View allWhy is Microsoft republishing a CVE from 2013? We are republishing CVE-2013-3900 in the Security Update Guide to update
Authentication bypass in SimpleHelp 5.5.15 and prior (plus 6.0 pre-release builds) allows remote unauthenticated attacke
Authentication bypass in WSO2 API Manager and related components (Universal Gateway, Traffic Manager, API Control Plane,
Authentication bypass in Fortinet FortiOS, FortiProxy, and FortiSwitchManager allows unauthenticated remote attackers to
ruby-saml provides security assertion markup language (SAML) single sign-on (SSO) for Ruby. Rated critical severity (CVS
Security feature bypass in Microsoft .NET (shipped via Visual Studio 2022 17.12/17.14 and Visual Studio 2026 18.7) lets
ruby-saml provides security assertion markup language (SAML) single sign-on (SSO) for Ruby. Rated critical severity (CVS
The package jsrsasign before 10.5.25 are vulnerable to Improper Verification of Cryptographic Signature when JWS or JWT
Authentication and authorization bypass in fast-jwt 6.2.0 through 6.2.4 (npm, NearForm) lets a remote, unauthenticated a
A library injection vulnerability exists in Microsoft Teams (work or school) 24046.2813.2770.1094 for macOS. Rated criti
A library injection vulnerability exists in the WebView.app helper app of Microsoft Teams (work or school) 24046.2813.27
A library injection vulnerability exists in the com.microsoft.teams2.modulehost.app helper app of Microsoft Teams (work
GHSA-gq4h-3grw-2rhv
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB