Description
ZEBRA is a Zcash node written entirely in Rust. Prior to 4.5.0, a consensus-valid block containing a long chain of transparent self-spends to one address can permanently halt Zebra nodes. In zebra-state/src/service/finalized_state/zebra_db/transparent.rs, the finalized-state writer originally applied every newly created output as a credit before applying any spent-output debit from the same block. That credit-first ordering can make the intermediate per-address balance exceed MAX_MONEY even though the final net balance is valid, causing an expect-based panic under the panic equals abort release profile. Because zcashd accepts the triggering block and Zebra encounters it again after every restart, the halt persists until patched software is deployed; exploitation requires mining the specially constructed block and temporarily committing sufficient ZEC to the self-spend chain. This issue is fixed in version 4.5.0.
Published: 2026-08-18
Score: 6.9 Medium
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The vulnerability arises from a logic error in Zebra’s state writer, where it records credit for each new transparent output before debiting spent outputs within the same block. This credit-first ordering can temporarily raise an address’s balance beyond the maximum allowed value during block processing, leading to an abort-triggered panic in a release build. Consequently, the node terminates and remains stalled on every restart until a patched version is deployed.

Affected Systems

Affected deployments are Zcash Foundation’s Zebra full node and zebra-state components running any release prior to version 4.5.0. All nodes that validate consensus blocks and maintain the transparent address balance will be subject to this crash when presented with a specially crafted block containing a long chain of self-spends to a single address.

Risk and Exploitability

The CVSS score of 6.9 indicates moderate severity. The EPSS score is not available and the vulnerability is not listed in the CISA KEV catalog, suggesting no public exploitation yet. However, the precise attack requires an adversary to mine or otherwise inject a consensus‑valid block that performs many consecutive transparent self-spends to a single address, a capability that is limited to participants with block‑mining power or the ability to subvert a mining rig. Once such a block is propagated to any vulnerable node, the node will panic and remain halted until upgraded, effectively denying service to that node and potentially disrupting its participation in the network. The likely attack vector is the network interface that receives new blocks, which is typically exposed to public peers; the description implies an intentional block creation rather than a passive request chain.

Generated by OpenCVE AI on August 18, 2026 at 20:34 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Zebra to version 4.5.0 or newer to apply the patch that corrects the ordering bug.
  • If an immediate upgrade is not possible, isolate the affected node from the network or temporarily block the receipt of new blocks until the upgrade has been applied.
  • After applying the fix, restart the node and monitor its logs for any unexpected panic or abort messages.

Generated by OpenCVE AI on August 18, 2026 at 20:34 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-w834-cf6p-9m9w Zebra: Finalized address balance credit-first overflow on consensus-valid blocks
History

Tue, 18 Aug 2026 19:30:00 +0000

Type Values Removed Values Added
Description ZEBRA is a Zcash node written entirely in Rust. Prior to 4.5.0, a consensus-valid block containing a long chain of transparent self-spends to one address can permanently halt Zebra nodes. In zebra-state/src/service/finalized_state/zebra_db/transparent.rs, the finalized-state writer originally applied every newly created output as a credit before applying any spent-output debit from the same block. That credit-first ordering can make the intermediate per-address balance exceed MAX_MONEY even though the final net balance is valid, causing an expect-based panic under the panic equals abort release profile. Because zcashd accepts the triggering block and Zebra encounters it again after every restart, the halt persists until patched software is deployed; exploitation requires mining the specially constructed block and temporarily committing sufficient ZEC to the self-spend chain. This issue is fixed in version 4.5.0.
Title ZEBRA: Finalized address balance credit-first overflow on consensus-valid blocks
Weaknesses CWE-248
References
Metrics cvssV4_0

{'score': 6.9, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-08-18T19:24:04.945Z

Reserved: 2026-06-08T14:00:43.572Z

Link: CVE-2026-52738

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-18T20:17:17.953

Modified: 2026-08-18T20:17:17.953

Link: CVE-2026-52738

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-18T20:45:04Z

Weaknesses