Loading...
Skip to main content

CVE-2026-52733 — Vulnerability in zebrad — CVE Details

MEDIUM

zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip

Published July 2, 2026Updated July 2, 2026Source: osv

Summary

### Am I affected You are affected if: 1. You run `zebrad` up to and including `v4.4.1`. 2. Your node participates in a network where chain forks occur (mainnet, testnet, or any network with multiple miners). All default configurations are affected. The corruption persists across restarts because it is written to RocksDB. ### Summary When `pop_tip` removes the tip block during a chain fork, stale Sapling and Orchard note commitment subtree root data is retained in the in-memory non-finalized state. When the chain subsequently finalizes, this stale data is written to the persistent RocksDB state. The corrupted subtree root history affects `z_getsubtreesbyindex` (used by lightwalletd for wallet synchronization) and could affect future chain verification that depends on correct subtree roots. ### Details The non-finalized state provides two methods for removing blocks: `pop_root` (removes the oldest block during finalization) and `pop_tip` (removes the newest block during a fork revert). `pop_root` correctly cleans up note commitment subtree contributions. `pop_tip` does not: it removes the block but retains the block's subtree root contributions in the in-memory state. When a chain fork occurs and `pop_tip` reverts the old tip, the winning fork's chain is extended. When that chain is later finalized, the stale subtree data from the reverted blocks is included in the RocksDB write batch and persisted to disk. The `pop_root`/`pop_tip` asymmetry is specific to subtree root handling. Other state managed by `pop_tip` (nullifiers, UTXOs, anchors, block hashes) uses different cleanup patterns that are not affected. ### Patches zebra-state 7.0.0 and zebrad 4.5.0. The fix adds subtree root cleanup to `pop_tip` matching the pattern already used by `pop_root`. ### Workarounds There is no configuration-level workaround. Chain forks are natural events on any Proof-of-Work network. Operators can mitigate the downstream impact by periodically verifying subtree root consistency using `z_getsubtreesbyindex` against a known-good reference. ### Impact Persistent corruption of Sapling and Orchard subtree root history in the RocksDB state database. The corruption survives node restarts. Downstream consumers that rely on `z_getsubtreesbyindex` for wallet synchronization (primarily `lightwalletd` and light wallets) receive incorrect subtree roots. This does not directly affect consensus validation of new blocks but can cause wallet synchronization failures or incorrect wallet state. Recovery requires rebuilding the state database from scratch. ### Credit Reported by `@dingledropper` via a private GitHub Security Advisory submission.

Advisory Timeline

  • First published July 2, 2026 (102 days ago).
  • Last revised July 2, 2026 — 0 days after initial publication.

Remediation

Upgrade to the fixed version using your package manager.

Cargo
Update zebrad to 4.5.0 or later
cargo update -p zebrad --precise 4.5.0
Cargo
Update zebra-state to 7.0.0 or later
cargo update -p zebra-state --precise 7.0.0

After upgrading, run your dependency scanner again to confirm the vulnerability is resolved.

Affected Packages (2)

Affects 1 ecosystem: crates.io (2).

PackageEcosystemAffectedFixed In
zebrad
crates.io
All versions4.5.0
zebra-state
crates.io
All versions7.0.0

Vulnerability Classification

Common Weakness Enumeration (CWE) identifiers for this vulnerability type.

CVSS Score Breakdown

What the CVSS (Common Vulnerability Scoring System) 6.5 score means for each attack dimension.

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
High
Availability
Low

CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:L

Frequently Asked Questions

What is CVE-2026-52733?
zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip This vulnerability has been assigned a severity rating of MEDIUM (CVSS score: 6.5/10).
How do I check if my project is affected by CVE-2026-52733?
CVE-2026-52733 affects zebrad and zebra-state. Use GeekWala's free vulnerability scanner to check your dependencies against CVE-2026-52733 and 200,000+ other known vulnerabilities.

Severity & Exploitability

CVSS Score
6.5

Exploitation requires specific conditions or has limited impact. Remediate within weeks.

Also Known As

GHSA-2gf8-q9rr-jq3h

Related CVEs

  • CVE-2026-34202
    CRITICAL

    Zebra node crash — V5 transaction hash panic (P2P reachable)

  • CVE-2026-54496
    CRITICAL

    Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness

  • CVE-2026-34377
    HIGH

    Zebra has a Consensus Failure due to Improper Verification of V5 Transactions

  • CVE-2026-52736
    HIGH

    Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache

  • CVE-2026-40880
    HIGH

    Zebra: Cached Mempool Verification Bypasses Consensus Rules for Ahead-of-Tip Blocks

  • CVE-2026-41585
    MEDIUM

    Zebra Vulnerable to Denial of Service via Interrupted JSON-RPC Requests from Authenticated Clients

  • CVE-2026-52739
    MEDIUM

    Zebra: Repeated Non-Finalized Shielded Transaction Aborts Zebra Before Duplicate-Nullifier Rejection

  • CVE-2026-52731
    MEDIUM

    zebrad has full node denial of service via non-ASCII LongPollId in getblocktemplate

Check if you're affected

Scan your dependencies to see if this vulnerability affects your projects.

Scan Your Dependencies