zebrad
Zcash - Financial Privacy in Rust 🦓
Activity
- Latest release
- 1mo ago
- Total releases
- 47
- Cadence
- ~18 days
- Last 12 months
- 24
Reach
- Downloads
- 25.4k
- Stars
- 596
Details
- License
- MIT OR Apache-2.0
- First release
- Apr 18, 2023
| Version | Released | |
|---|---|---|
6.3.0
minor
|
6.3.0
minor
Dependencies (92)
+ 84 more
Changelog
Compare changes
|
|
6.2.3
unknown
|
6.2.3
unknown
Dependencies (92)
+ 84 more
Changelog
Compare changes
|
|
6.2.2
unknown
|
6.2.2
unknown
Dependencies (92)
+ 84 more
Changelog
Compare changes
|
|
6.2.1
unknown
|
6.2.1
unknown
Dependencies (92)
+ 84 more
Changelog
Compare changes
|
|
6.2.0
unknown
|
6.2.0
unknown
Dependencies (92)
+ 84 more
Changelog
Compare changes
|
|
6.1.0
unknown
|
6.1.0
unknown
Dependencies (85)
+ 77 more
Changelog
Compare changes
|
|
6.0.0
unknown
|
6.0.0
unknown
Dependencies (91)
+ 83 more
Changelog
Compare changes
|
|
6.0.0-rc.0
unknown
|
6.0.0-rc.0
unknown
Dependencies (91)
+ 83 more
Changelog
Compare changes
|
|
5.2.0
unknown
|
5.2.0
unknown
Dependencies (91)
+ 83 more
Changelog
Compare changes
|
|
5.1.1
unknown
|
5.1.1
unknown
Dependencies (91)
+ 83 more
Changelog
Compare changes
|
|
5.1.0
unknown
|
5.1.0
unknown
Dependencies (91)
+ 83 more
Changelog
Compare changes
|
|
5.0.0
unknown
|
5.0.0
unknown
Dependencies (91)
+ 83 more
Changelog
Compare changes
|
|
4.5.1
unknown
1 CVE
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev |
4.5.1
unknown
Dependencies (91)
+ 83 more
Changelog
Compare changes
|
|
4.5.0
unknown
1 CVE
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev |
4.5.0
unknown
Dependencies (91)
+ 83 more
Changelog
Compare changes
|
|
4.4.1
unknown
14 CVEs
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev
CVE-2026-52829
GHSA-63wg-wjjj-7cp8
Jul 02, 2026
Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryAn address normalization mismatch between the handshake path and the mempool misbehavior path causes a deterministic assertion panic when a peer connects via IPv4 to a dual-stack IPv6 listener and then triggers a mempool misbehavior penalty. The handshake path canonicalizes IPv4-mapped IPv6 addresses to plain IPv4 when storing the peer in the address book via DetailsOn Linux with The handshake path uses After the 30-second misbehavior batch flush, The attacker needs only to complete a P2P handshake over IPv4 to a dual-stack listener and advertise an invalid mempool transaction (such as a coinbase transaction). The assertion fires after the 30-second misbehavior batch flush. PatchesPatched in Zebra 4.5.0. The fix canonicalizes the address in the misbehavior update path via a new WorkaroundsConfiguring ImpactA remote unauthenticated peer can deterministically crash any synced Zebra node running the default Linux dual-stack configuration with a single invalid mempool transaction advertisement, followed by a 30-second wait. The attack requires no mining capability, no RPC access, no funds, and no special privileges. The crash can be repeated after each restart, causing persistent downtime. Linux dual-stack sockets and mempool activation are the default production state, not special preconditions. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52734
GHSA-65jj-fmw8-468q
Jul 02, 2026
zebrad has unbounded memory leak in mempool download pipeline via timeout path cancel_handles retention
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryThe mempool download pipeline's Details
The only cleanup paths for For direct PatchesThe fix preserves the WorkaroundsThere is no configuration-level workaround. Restarting the node clears the accumulated entries. Operators running in memory-constrained environments (containers with cgroup limits) may see the process killed by the OOM killer before natural recovery. ImpactGradual, unbounded memory exhaustion of a Zebra node from unauthenticated P2P traffic. The leak is monotonic (entries are never freed under normal operation) but slow (~685 KB/s per connection worst case). An attacker must sustain traffic for hours to exhaust typical server memory. The node continues operating normally until memory pressure becomes critical, at which point the OS OOM killer terminates the process or the node degrades due to swap pressure. No consensus impact, no fund loss, no on-disk corruption. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52733
GHSA-2gf8-q9rr-jq3h
Jul 02, 2026
zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip
6.5
/ 10
Medium
Network
High
None
None
Unchanged
None
High
Low
Am I affectedYou are affected if:
All default configurations are affected. The corruption persists across restarts because it is written to RocksDB. SummaryWhen DetailsThe non-finalized state provides two methods for removing blocks: When a chain fork occurs and The Patcheszebra-state 7.0.0 and zebrad 4.5.0. The fix adds subtree root cleanup to WorkaroundsThere 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 ImpactPersistent corruption of Sapling and Orchard subtree root history in the RocksDB state database. The corruption survives node restarts. Downstream consumers that rely on CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52739
GHSA-hhm7-qrv5-h4r6
Jul 02, 2026
Zebra: Repeated Non-Finalized Shielded Transaction Aborts Zebra Before Duplicate-Nullifier Rejection
5.9
/ 10
Medium
Network
High
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
All default configurations are affected. Summary
The block should be rejected with a duplicate-nullifier contextual validation error. Instead, the ordering of index updates within DetailsIn
The shielded nullifier uniqueness check at step 3 would correctly reject the duplicate transaction. But the The block transaction verifier does not run the best-chain nullifier query for block transactions — that check is gated on mempool transactions only ( There are two attack models: Model A (two attacker blocks): The attacker mines two consecutive valid-work blocks: parent B1 containing a shielded transaction T, and child B2 repeating T. This requires controlling both blocks consecutively. Model B (one attacker block after an honest block): The attacker broadcasts a shielded transaction T into the mempool. When any honest miner includes T in their block B1, the attacker only needs to mine the next child block B2 containing the same T. This requires controlling only one block immediately after an honest block that included the attacker's transaction. The attacker can broadcast a suitable shielded transaction every block until one is included by an honest miner, then attempt to mine the follow-up. Both models require the child block to repeat the shielded-only V5 transaction while the parent is still in non-finalized state. Patcheszebra-state 7.0.0 and zebrad 4.5.0. Replace the
WorkaroundsThere is no configuration-level workaround. The assert is in the non-finalized state push path, which is exercised by all block processing past the checkpoint height. ImpactA malicious block producer can crash targeted Zebra nodes. There are two attack models: In the first model, the attacker mines two consecutive valid-work blocks where the child repeats a shielded transaction from the parent. At 10% hashrate, the attacker has approximately 11.5 opportunities per day; at 5%, approximately 2.9 per day; at 1%, approximately one every 8.7 days. In the second model, the attacker broadcasts a shielded transaction into the mempool and waits for any honest miner to include it. The attacker then only needs to mine the next block containing the same transaction. This is cheaper because the attacker does not need to mine the parent block. At 10% hashrate, the attacker has approximately 14.4 single-block opportunities per day; at 5%, approximately 7.2 per day; at 1%, approximately 1.4 per day. The crash is a process abort (not recoverable within the process). The node must be restarted. Repeated attacks can keep a node down for extended periods. This is a liveness issue, not a consensus divergence: zcashd cleanly rejects the invalid child block while Zebra aborts. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52738
GHSA-w834-cf6p-9m9w
Jul 02, 2026
Zebra: Finalized address balance credit-first overflow on consensus-valid blocks
Medium
Network
Low
None
None
Am I affectedYou are affected if:
SummaryThe finalized transparent address balance writer processes all newly-created outputs (credits) before processing spent outputs (debits) within the same block. A consensus-valid block containing a long chain of same-address transparent self-spends can cause the intermediate per-address balance during the credit pass to exceed Because the triggering block is consensus-valid (zcashd accepts it), the panic recurs on restart when the node re-encounters the same block. This creates a persistent chain halt that can only be resolved by a software patch. DetailsThe finalized state writer at The code panics on the intermediate overflow via An attacker with approximately 1,100–2,100 ZEC and mining capability can construct a block that permanently halts all Zebra nodes. The attacker recovers their capital (the self-spends return funds to the same address), so the net cost is the mining effort only. PatchesPatched in Zebra 4.4.2. The fix processes credits and debits together per transaction rather than all credits then all debits, matching zcashd's approach. WorkaroundsNo workaround is available. Upgrade to Zebra 4.4.2. ImpactA single consensus-valid mined block can permanently halt all Zebra nodes on the network. The halt persists across restarts. Recovery requires deploying a patched version. Downstream consumers (light wallets, exchanges, mining infrastructure) lose service for the duration of the halt. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52737
GHSA-gvjc-3w7c-92jx
Jul 02, 2026
Zebra has sync restart poisoning from single unauthenticated peer via above-lookahead block
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryA malicious peer can answer Zebra's outbound On mainnet, each successful cycle imposes a 67-second sync restart delay. All in-flight downloads from honest peers are cancelled on each restart. DetailsThe bug is the interaction of three layers:
The attacker needs only an unauthenticated P2P connection (post-handshake), a tiny payload (one two-hash Additionally, several other pre-consensus sync-layer errors had zero misbehaviour scores even when peer-attributed. Contextual validation failures ( PatchesPatched in Zebra 4.4.2. The fix:
WorkaroundsNo configuration-level workaround is available. The attack is mitigated by having a diverse honest peer set, but cannot be prevented while the vulnerable code is running. ImpactA single unauthenticated peer can repeatedly stall a syncing Zebra node by forcing 67-second global sync restart cycles. All unrelated in-flight downloads are cancelled on each restart. The node does not crash and no state is corrupted, but sync progress is significantly degraded for the duration of the attack. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52735
GHSA-gf9r-m956-97qx
Jul 02, 2026
zebrad has consensus divergence via P2SH sigop undercount in pure-Rust disabled-opcode parser
Critical
Network
Low
None
None
Am I affectedYou are affected if:
All default configurations are affected. No feature flags, non-default settings, or special build options are required. SummaryZebra's P2SH sigop counter uses a pure-Rust code path that short-circuits on disabled opcodes (such as An attacker can exploit this without mining capability. Broadcasting transactions that spend P2SH outputs with malicious redeem scripts is sufficient; any Zebra miner who includes those transactions in a block triggers a chain split between Zebra and zcashd validators. DetailsThe P2SH sigop counter at The Rust parser in zcashd's A redeem script of PatchesPatched in Zebra 4.4.2. The fix routes the P2SH sigop counter through the same C++ FFI already used by the legacy sigop counter. WorkaroundsThere is no configuration-level workaround. All Zebra nodes validating blocks on a network shared with zcashd are affected. Upgrade as soon as the patched version is available. ImpactA chain split between Zebra and zcashd validators. The attacker broadcasts spending transactions referencing P2SH outputs whose redeem scripts contain a disabled opcode followed by The attacker does not need mining capability, RPC access, or any special privileges. The cost is the transaction fees for the funding and spending transactions. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52736
GHSA-4m69-67m6-prqp
Jul 02, 2026
Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache
High
Network
Low
None
None
DescriptionAm I affectedYou are affected if:
All default configurations are affected. SummaryZebra records a block hash in DetailsZIP-244 defines The attack flow over P2P:
A secondary variant exists where chain pruning (via PatchesPatched in Zebra 4.4.2. The fix removes stale entries from WorkaroundsThere is no complete configuration-level workaround. Reducing the node's inbound peer count ( ImpactA remote unauthenticated P2P peer can permanently stall a targeted Zebra node at a specific block height. The node diverges from the network tip; downstream consumers (lightwalletd, wallets, explorers, mining infrastructure) relying on the node see a stalled chain. The attack requires winning a propagation race: delivering the poisoned block body before honest peers deliver the canonical block. A well-positioned attacker (low-latency connection to the target, observation of new blocks from other peers) can reliably win this race. In sustained form, the attacker repeats for each new block, keeping the target permanently behind. Recovery requires restarting the node (which clears the in-memory sent-hash cache) or waiting for a reorg at the affected height (rare on the canonical chain). CreditReported independently by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-h72h-ppcx-998p
Jul 02, 2026
Zebra has pre-handshake buffer capacity reservation based on attacker-claimed body length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe P2P codec's However, Zebra's existing mitigations further constrain the practical attack surface: per-IP connection limits ( DetailsAt No legitimate Zcash handshake message ( PatchesThe fix defers large buffer reservations until after the handshake completes, or caps the per-message reservation for pre-handshake messages to what WorkaroundsNo workaround is needed. The existing per-IP rate limiting, handshake timeout, and connection limits effectively mitigate the practical impact. ImpactMinimal. The reservation affects virtual address space only, not physical memory. Zebra's existing connection-management mitigations (per-IP limits, accept rate, handshake timeout) further constrain the attack. The code path is worth cleaning up for defense-in-depth but does not produce a measurable denial-of-service effect. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52732
GHSA-4fc2-h7jh-287c
Jul 02, 2026
zebrad has mempool transaction admission denial via single-peer inbound queue saturation
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryA single unauthenticated P2P peer can monopolize all 25 inbound mempool download/verification slots ( DetailsThe mempool download/verification pipeline at
The attacker sends Two additional slot-holding techniques have been independently demonstrated: invalid-prevout transactions that park in Patcheszebrad 4.5.0 The fix adds per-peer queue accounting to the mempool download pipeline. A single peer is limited to a fraction of WorkaroundsThere is no complete configuration-level workaround. Reducing ImpactMempool transaction admission is denied for all honest peers and local RPC clients while the attack is sustained. Block validation and chain synchronization continue normally. The attacker needs only one TCP connection and minimal bandwidth (~1 KB/s of fake CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
GHSA-c8w6-x74f-vmg3
Jul 02, 2026
zebrad vulnerable to full node denial of service via crafted Sapling receiver in z_listunifiedreceivers
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe Details
At The same crate already handles this correctly in Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-443g-gwgp-49x4
Jul 02, 2026
zebrad vulnerable to getblocks/getheaders locator CPU amplification via uncapped vector length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe A single maximally-sized DetailsThe A legitimate block locator is logarithmic in chain length (approximately 30 hashes for the current ~3M-block Zcash chain). Zebra's own send-side cap is The practical impact requires significant attacker bandwidth (approximately 2 MiB per request) and multiple Sybil peers to meaningfully degrade the blocking pool, which limits real-world exploitability. PatchesPatched in Zebra 4.4.2. The fix caps WorkaroundsNo specific workaround is needed. Existing backpressure mechanisms (load shedding, sequential per-peer message processing, connection limits) constrain the practical impact. ImpactUnder sustained load from multiple Sybil peers, oversized locator vectors can occupy blocking-pool threads and degrade state-read performance. The effect is bounded by connection limits and requires significant attacker bandwidth. CreditVulnerability identified by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52731
GHSA-qv2r-v3mx-f4pf
Jul 02, 2026
zebrad has full node denial of service via non-ASCII LongPollId in getblocktemplate
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe DetailsThe Under the Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace byte-index string slicing with character-aware parsing or validate that the Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev |
4.4.1
unknown
Dependencies (89)
+ 81 more
Changelog
Compare changes
|
|
4.4.0
unknown
15 CVEs
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev
CVE-2026-52829
GHSA-63wg-wjjj-7cp8
Jul 02, 2026
Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryAn address normalization mismatch between the handshake path and the mempool misbehavior path causes a deterministic assertion panic when a peer connects via IPv4 to a dual-stack IPv6 listener and then triggers a mempool misbehavior penalty. The handshake path canonicalizes IPv4-mapped IPv6 addresses to plain IPv4 when storing the peer in the address book via DetailsOn Linux with The handshake path uses After the 30-second misbehavior batch flush, The attacker needs only to complete a P2P handshake over IPv4 to a dual-stack listener and advertise an invalid mempool transaction (such as a coinbase transaction). The assertion fires after the 30-second misbehavior batch flush. PatchesPatched in Zebra 4.5.0. The fix canonicalizes the address in the misbehavior update path via a new WorkaroundsConfiguring ImpactA remote unauthenticated peer can deterministically crash any synced Zebra node running the default Linux dual-stack configuration with a single invalid mempool transaction advertisement, followed by a 30-second wait. The attack requires no mining capability, no RPC access, no funds, and no special privileges. The crash can be repeated after each restart, causing persistent downtime. Linux dual-stack sockets and mempool activation are the default production state, not special preconditions. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52734
GHSA-65jj-fmw8-468q
Jul 02, 2026
zebrad has unbounded memory leak in mempool download pipeline via timeout path cancel_handles retention
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryThe mempool download pipeline's Details
The only cleanup paths for For direct PatchesThe fix preserves the WorkaroundsThere is no configuration-level workaround. Restarting the node clears the accumulated entries. Operators running in memory-constrained environments (containers with cgroup limits) may see the process killed by the OOM killer before natural recovery. ImpactGradual, unbounded memory exhaustion of a Zebra node from unauthenticated P2P traffic. The leak is monotonic (entries are never freed under normal operation) but slow (~685 KB/s per connection worst case). An attacker must sustain traffic for hours to exhaust typical server memory. The node continues operating normally until memory pressure becomes critical, at which point the OS OOM killer terminates the process or the node degrades due to swap pressure. No consensus impact, no fund loss, no on-disk corruption. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52733
GHSA-2gf8-q9rr-jq3h
Jul 02, 2026
zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip
6.5
/ 10
Medium
Network
High
None
None
Unchanged
None
High
Low
Am I affectedYou are affected if:
All default configurations are affected. The corruption persists across restarts because it is written to RocksDB. SummaryWhen DetailsThe non-finalized state provides two methods for removing blocks: When a chain fork occurs and The Patcheszebra-state 7.0.0 and zebrad 4.5.0. The fix adds subtree root cleanup to WorkaroundsThere 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 ImpactPersistent corruption of Sapling and Orchard subtree root history in the RocksDB state database. The corruption survives node restarts. Downstream consumers that rely on CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52739
GHSA-hhm7-qrv5-h4r6
Jul 02, 2026
Zebra: Repeated Non-Finalized Shielded Transaction Aborts Zebra Before Duplicate-Nullifier Rejection
5.9
/ 10
Medium
Network
High
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
All default configurations are affected. Summary
The block should be rejected with a duplicate-nullifier contextual validation error. Instead, the ordering of index updates within DetailsIn
The shielded nullifier uniqueness check at step 3 would correctly reject the duplicate transaction. But the The block transaction verifier does not run the best-chain nullifier query for block transactions — that check is gated on mempool transactions only ( There are two attack models: Model A (two attacker blocks): The attacker mines two consecutive valid-work blocks: parent B1 containing a shielded transaction T, and child B2 repeating T. This requires controlling both blocks consecutively. Model B (one attacker block after an honest block): The attacker broadcasts a shielded transaction T into the mempool. When any honest miner includes T in their block B1, the attacker only needs to mine the next child block B2 containing the same T. This requires controlling only one block immediately after an honest block that included the attacker's transaction. The attacker can broadcast a suitable shielded transaction every block until one is included by an honest miner, then attempt to mine the follow-up. Both models require the child block to repeat the shielded-only V5 transaction while the parent is still in non-finalized state. Patcheszebra-state 7.0.0 and zebrad 4.5.0. Replace the
WorkaroundsThere is no configuration-level workaround. The assert is in the non-finalized state push path, which is exercised by all block processing past the checkpoint height. ImpactA malicious block producer can crash targeted Zebra nodes. There are two attack models: In the first model, the attacker mines two consecutive valid-work blocks where the child repeats a shielded transaction from the parent. At 10% hashrate, the attacker has approximately 11.5 opportunities per day; at 5%, approximately 2.9 per day; at 1%, approximately one every 8.7 days. In the second model, the attacker broadcasts a shielded transaction into the mempool and waits for any honest miner to include it. The attacker then only needs to mine the next block containing the same transaction. This is cheaper because the attacker does not need to mine the parent block. At 10% hashrate, the attacker has approximately 14.4 single-block opportunities per day; at 5%, approximately 7.2 per day; at 1%, approximately 1.4 per day. The crash is a process abort (not recoverable within the process). The node must be restarted. Repeated attacks can keep a node down for extended periods. This is a liveness issue, not a consensus divergence: zcashd cleanly rejects the invalid child block while Zebra aborts. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52738
GHSA-w834-cf6p-9m9w
Jul 02, 2026
Zebra: Finalized address balance credit-first overflow on consensus-valid blocks
Medium
Network
Low
None
None
Am I affectedYou are affected if:
SummaryThe finalized transparent address balance writer processes all newly-created outputs (credits) before processing spent outputs (debits) within the same block. A consensus-valid block containing a long chain of same-address transparent self-spends can cause the intermediate per-address balance during the credit pass to exceed Because the triggering block is consensus-valid (zcashd accepts it), the panic recurs on restart when the node re-encounters the same block. This creates a persistent chain halt that can only be resolved by a software patch. DetailsThe finalized state writer at The code panics on the intermediate overflow via An attacker with approximately 1,100–2,100 ZEC and mining capability can construct a block that permanently halts all Zebra nodes. The attacker recovers their capital (the self-spends return funds to the same address), so the net cost is the mining effort only. PatchesPatched in Zebra 4.4.2. The fix processes credits and debits together per transaction rather than all credits then all debits, matching zcashd's approach. WorkaroundsNo workaround is available. Upgrade to Zebra 4.4.2. ImpactA single consensus-valid mined block can permanently halt all Zebra nodes on the network. The halt persists across restarts. Recovery requires deploying a patched version. Downstream consumers (light wallets, exchanges, mining infrastructure) lose service for the duration of the halt. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52737
GHSA-gvjc-3w7c-92jx
Jul 02, 2026
Zebra has sync restart poisoning from single unauthenticated peer via above-lookahead block
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryA malicious peer can answer Zebra's outbound On mainnet, each successful cycle imposes a 67-second sync restart delay. All in-flight downloads from honest peers are cancelled on each restart. DetailsThe bug is the interaction of three layers:
The attacker needs only an unauthenticated P2P connection (post-handshake), a tiny payload (one two-hash Additionally, several other pre-consensus sync-layer errors had zero misbehaviour scores even when peer-attributed. Contextual validation failures ( PatchesPatched in Zebra 4.4.2. The fix:
WorkaroundsNo configuration-level workaround is available. The attack is mitigated by having a diverse honest peer set, but cannot be prevented while the vulnerable code is running. ImpactA single unauthenticated peer can repeatedly stall a syncing Zebra node by forcing 67-second global sync restart cycles. All unrelated in-flight downloads are cancelled on each restart. The node does not crash and no state is corrupted, but sync progress is significantly degraded for the duration of the attack. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52735
GHSA-gf9r-m956-97qx
Jul 02, 2026
zebrad has consensus divergence via P2SH sigop undercount in pure-Rust disabled-opcode parser
Critical
Network
Low
None
None
Am I affectedYou are affected if:
All default configurations are affected. No feature flags, non-default settings, or special build options are required. SummaryZebra's P2SH sigop counter uses a pure-Rust code path that short-circuits on disabled opcodes (such as An attacker can exploit this without mining capability. Broadcasting transactions that spend P2SH outputs with malicious redeem scripts is sufficient; any Zebra miner who includes those transactions in a block triggers a chain split between Zebra and zcashd validators. DetailsThe P2SH sigop counter at The Rust parser in zcashd's A redeem script of PatchesPatched in Zebra 4.4.2. The fix routes the P2SH sigop counter through the same C++ FFI already used by the legacy sigop counter. WorkaroundsThere is no configuration-level workaround. All Zebra nodes validating blocks on a network shared with zcashd are affected. Upgrade as soon as the patched version is available. ImpactA chain split between Zebra and zcashd validators. The attacker broadcasts spending transactions referencing P2SH outputs whose redeem scripts contain a disabled opcode followed by The attacker does not need mining capability, RPC access, or any special privileges. The cost is the transaction fees for the funding and spending transactions. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52736
GHSA-4m69-67m6-prqp
Jul 02, 2026
Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache
High
Network
Low
None
None
DescriptionAm I affectedYou are affected if:
All default configurations are affected. SummaryZebra records a block hash in DetailsZIP-244 defines The attack flow over P2P:
A secondary variant exists where chain pruning (via PatchesPatched in Zebra 4.4.2. The fix removes stale entries from WorkaroundsThere is no complete configuration-level workaround. Reducing the node's inbound peer count ( ImpactA remote unauthenticated P2P peer can permanently stall a targeted Zebra node at a specific block height. The node diverges from the network tip; downstream consumers (lightwalletd, wallets, explorers, mining infrastructure) relying on the node see a stalled chain. The attack requires winning a propagation race: delivering the poisoned block body before honest peers deliver the canonical block. A well-positioned attacker (low-latency connection to the target, observation of new blocks from other peers) can reliably win this race. In sustained form, the attacker repeats for each new block, keeping the target permanently behind. Recovery requires restarting the node (which clears the in-memory sent-hash cache) or waiting for a reorg at the affected height (rare on the canonical chain). CreditReported independently by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-h72h-ppcx-998p
Jul 02, 2026
Zebra has pre-handshake buffer capacity reservation based on attacker-claimed body length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe P2P codec's However, Zebra's existing mitigations further constrain the practical attack surface: per-IP connection limits ( DetailsAt No legitimate Zcash handshake message ( PatchesThe fix defers large buffer reservations until after the handshake completes, or caps the per-message reservation for pre-handshake messages to what WorkaroundsNo workaround is needed. The existing per-IP rate limiting, handshake timeout, and connection limits effectively mitigate the practical impact. ImpactMinimal. The reservation affects virtual address space only, not physical memory. Zebra's existing connection-management mitigations (per-IP limits, accept rate, handshake timeout) further constrain the attack. The code path is worth cleaning up for defense-in-depth but does not produce a measurable denial-of-service effect. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52732
GHSA-4fc2-h7jh-287c
Jul 02, 2026
zebrad has mempool transaction admission denial via single-peer inbound queue saturation
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryA single unauthenticated P2P peer can monopolize all 25 inbound mempool download/verification slots ( DetailsThe mempool download/verification pipeline at
The attacker sends Two additional slot-holding techniques have been independently demonstrated: invalid-prevout transactions that park in Patcheszebrad 4.5.0 The fix adds per-peer queue accounting to the mempool download pipeline. A single peer is limited to a fraction of WorkaroundsThere is no complete configuration-level workaround. Reducing ImpactMempool transaction admission is denied for all honest peers and local RPC clients while the attack is sustained. Block validation and chain synchronization continue normally. The attacker needs only one TCP connection and minimal bandwidth (~1 KB/s of fake CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
GHSA-c8w6-x74f-vmg3
Jul 02, 2026
zebrad vulnerable to full node denial of service via crafted Sapling receiver in z_listunifiedreceivers
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe Details
At The same crate already handles this correctly in Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-443g-gwgp-49x4
Jul 02, 2026
zebrad vulnerable to getblocks/getheaders locator CPU amplification via uncapped vector length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe A single maximally-sized DetailsThe A legitimate block locator is logarithmic in chain length (approximately 30 hashes for the current ~3M-block Zcash chain). Zebra's own send-side cap is The practical impact requires significant attacker bandwidth (approximately 2 MiB per request) and multiple Sybil peers to meaningfully degrade the blocking pool, which limits real-world exploitability. PatchesPatched in Zebra 4.4.2. The fix caps WorkaroundsNo specific workaround is needed. Existing backpressure mechanisms (load shedding, sequential per-peer message processing, connection limits) constrain the practical impact. ImpactUnder sustained load from multiple Sybil peers, oversized locator vectors can occupy blocking-pool threads and degrade state-read performance. The effect is bounded by connection limits and requires significant attacker bandwidth. CreditVulnerability identified by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52731
GHSA-qv2r-v3mx-f4pf
Jul 02, 2026
zebrad has full node denial of service via non-ASCII LongPollId in getblocktemplate
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe DetailsThe Under the Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace byte-index string slicing with character-aware parsing or validate that the Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
GHSA-pvmv-cwg8-v6c8
May 08, 2026
Zebra v4.4.0 still accepts V5 SIGHASH_SINGLE without a corresponding output
Critical
Network
Low
None
None
Consensus Divergence in V5 Transparent SIGHASH_SINGLE With No Corresponding OutputSummaryZebra failed to enforce a ZIP-244 consensus rule for V5 transparent transactions: when an input is signed with A previous fix ( SeverityCritical - 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 Affected VersionsZebra 4.4.0. DescriptionVerification of transparent transactions inherits the Bitcoin Script verification code in C++. Since it is consensus-critical, this code is called from Zebra through a foreign function interface (FFI), with a Rust callback that computes the sighash for each input being verified. ZIP-244 §S.2a marks two situations as consensus failure for V5 transparent signatures:
An attacker could exploit this by:
Zebra would verify the transaction's transparent script and accept the transaction (and any block containing it), while ImpactConsensus Failure
Fixed VersionsThis issue is fixed in Zebra 4.4.1. MitigationUsers should upgrade to Zebra 4.4.1 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. CreditsZebra thanks @sangsoo-osec, @zmanian, and @fivelittleducks for finding and reporting the issue. Fixed in
4.4.1
References Updated May 22, 2026 · Source: OSV.dev |
4.4.0
unknown
Dependencies (89)
+ 81 more
Changelog
Compare changes
|
|
4.3.1
unknown
20 CVEs
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev
CVE-2026-52829
GHSA-63wg-wjjj-7cp8
Jul 02, 2026
Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryAn address normalization mismatch between the handshake path and the mempool misbehavior path causes a deterministic assertion panic when a peer connects via IPv4 to a dual-stack IPv6 listener and then triggers a mempool misbehavior penalty. The handshake path canonicalizes IPv4-mapped IPv6 addresses to plain IPv4 when storing the peer in the address book via DetailsOn Linux with The handshake path uses After the 30-second misbehavior batch flush, The attacker needs only to complete a P2P handshake over IPv4 to a dual-stack listener and advertise an invalid mempool transaction (such as a coinbase transaction). The assertion fires after the 30-second misbehavior batch flush. PatchesPatched in Zebra 4.5.0. The fix canonicalizes the address in the misbehavior update path via a new WorkaroundsConfiguring ImpactA remote unauthenticated peer can deterministically crash any synced Zebra node running the default Linux dual-stack configuration with a single invalid mempool transaction advertisement, followed by a 30-second wait. The attack requires no mining capability, no RPC access, no funds, and no special privileges. The crash can be repeated after each restart, causing persistent downtime. Linux dual-stack sockets and mempool activation are the default production state, not special preconditions. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52734
GHSA-65jj-fmw8-468q
Jul 02, 2026
zebrad has unbounded memory leak in mempool download pipeline via timeout path cancel_handles retention
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryThe mempool download pipeline's Details
The only cleanup paths for For direct PatchesThe fix preserves the WorkaroundsThere is no configuration-level workaround. Restarting the node clears the accumulated entries. Operators running in memory-constrained environments (containers with cgroup limits) may see the process killed by the OOM killer before natural recovery. ImpactGradual, unbounded memory exhaustion of a Zebra node from unauthenticated P2P traffic. The leak is monotonic (entries are never freed under normal operation) but slow (~685 KB/s per connection worst case). An attacker must sustain traffic for hours to exhaust typical server memory. The node continues operating normally until memory pressure becomes critical, at which point the OS OOM killer terminates the process or the node degrades due to swap pressure. No consensus impact, no fund loss, no on-disk corruption. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52733
GHSA-2gf8-q9rr-jq3h
Jul 02, 2026
zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip
6.5
/ 10
Medium
Network
High
None
None
Unchanged
None
High
Low
Am I affectedYou are affected if:
All default configurations are affected. The corruption persists across restarts because it is written to RocksDB. SummaryWhen DetailsThe non-finalized state provides two methods for removing blocks: When a chain fork occurs and The Patcheszebra-state 7.0.0 and zebrad 4.5.0. The fix adds subtree root cleanup to WorkaroundsThere 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 ImpactPersistent corruption of Sapling and Orchard subtree root history in the RocksDB state database. The corruption survives node restarts. Downstream consumers that rely on CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52739
GHSA-hhm7-qrv5-h4r6
Jul 02, 2026
Zebra: Repeated Non-Finalized Shielded Transaction Aborts Zebra Before Duplicate-Nullifier Rejection
5.9
/ 10
Medium
Network
High
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
All default configurations are affected. Summary
The block should be rejected with a duplicate-nullifier contextual validation error. Instead, the ordering of index updates within DetailsIn
The shielded nullifier uniqueness check at step 3 would correctly reject the duplicate transaction. But the The block transaction verifier does not run the best-chain nullifier query for block transactions — that check is gated on mempool transactions only ( There are two attack models: Model A (two attacker blocks): The attacker mines two consecutive valid-work blocks: parent B1 containing a shielded transaction T, and child B2 repeating T. This requires controlling both blocks consecutively. Model B (one attacker block after an honest block): The attacker broadcasts a shielded transaction T into the mempool. When any honest miner includes T in their block B1, the attacker only needs to mine the next child block B2 containing the same T. This requires controlling only one block immediately after an honest block that included the attacker's transaction. The attacker can broadcast a suitable shielded transaction every block until one is included by an honest miner, then attempt to mine the follow-up. Both models require the child block to repeat the shielded-only V5 transaction while the parent is still in non-finalized state. Patcheszebra-state 7.0.0 and zebrad 4.5.0. Replace the
WorkaroundsThere is no configuration-level workaround. The assert is in the non-finalized state push path, which is exercised by all block processing past the checkpoint height. ImpactA malicious block producer can crash targeted Zebra nodes. There are two attack models: In the first model, the attacker mines two consecutive valid-work blocks where the child repeats a shielded transaction from the parent. At 10% hashrate, the attacker has approximately 11.5 opportunities per day; at 5%, approximately 2.9 per day; at 1%, approximately one every 8.7 days. In the second model, the attacker broadcasts a shielded transaction into the mempool and waits for any honest miner to include it. The attacker then only needs to mine the next block containing the same transaction. This is cheaper because the attacker does not need to mine the parent block. At 10% hashrate, the attacker has approximately 14.4 single-block opportunities per day; at 5%, approximately 7.2 per day; at 1%, approximately 1.4 per day. The crash is a process abort (not recoverable within the process). The node must be restarted. Repeated attacks can keep a node down for extended periods. This is a liveness issue, not a consensus divergence: zcashd cleanly rejects the invalid child block while Zebra aborts. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52738
GHSA-w834-cf6p-9m9w
Jul 02, 2026
Zebra: Finalized address balance credit-first overflow on consensus-valid blocks
Medium
Network
Low
None
None
Am I affectedYou are affected if:
SummaryThe finalized transparent address balance writer processes all newly-created outputs (credits) before processing spent outputs (debits) within the same block. A consensus-valid block containing a long chain of same-address transparent self-spends can cause the intermediate per-address balance during the credit pass to exceed Because the triggering block is consensus-valid (zcashd accepts it), the panic recurs on restart when the node re-encounters the same block. This creates a persistent chain halt that can only be resolved by a software patch. DetailsThe finalized state writer at The code panics on the intermediate overflow via An attacker with approximately 1,100–2,100 ZEC and mining capability can construct a block that permanently halts all Zebra nodes. The attacker recovers their capital (the self-spends return funds to the same address), so the net cost is the mining effort only. PatchesPatched in Zebra 4.4.2. The fix processes credits and debits together per transaction rather than all credits then all debits, matching zcashd's approach. WorkaroundsNo workaround is available. Upgrade to Zebra 4.4.2. ImpactA single consensus-valid mined block can permanently halt all Zebra nodes on the network. The halt persists across restarts. Recovery requires deploying a patched version. Downstream consumers (light wallets, exchanges, mining infrastructure) lose service for the duration of the halt. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52737
GHSA-gvjc-3w7c-92jx
Jul 02, 2026
Zebra has sync restart poisoning from single unauthenticated peer via above-lookahead block
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryA malicious peer can answer Zebra's outbound On mainnet, each successful cycle imposes a 67-second sync restart delay. All in-flight downloads from honest peers are cancelled on each restart. DetailsThe bug is the interaction of three layers:
The attacker needs only an unauthenticated P2P connection (post-handshake), a tiny payload (one two-hash Additionally, several other pre-consensus sync-layer errors had zero misbehaviour scores even when peer-attributed. Contextual validation failures ( PatchesPatched in Zebra 4.4.2. The fix:
WorkaroundsNo configuration-level workaround is available. The attack is mitigated by having a diverse honest peer set, but cannot be prevented while the vulnerable code is running. ImpactA single unauthenticated peer can repeatedly stall a syncing Zebra node by forcing 67-second global sync restart cycles. All unrelated in-flight downloads are cancelled on each restart. The node does not crash and no state is corrupted, but sync progress is significantly degraded for the duration of the attack. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52735
GHSA-gf9r-m956-97qx
Jul 02, 2026
zebrad has consensus divergence via P2SH sigop undercount in pure-Rust disabled-opcode parser
Critical
Network
Low
None
None
Am I affectedYou are affected if:
All default configurations are affected. No feature flags, non-default settings, or special build options are required. SummaryZebra's P2SH sigop counter uses a pure-Rust code path that short-circuits on disabled opcodes (such as An attacker can exploit this without mining capability. Broadcasting transactions that spend P2SH outputs with malicious redeem scripts is sufficient; any Zebra miner who includes those transactions in a block triggers a chain split between Zebra and zcashd validators. DetailsThe P2SH sigop counter at The Rust parser in zcashd's A redeem script of PatchesPatched in Zebra 4.4.2. The fix routes the P2SH sigop counter through the same C++ FFI already used by the legacy sigop counter. WorkaroundsThere is no configuration-level workaround. All Zebra nodes validating blocks on a network shared with zcashd are affected. Upgrade as soon as the patched version is available. ImpactA chain split between Zebra and zcashd validators. The attacker broadcasts spending transactions referencing P2SH outputs whose redeem scripts contain a disabled opcode followed by The attacker does not need mining capability, RPC access, or any special privileges. The cost is the transaction fees for the funding and spending transactions. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52736
GHSA-4m69-67m6-prqp
Jul 02, 2026
Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache
High
Network
Low
None
None
DescriptionAm I affectedYou are affected if:
All default configurations are affected. SummaryZebra records a block hash in DetailsZIP-244 defines The attack flow over P2P:
A secondary variant exists where chain pruning (via PatchesPatched in Zebra 4.4.2. The fix removes stale entries from WorkaroundsThere is no complete configuration-level workaround. Reducing the node's inbound peer count ( ImpactA remote unauthenticated P2P peer can permanently stall a targeted Zebra node at a specific block height. The node diverges from the network tip; downstream consumers (lightwalletd, wallets, explorers, mining infrastructure) relying on the node see a stalled chain. The attack requires winning a propagation race: delivering the poisoned block body before honest peers deliver the canonical block. A well-positioned attacker (low-latency connection to the target, observation of new blocks from other peers) can reliably win this race. In sustained form, the attacker repeats for each new block, keeping the target permanently behind. Recovery requires restarting the node (which clears the in-memory sent-hash cache) or waiting for a reorg at the affected height (rare on the canonical chain). CreditReported independently by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-h72h-ppcx-998p
Jul 02, 2026
Zebra has pre-handshake buffer capacity reservation based on attacker-claimed body length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe P2P codec's However, Zebra's existing mitigations further constrain the practical attack surface: per-IP connection limits ( DetailsAt No legitimate Zcash handshake message ( PatchesThe fix defers large buffer reservations until after the handshake completes, or caps the per-message reservation for pre-handshake messages to what WorkaroundsNo workaround is needed. The existing per-IP rate limiting, handshake timeout, and connection limits effectively mitigate the practical impact. ImpactMinimal. The reservation affects virtual address space only, not physical memory. Zebra's existing connection-management mitigations (per-IP limits, accept rate, handshake timeout) further constrain the attack. The code path is worth cleaning up for defense-in-depth but does not produce a measurable denial-of-service effect. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52732
GHSA-4fc2-h7jh-287c
Jul 02, 2026
zebrad has mempool transaction admission denial via single-peer inbound queue saturation
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryA single unauthenticated P2P peer can monopolize all 25 inbound mempool download/verification slots ( DetailsThe mempool download/verification pipeline at
The attacker sends Two additional slot-holding techniques have been independently demonstrated: invalid-prevout transactions that park in Patcheszebrad 4.5.0 The fix adds per-peer queue accounting to the mempool download pipeline. A single peer is limited to a fraction of WorkaroundsThere is no complete configuration-level workaround. Reducing ImpactMempool transaction admission is denied for all honest peers and local RPC clients while the attack is sustained. Block validation and chain synchronization continue normally. The attacker needs only one TCP connection and minimal bandwidth (~1 KB/s of fake CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
GHSA-c8w6-x74f-vmg3
Jul 02, 2026
zebrad vulnerable to full node denial of service via crafted Sapling receiver in z_listunifiedreceivers
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe Details
At The same crate already handles this correctly in Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-443g-gwgp-49x4
Jul 02, 2026
zebrad vulnerable to getblocks/getheaders locator CPU amplification via uncapped vector length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe A single maximally-sized DetailsThe A legitimate block locator is logarithmic in chain length (approximately 30 hashes for the current ~3M-block Zcash chain). Zebra's own send-side cap is The practical impact requires significant attacker bandwidth (approximately 2 MiB per request) and multiple Sybil peers to meaningfully degrade the blocking pool, which limits real-world exploitability. PatchesPatched in Zebra 4.4.2. The fix caps WorkaroundsNo specific workaround is needed. Existing backpressure mechanisms (load shedding, sequential per-peer message processing, connection limits) constrain the practical impact. ImpactUnder sustained load from multiple Sybil peers, oversized locator vectors can occupy blocking-pool threads and degrade state-read performance. The effect is bounded by connection limits and requires significant attacker bandwidth. CreditVulnerability identified by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52731
GHSA-qv2r-v3mx-f4pf
Jul 02, 2026
zebrad has full node denial of service via non-ASCII LongPollId in getblocktemplate
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe DetailsThe Under the Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace byte-index string slicing with character-aware parsing or validate that the Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-44499
GHSA-h9hm-m2xj-4rq9
May 08, 2026
Zebra has Permanent Block Discovery Halt via Gossip Queue Saturation and Syncer Poisoning
High
Network
Low
None
None
SummaryA composite denial-of-service vulnerability in Zebra's block discovery pipeline allows an unauthenticated remote attacker to permanently halt all new block discovery on a targeted node. The attack exploits three independent weaknesses in the gossip, syncer, and download subsystems — all exercisable from a single TCP connection — to create a monotonically growing block deficit that never self-heals. SeverityCritical — This is a Denial of Service vulnerability that requires no authentication, no special privileges, and only a single peer connection. The halt is permanent: the node will never recover without operator intervention. Affected VersionsAll Zebra versions prior to 4.4.0. DescriptionZebra discovers new blocks through two complementary paths: a gossip path (peers announce blocks via The gossip path was vulnerable because there was no per-connection rate limit on The syncer backup path could be degraded by responding with empty Combining these two vectors, an attacker could suppress both block discovery paths simultaneously from a single connection, causing the node to fall permanently behind the chain tip. ImpactDenial of Service
Fixed VersionsThis issue is fixed in Zebra 4.4.0. The fix drops connections that send empty responses to MitigationUsers should upgrade to Zebra 4.4.0 or later immediately. There are no known workarounds for this issue. Immediate upgrade is the only way to protect against this attack. CreditsZebra the researcher who reported this issue through the coordinated disclosure process. Fixed in
4.4.0
References Updated May 08, 2026 · Source: OSV.dev
GHSA-pvmv-cwg8-v6c8
May 08, 2026
Zebra v4.4.0 still accepts V5 SIGHASH_SINGLE without a corresponding output
Critical
Network
Low
None
None
Consensus Divergence in V5 Transparent SIGHASH_SINGLE With No Corresponding OutputSummaryZebra failed to enforce a ZIP-244 consensus rule for V5 transparent transactions: when an input is signed with A previous fix ( SeverityCritical - 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 Affected VersionsZebra 4.4.0. DescriptionVerification of transparent transactions inherits the Bitcoin Script verification code in C++. Since it is consensus-critical, this code is called from Zebra through a foreign function interface (FFI), with a Rust callback that computes the sighash for each input being verified. ZIP-244 §S.2a marks two situations as consensus failure for V5 transparent signatures:
An attacker could exploit this by:
Zebra would verify the transaction's transparent script and accept the transaction (and any block containing it), while ImpactConsensus Failure
Fixed VersionsThis issue is fixed in Zebra 4.4.1. MitigationUsers should upgrade to Zebra 4.4.1 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. CreditsZebra thanks @sangsoo-osec, @zmanian, and @fivelittleducks for finding and reporting the issue. Fixed in
4.4.1
References Updated May 22, 2026 · Source: OSV.dev
GHSA-cwfq-rfcr-8hmp
May 07, 2026
Zebra's Transparent SIGHASH_SINGLE Handling Diverges from zcashd for Corresponding Outputs
Critical
Network
Low
None
None
|
4.3.1
unknown
Dependencies (89)
+ 81 more
Changelog
Compare changes
|
|
4.3.0
unknown
25 CVEs
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev
CVE-2026-52829
GHSA-63wg-wjjj-7cp8
Jul 02, 2026
Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryAn address normalization mismatch between the handshake path and the mempool misbehavior path causes a deterministic assertion panic when a peer connects via IPv4 to a dual-stack IPv6 listener and then triggers a mempool misbehavior penalty. The handshake path canonicalizes IPv4-mapped IPv6 addresses to plain IPv4 when storing the peer in the address book via DetailsOn Linux with The handshake path uses After the 30-second misbehavior batch flush, The attacker needs only to complete a P2P handshake over IPv4 to a dual-stack listener and advertise an invalid mempool transaction (such as a coinbase transaction). The assertion fires after the 30-second misbehavior batch flush. PatchesPatched in Zebra 4.5.0. The fix canonicalizes the address in the misbehavior update path via a new WorkaroundsConfiguring ImpactA remote unauthenticated peer can deterministically crash any synced Zebra node running the default Linux dual-stack configuration with a single invalid mempool transaction advertisement, followed by a 30-second wait. The attack requires no mining capability, no RPC access, no funds, and no special privileges. The crash can be repeated after each restart, causing persistent downtime. Linux dual-stack sockets and mempool activation are the default production state, not special preconditions. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52734
GHSA-65jj-fmw8-468q
Jul 02, 2026
zebrad has unbounded memory leak in mempool download pipeline via timeout path cancel_handles retention
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryThe mempool download pipeline's Details
The only cleanup paths for For direct PatchesThe fix preserves the WorkaroundsThere is no configuration-level workaround. Restarting the node clears the accumulated entries. Operators running in memory-constrained environments (containers with cgroup limits) may see the process killed by the OOM killer before natural recovery. ImpactGradual, unbounded memory exhaustion of a Zebra node from unauthenticated P2P traffic. The leak is monotonic (entries are never freed under normal operation) but slow (~685 KB/s per connection worst case). An attacker must sustain traffic for hours to exhaust typical server memory. The node continues operating normally until memory pressure becomes critical, at which point the OS OOM killer terminates the process or the node degrades due to swap pressure. No consensus impact, no fund loss, no on-disk corruption. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52733
GHSA-2gf8-q9rr-jq3h
Jul 02, 2026
zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip
6.5
/ 10
Medium
Network
High
None
None
Unchanged
None
High
Low
Am I affectedYou are affected if:
All default configurations are affected. The corruption persists across restarts because it is written to RocksDB. SummaryWhen DetailsThe non-finalized state provides two methods for removing blocks: When a chain fork occurs and The Patcheszebra-state 7.0.0 and zebrad 4.5.0. The fix adds subtree root cleanup to WorkaroundsThere 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 ImpactPersistent corruption of Sapling and Orchard subtree root history in the RocksDB state database. The corruption survives node restarts. Downstream consumers that rely on CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52739
GHSA-hhm7-qrv5-h4r6
Jul 02, 2026
Zebra: Repeated Non-Finalized Shielded Transaction Aborts Zebra Before Duplicate-Nullifier Rejection
5.9
/ 10
Medium
Network
High
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
All default configurations are affected. Summary
The block should be rejected with a duplicate-nullifier contextual validation error. Instead, the ordering of index updates within DetailsIn
The shielded nullifier uniqueness check at step 3 would correctly reject the duplicate transaction. But the The block transaction verifier does not run the best-chain nullifier query for block transactions — that check is gated on mempool transactions only ( There are two attack models: Model A (two attacker blocks): The attacker mines two consecutive valid-work blocks: parent B1 containing a shielded transaction T, and child B2 repeating T. This requires controlling both blocks consecutively. Model B (one attacker block after an honest block): The attacker broadcasts a shielded transaction T into the mempool. When any honest miner includes T in their block B1, the attacker only needs to mine the next child block B2 containing the same T. This requires controlling only one block immediately after an honest block that included the attacker's transaction. The attacker can broadcast a suitable shielded transaction every block until one is included by an honest miner, then attempt to mine the follow-up. Both models require the child block to repeat the shielded-only V5 transaction while the parent is still in non-finalized state. Patcheszebra-state 7.0.0 and zebrad 4.5.0. Replace the
WorkaroundsThere is no configuration-level workaround. The assert is in the non-finalized state push path, which is exercised by all block processing past the checkpoint height. ImpactA malicious block producer can crash targeted Zebra nodes. There are two attack models: In the first model, the attacker mines two consecutive valid-work blocks where the child repeats a shielded transaction from the parent. At 10% hashrate, the attacker has approximately 11.5 opportunities per day; at 5%, approximately 2.9 per day; at 1%, approximately one every 8.7 days. In the second model, the attacker broadcasts a shielded transaction into the mempool and waits for any honest miner to include it. The attacker then only needs to mine the next block containing the same transaction. This is cheaper because the attacker does not need to mine the parent block. At 10% hashrate, the attacker has approximately 14.4 single-block opportunities per day; at 5%, approximately 7.2 per day; at 1%, approximately 1.4 per day. The crash is a process abort (not recoverable within the process). The node must be restarted. Repeated attacks can keep a node down for extended periods. This is a liveness issue, not a consensus divergence: zcashd cleanly rejects the invalid child block while Zebra aborts. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52738
GHSA-w834-cf6p-9m9w
Jul 02, 2026
Zebra: Finalized address balance credit-first overflow on consensus-valid blocks
Medium
Network
Low
None
None
Am I affectedYou are affected if:
SummaryThe finalized transparent address balance writer processes all newly-created outputs (credits) before processing spent outputs (debits) within the same block. A consensus-valid block containing a long chain of same-address transparent self-spends can cause the intermediate per-address balance during the credit pass to exceed Because the triggering block is consensus-valid (zcashd accepts it), the panic recurs on restart when the node re-encounters the same block. This creates a persistent chain halt that can only be resolved by a software patch. DetailsThe finalized state writer at The code panics on the intermediate overflow via An attacker with approximately 1,100–2,100 ZEC and mining capability can construct a block that permanently halts all Zebra nodes. The attacker recovers their capital (the self-spends return funds to the same address), so the net cost is the mining effort only. PatchesPatched in Zebra 4.4.2. The fix processes credits and debits together per transaction rather than all credits then all debits, matching zcashd's approach. WorkaroundsNo workaround is available. Upgrade to Zebra 4.4.2. ImpactA single consensus-valid mined block can permanently halt all Zebra nodes on the network. The halt persists across restarts. Recovery requires deploying a patched version. Downstream consumers (light wallets, exchanges, mining infrastructure) lose service for the duration of the halt. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52737
GHSA-gvjc-3w7c-92jx
Jul 02, 2026
Zebra has sync restart poisoning from single unauthenticated peer via above-lookahead block
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryA malicious peer can answer Zebra's outbound On mainnet, each successful cycle imposes a 67-second sync restart delay. All in-flight downloads from honest peers are cancelled on each restart. DetailsThe bug is the interaction of three layers:
The attacker needs only an unauthenticated P2P connection (post-handshake), a tiny payload (one two-hash Additionally, several other pre-consensus sync-layer errors had zero misbehaviour scores even when peer-attributed. Contextual validation failures ( PatchesPatched in Zebra 4.4.2. The fix:
WorkaroundsNo configuration-level workaround is available. The attack is mitigated by having a diverse honest peer set, but cannot be prevented while the vulnerable code is running. ImpactA single unauthenticated peer can repeatedly stall a syncing Zebra node by forcing 67-second global sync restart cycles. All unrelated in-flight downloads are cancelled on each restart. The node does not crash and no state is corrupted, but sync progress is significantly degraded for the duration of the attack. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52735
GHSA-gf9r-m956-97qx
Jul 02, 2026
zebrad has consensus divergence via P2SH sigop undercount in pure-Rust disabled-opcode parser
Critical
Network
Low
None
None
Am I affectedYou are affected if:
All default configurations are affected. No feature flags, non-default settings, or special build options are required. SummaryZebra's P2SH sigop counter uses a pure-Rust code path that short-circuits on disabled opcodes (such as An attacker can exploit this without mining capability. Broadcasting transactions that spend P2SH outputs with malicious redeem scripts is sufficient; any Zebra miner who includes those transactions in a block triggers a chain split between Zebra and zcashd validators. DetailsThe P2SH sigop counter at The Rust parser in zcashd's A redeem script of PatchesPatched in Zebra 4.4.2. The fix routes the P2SH sigop counter through the same C++ FFI already used by the legacy sigop counter. WorkaroundsThere is no configuration-level workaround. All Zebra nodes validating blocks on a network shared with zcashd are affected. Upgrade as soon as the patched version is available. ImpactA chain split between Zebra and zcashd validators. The attacker broadcasts spending transactions referencing P2SH outputs whose redeem scripts contain a disabled opcode followed by The attacker does not need mining capability, RPC access, or any special privileges. The cost is the transaction fees for the funding and spending transactions. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52736
GHSA-4m69-67m6-prqp
Jul 02, 2026
Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache
High
Network
Low
None
None
DescriptionAm I affectedYou are affected if:
All default configurations are affected. SummaryZebra records a block hash in DetailsZIP-244 defines The attack flow over P2P:
A secondary variant exists where chain pruning (via PatchesPatched in Zebra 4.4.2. The fix removes stale entries from WorkaroundsThere is no complete configuration-level workaround. Reducing the node's inbound peer count ( ImpactA remote unauthenticated P2P peer can permanently stall a targeted Zebra node at a specific block height. The node diverges from the network tip; downstream consumers (lightwalletd, wallets, explorers, mining infrastructure) relying on the node see a stalled chain. The attack requires winning a propagation race: delivering the poisoned block body before honest peers deliver the canonical block. A well-positioned attacker (low-latency connection to the target, observation of new blocks from other peers) can reliably win this race. In sustained form, the attacker repeats for each new block, keeping the target permanently behind. Recovery requires restarting the node (which clears the in-memory sent-hash cache) or waiting for a reorg at the affected height (rare on the canonical chain). CreditReported independently by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-h72h-ppcx-998p
Jul 02, 2026
Zebra has pre-handshake buffer capacity reservation based on attacker-claimed body length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe P2P codec's However, Zebra's existing mitigations further constrain the practical attack surface: per-IP connection limits ( DetailsAt No legitimate Zcash handshake message ( PatchesThe fix defers large buffer reservations until after the handshake completes, or caps the per-message reservation for pre-handshake messages to what WorkaroundsNo workaround is needed. The existing per-IP rate limiting, handshake timeout, and connection limits effectively mitigate the practical impact. ImpactMinimal. The reservation affects virtual address space only, not physical memory. Zebra's existing connection-management mitigations (per-IP limits, accept rate, handshake timeout) further constrain the attack. The code path is worth cleaning up for defense-in-depth but does not produce a measurable denial-of-service effect. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52732
GHSA-4fc2-h7jh-287c
Jul 02, 2026
zebrad has mempool transaction admission denial via single-peer inbound queue saturation
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryA single unauthenticated P2P peer can monopolize all 25 inbound mempool download/verification slots ( DetailsThe mempool download/verification pipeline at
The attacker sends Two additional slot-holding techniques have been independently demonstrated: invalid-prevout transactions that park in Patcheszebrad 4.5.0 The fix adds per-peer queue accounting to the mempool download pipeline. A single peer is limited to a fraction of WorkaroundsThere is no complete configuration-level workaround. Reducing ImpactMempool transaction admission is denied for all honest peers and local RPC clients while the attack is sustained. Block validation and chain synchronization continue normally. The attacker needs only one TCP connection and minimal bandwidth (~1 KB/s of fake CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
GHSA-c8w6-x74f-vmg3
Jul 02, 2026
zebrad vulnerable to full node denial of service via crafted Sapling receiver in z_listunifiedreceivers
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe Details
At The same crate already handles this correctly in Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-443g-gwgp-49x4
Jul 02, 2026
zebrad vulnerable to getblocks/getheaders locator CPU amplification via uncapped vector length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe A single maximally-sized DetailsThe A legitimate block locator is logarithmic in chain length (approximately 30 hashes for the current ~3M-block Zcash chain). Zebra's own send-side cap is The practical impact requires significant attacker bandwidth (approximately 2 MiB per request) and multiple Sybil peers to meaningfully degrade the blocking pool, which limits real-world exploitability. PatchesPatched in Zebra 4.4.2. The fix caps WorkaroundsNo specific workaround is needed. Existing backpressure mechanisms (load shedding, sequential per-peer message processing, connection limits) constrain the practical impact. ImpactUnder sustained load from multiple Sybil peers, oversized locator vectors can occupy blocking-pool threads and degrade state-read performance. The effect is bounded by connection limits and requires significant attacker bandwidth. CreditVulnerability identified by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52731
GHSA-qv2r-v3mx-f4pf
Jul 02, 2026
zebrad has full node denial of service via non-ASCII LongPollId in getblocktemplate
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe DetailsThe Under the Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace byte-index string slicing with character-aware parsing or validate that the Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-44499
GHSA-h9hm-m2xj-4rq9
May 08, 2026
Zebra has Permanent Block Discovery Halt via Gossip Queue Saturation and Syncer Poisoning
High
Network
Low
None
None
SummaryA composite denial-of-service vulnerability in Zebra's block discovery pipeline allows an unauthenticated remote attacker to permanently halt all new block discovery on a targeted node. The attack exploits three independent weaknesses in the gossip, syncer, and download subsystems — all exercisable from a single TCP connection — to create a monotonically growing block deficit that never self-heals. SeverityCritical — This is a Denial of Service vulnerability that requires no authentication, no special privileges, and only a single peer connection. The halt is permanent: the node will never recover without operator intervention. Affected VersionsAll Zebra versions prior to 4.4.0. DescriptionZebra discovers new blocks through two complementary paths: a gossip path (peers announce blocks via The gossip path was vulnerable because there was no per-connection rate limit on The syncer backup path could be degraded by responding with empty Combining these two vectors, an attacker could suppress both block discovery paths simultaneously from a single connection, causing the node to fall permanently behind the chain tip. ImpactDenial of Service
Fixed VersionsThis issue is fixed in Zebra 4.4.0. The fix drops connections that send empty responses to MitigationUsers should upgrade to Zebra 4.4.0 or later immediately. There are no known workarounds for this issue. Immediate upgrade is the only way to protect against this attack. CreditsZebra the researcher who reported this issue through the coordinated disclosure process. Fixed in
4.4.0
References Updated May 08, 2026 · Source: OSV.dev
GHSA-pvmv-cwg8-v6c8
May 08, 2026
Zebra v4.4.0 still accepts V5 SIGHASH_SINGLE without a corresponding output
Critical
Network
Low
None
None
Consensus Divergence in V5 Transparent SIGHASH_SINGLE With No Corresponding OutputSummaryZebra failed to enforce a ZIP-244 consensus rule for V5 transparent transactions: when an input is signed with A previous fix ( SeverityCritical - 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 Affected VersionsZebra 4.4.0. DescriptionVerification of transparent transactions inherits the Bitcoin Script verification code in C++. Since it is consensus-critical, this code is called from Zebra through a foreign function interface (FFI), with a Rust callback that computes the sighash for each input being verified. ZIP-244 §S.2a marks two situations as consensus failure for V5 transparent signatures:
An attacker could exploit this by:
Zebra would verify the transaction's transparent script and accept the transaction (and any block containing it), while ImpactConsensus Failure
Fixed VersionsThis issue is fixed in Zebra 4.4.1. MitigationUsers should upgrade to Zebra 4.4.1 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. CreditsZebra thanks @sangsoo-osec, @zmanian, and @fivelittleducks for finding and reporting the issue. Fixed in
4.4.1
References Updated May 22, 2026 · Source: OSV.dev
GHSA-cwfq-rfcr-8hmp
May 07, 2026
Zebra's Transparent SIGHASH_SINGLE Handling Diverges from zcashd for Corresponding Outputs
Critical
Network
Low
None
None
|
4.3.0
unknown
Dependencies (89)
+ 81 more
Changelog
Compare changes
|
|
4.2.0
unknown
27 CVEs
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev
CVE-2026-52829
GHSA-63wg-wjjj-7cp8
Jul 02, 2026
Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryAn address normalization mismatch between the handshake path and the mempool misbehavior path causes a deterministic assertion panic when a peer connects via IPv4 to a dual-stack IPv6 listener and then triggers a mempool misbehavior penalty. The handshake path canonicalizes IPv4-mapped IPv6 addresses to plain IPv4 when storing the peer in the address book via DetailsOn Linux with The handshake path uses After the 30-second misbehavior batch flush, The attacker needs only to complete a P2P handshake over IPv4 to a dual-stack listener and advertise an invalid mempool transaction (such as a coinbase transaction). The assertion fires after the 30-second misbehavior batch flush. PatchesPatched in Zebra 4.5.0. The fix canonicalizes the address in the misbehavior update path via a new WorkaroundsConfiguring ImpactA remote unauthenticated peer can deterministically crash any synced Zebra node running the default Linux dual-stack configuration with a single invalid mempool transaction advertisement, followed by a 30-second wait. The attack requires no mining capability, no RPC access, no funds, and no special privileges. The crash can be repeated after each restart, causing persistent downtime. Linux dual-stack sockets and mempool activation are the default production state, not special preconditions. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52734
GHSA-65jj-fmw8-468q
Jul 02, 2026
zebrad has unbounded memory leak in mempool download pipeline via timeout path cancel_handles retention
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryThe mempool download pipeline's Details
The only cleanup paths for For direct PatchesThe fix preserves the WorkaroundsThere is no configuration-level workaround. Restarting the node clears the accumulated entries. Operators running in memory-constrained environments (containers with cgroup limits) may see the process killed by the OOM killer before natural recovery. ImpactGradual, unbounded memory exhaustion of a Zebra node from unauthenticated P2P traffic. The leak is monotonic (entries are never freed under normal operation) but slow (~685 KB/s per connection worst case). An attacker must sustain traffic for hours to exhaust typical server memory. The node continues operating normally until memory pressure becomes critical, at which point the OS OOM killer terminates the process or the node degrades due to swap pressure. No consensus impact, no fund loss, no on-disk corruption. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52733
GHSA-2gf8-q9rr-jq3h
Jul 02, 2026
zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip
6.5
/ 10
Medium
Network
High
None
None
Unchanged
None
High
Low
Am I affectedYou are affected if:
All default configurations are affected. The corruption persists across restarts because it is written to RocksDB. SummaryWhen DetailsThe non-finalized state provides two methods for removing blocks: When a chain fork occurs and The Patcheszebra-state 7.0.0 and zebrad 4.5.0. The fix adds subtree root cleanup to WorkaroundsThere 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 ImpactPersistent corruption of Sapling and Orchard subtree root history in the RocksDB state database. The corruption survives node restarts. Downstream consumers that rely on CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52739
GHSA-hhm7-qrv5-h4r6
Jul 02, 2026
Zebra: Repeated Non-Finalized Shielded Transaction Aborts Zebra Before Duplicate-Nullifier Rejection
5.9
/ 10
Medium
Network
High
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
All default configurations are affected. Summary
The block should be rejected with a duplicate-nullifier contextual validation error. Instead, the ordering of index updates within DetailsIn
The shielded nullifier uniqueness check at step 3 would correctly reject the duplicate transaction. But the The block transaction verifier does not run the best-chain nullifier query for block transactions — that check is gated on mempool transactions only ( There are two attack models: Model A (two attacker blocks): The attacker mines two consecutive valid-work blocks: parent B1 containing a shielded transaction T, and child B2 repeating T. This requires controlling both blocks consecutively. Model B (one attacker block after an honest block): The attacker broadcasts a shielded transaction T into the mempool. When any honest miner includes T in their block B1, the attacker only needs to mine the next child block B2 containing the same T. This requires controlling only one block immediately after an honest block that included the attacker's transaction. The attacker can broadcast a suitable shielded transaction every block until one is included by an honest miner, then attempt to mine the follow-up. Both models require the child block to repeat the shielded-only V5 transaction while the parent is still in non-finalized state. Patcheszebra-state 7.0.0 and zebrad 4.5.0. Replace the
WorkaroundsThere is no configuration-level workaround. The assert is in the non-finalized state push path, which is exercised by all block processing past the checkpoint height. ImpactA malicious block producer can crash targeted Zebra nodes. There are two attack models: In the first model, the attacker mines two consecutive valid-work blocks where the child repeats a shielded transaction from the parent. At 10% hashrate, the attacker has approximately 11.5 opportunities per day; at 5%, approximately 2.9 per day; at 1%, approximately one every 8.7 days. In the second model, the attacker broadcasts a shielded transaction into the mempool and waits for any honest miner to include it. The attacker then only needs to mine the next block containing the same transaction. This is cheaper because the attacker does not need to mine the parent block. At 10% hashrate, the attacker has approximately 14.4 single-block opportunities per day; at 5%, approximately 7.2 per day; at 1%, approximately 1.4 per day. The crash is a process abort (not recoverable within the process). The node must be restarted. Repeated attacks can keep a node down for extended periods. This is a liveness issue, not a consensus divergence: zcashd cleanly rejects the invalid child block while Zebra aborts. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52738
GHSA-w834-cf6p-9m9w
Jul 02, 2026
Zebra: Finalized address balance credit-first overflow on consensus-valid blocks
Medium
Network
Low
None
None
Am I affectedYou are affected if:
SummaryThe finalized transparent address balance writer processes all newly-created outputs (credits) before processing spent outputs (debits) within the same block. A consensus-valid block containing a long chain of same-address transparent self-spends can cause the intermediate per-address balance during the credit pass to exceed Because the triggering block is consensus-valid (zcashd accepts it), the panic recurs on restart when the node re-encounters the same block. This creates a persistent chain halt that can only be resolved by a software patch. DetailsThe finalized state writer at The code panics on the intermediate overflow via An attacker with approximately 1,100–2,100 ZEC and mining capability can construct a block that permanently halts all Zebra nodes. The attacker recovers their capital (the self-spends return funds to the same address), so the net cost is the mining effort only. PatchesPatched in Zebra 4.4.2. The fix processes credits and debits together per transaction rather than all credits then all debits, matching zcashd's approach. WorkaroundsNo workaround is available. Upgrade to Zebra 4.4.2. ImpactA single consensus-valid mined block can permanently halt all Zebra nodes on the network. The halt persists across restarts. Recovery requires deploying a patched version. Downstream consumers (light wallets, exchanges, mining infrastructure) lose service for the duration of the halt. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52737
GHSA-gvjc-3w7c-92jx
Jul 02, 2026
Zebra has sync restart poisoning from single unauthenticated peer via above-lookahead block
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryA malicious peer can answer Zebra's outbound On mainnet, each successful cycle imposes a 67-second sync restart delay. All in-flight downloads from honest peers are cancelled on each restart. DetailsThe bug is the interaction of three layers:
The attacker needs only an unauthenticated P2P connection (post-handshake), a tiny payload (one two-hash Additionally, several other pre-consensus sync-layer errors had zero misbehaviour scores even when peer-attributed. Contextual validation failures ( PatchesPatched in Zebra 4.4.2. The fix:
WorkaroundsNo configuration-level workaround is available. The attack is mitigated by having a diverse honest peer set, but cannot be prevented while the vulnerable code is running. ImpactA single unauthenticated peer can repeatedly stall a syncing Zebra node by forcing 67-second global sync restart cycles. All unrelated in-flight downloads are cancelled on each restart. The node does not crash and no state is corrupted, but sync progress is significantly degraded for the duration of the attack. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52735
GHSA-gf9r-m956-97qx
Jul 02, 2026
zebrad has consensus divergence via P2SH sigop undercount in pure-Rust disabled-opcode parser
Critical
Network
Low
None
None
Am I affectedYou are affected if:
All default configurations are affected. No feature flags, non-default settings, or special build options are required. SummaryZebra's P2SH sigop counter uses a pure-Rust code path that short-circuits on disabled opcodes (such as An attacker can exploit this without mining capability. Broadcasting transactions that spend P2SH outputs with malicious redeem scripts is sufficient; any Zebra miner who includes those transactions in a block triggers a chain split between Zebra and zcashd validators. DetailsThe P2SH sigop counter at The Rust parser in zcashd's A redeem script of PatchesPatched in Zebra 4.4.2. The fix routes the P2SH sigop counter through the same C++ FFI already used by the legacy sigop counter. WorkaroundsThere is no configuration-level workaround. All Zebra nodes validating blocks on a network shared with zcashd are affected. Upgrade as soon as the patched version is available. ImpactA chain split between Zebra and zcashd validators. The attacker broadcasts spending transactions referencing P2SH outputs whose redeem scripts contain a disabled opcode followed by The attacker does not need mining capability, RPC access, or any special privileges. The cost is the transaction fees for the funding and spending transactions. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52736
GHSA-4m69-67m6-prqp
Jul 02, 2026
Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache
High
Network
Low
None
None
DescriptionAm I affectedYou are affected if:
All default configurations are affected. SummaryZebra records a block hash in DetailsZIP-244 defines The attack flow over P2P:
A secondary variant exists where chain pruning (via PatchesPatched in Zebra 4.4.2. The fix removes stale entries from WorkaroundsThere is no complete configuration-level workaround. Reducing the node's inbound peer count ( ImpactA remote unauthenticated P2P peer can permanently stall a targeted Zebra node at a specific block height. The node diverges from the network tip; downstream consumers (lightwalletd, wallets, explorers, mining infrastructure) relying on the node see a stalled chain. The attack requires winning a propagation race: delivering the poisoned block body before honest peers deliver the canonical block. A well-positioned attacker (low-latency connection to the target, observation of new blocks from other peers) can reliably win this race. In sustained form, the attacker repeats for each new block, keeping the target permanently behind. Recovery requires restarting the node (which clears the in-memory sent-hash cache) or waiting for a reorg at the affected height (rare on the canonical chain). CreditReported independently by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-h72h-ppcx-998p
Jul 02, 2026
Zebra has pre-handshake buffer capacity reservation based on attacker-claimed body length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe P2P codec's However, Zebra's existing mitigations further constrain the practical attack surface: per-IP connection limits ( DetailsAt No legitimate Zcash handshake message ( PatchesThe fix defers large buffer reservations until after the handshake completes, or caps the per-message reservation for pre-handshake messages to what WorkaroundsNo workaround is needed. The existing per-IP rate limiting, handshake timeout, and connection limits effectively mitigate the practical impact. ImpactMinimal. The reservation affects virtual address space only, not physical memory. Zebra's existing connection-management mitigations (per-IP limits, accept rate, handshake timeout) further constrain the attack. The code path is worth cleaning up for defense-in-depth but does not produce a measurable denial-of-service effect. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52732
GHSA-4fc2-h7jh-287c
Jul 02, 2026
zebrad has mempool transaction admission denial via single-peer inbound queue saturation
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryA single unauthenticated P2P peer can monopolize all 25 inbound mempool download/verification slots ( DetailsThe mempool download/verification pipeline at
The attacker sends Two additional slot-holding techniques have been independently demonstrated: invalid-prevout transactions that park in Patcheszebrad 4.5.0 The fix adds per-peer queue accounting to the mempool download pipeline. A single peer is limited to a fraction of WorkaroundsThere is no complete configuration-level workaround. Reducing ImpactMempool transaction admission is denied for all honest peers and local RPC clients while the attack is sustained. Block validation and chain synchronization continue normally. The attacker needs only one TCP connection and minimal bandwidth (~1 KB/s of fake CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
GHSA-c8w6-x74f-vmg3
Jul 02, 2026
zebrad vulnerable to full node denial of service via crafted Sapling receiver in z_listunifiedreceivers
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe Details
At The same crate already handles this correctly in Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-443g-gwgp-49x4
Jul 02, 2026
zebrad vulnerable to getblocks/getheaders locator CPU amplification via uncapped vector length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe A single maximally-sized DetailsThe A legitimate block locator is logarithmic in chain length (approximately 30 hashes for the current ~3M-block Zcash chain). Zebra's own send-side cap is The practical impact requires significant attacker bandwidth (approximately 2 MiB per request) and multiple Sybil peers to meaningfully degrade the blocking pool, which limits real-world exploitability. PatchesPatched in Zebra 4.4.2. The fix caps WorkaroundsNo specific workaround is needed. Existing backpressure mechanisms (load shedding, sequential per-peer message processing, connection limits) constrain the practical impact. ImpactUnder sustained load from multiple Sybil peers, oversized locator vectors can occupy blocking-pool threads and degrade state-read performance. The effect is bounded by connection limits and requires significant attacker bandwidth. CreditVulnerability identified by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52731
GHSA-qv2r-v3mx-f4pf
Jul 02, 2026
zebrad has full node denial of service via non-ASCII LongPollId in getblocktemplate
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe DetailsThe Under the Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace byte-index string slicing with character-aware parsing or validate that the Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-44499
GHSA-h9hm-m2xj-4rq9
May 08, 2026
Zebra has Permanent Block Discovery Halt via Gossip Queue Saturation and Syncer Poisoning
High
Network
Low
None
None
SummaryA composite denial-of-service vulnerability in Zebra's block discovery pipeline allows an unauthenticated remote attacker to permanently halt all new block discovery on a targeted node. The attack exploits three independent weaknesses in the gossip, syncer, and download subsystems — all exercisable from a single TCP connection — to create a monotonically growing block deficit that never self-heals. SeverityCritical — This is a Denial of Service vulnerability that requires no authentication, no special privileges, and only a single peer connection. The halt is permanent: the node will never recover without operator intervention. Affected VersionsAll Zebra versions prior to 4.4.0. DescriptionZebra discovers new blocks through two complementary paths: a gossip path (peers announce blocks via The gossip path was vulnerable because there was no per-connection rate limit on The syncer backup path could be degraded by responding with empty Combining these two vectors, an attacker could suppress both block discovery paths simultaneously from a single connection, causing the node to fall permanently behind the chain tip. ImpactDenial of Service
Fixed VersionsThis issue is fixed in Zebra 4.4.0. The fix drops connections that send empty responses to MitigationUsers should upgrade to Zebra 4.4.0 or later immediately. There are no known workarounds for this issue. Immediate upgrade is the only way to protect against this attack. CreditsZebra the researcher who reported this issue through the coordinated disclosure process. Fixed in
4.4.0
References Updated May 08, 2026 · Source: OSV.dev
GHSA-pvmv-cwg8-v6c8
May 08, 2026
Zebra v4.4.0 still accepts V5 SIGHASH_SINGLE without a corresponding output
Critical
Network
Low
None
None
Consensus Divergence in V5 Transparent SIGHASH_SINGLE With No Corresponding OutputSummaryZebra failed to enforce a ZIP-244 consensus rule for V5 transparent transactions: when an input is signed with A previous fix ( SeverityCritical - 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 Affected VersionsZebra 4.4.0. DescriptionVerification of transparent transactions inherits the Bitcoin Script verification code in C++. Since it is consensus-critical, this code is called from Zebra through a foreign function interface (FFI), with a Rust callback that computes the sighash for each input being verified. ZIP-244 §S.2a marks two situations as consensus failure for V5 transparent signatures:
An attacker could exploit this by:
Zebra would verify the transaction's transparent script and accept the transaction (and any block containing it), while ImpactConsensus Failure
Fixed VersionsThis issue is fixed in Zebra 4.4.1. MitigationUsers should upgrade to Zebra 4.4.1 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. CreditsZebra thanks @sangsoo-osec, @zmanian, and @fivelittleducks for finding and reporting the issue. Fixed in
4.4.1
References Updated May 22, 2026 · Source: OSV.dev
GHSA-cwfq-rfcr-8hmp
May 07, 2026
Zebra's Transparent SIGHASH_SINGLE Handling Diverges from zcashd for Corresponding Outputs
Critical
Network
Low
None
None
|
4.2.0
unknown
Dependencies (89)
+ 81 more
Changelog
Compare changes
|
|
4.1.0
unknown
27 CVEs
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev
CVE-2026-52829
GHSA-63wg-wjjj-7cp8
Jul 02, 2026
Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryAn address normalization mismatch between the handshake path and the mempool misbehavior path causes a deterministic assertion panic when a peer connects via IPv4 to a dual-stack IPv6 listener and then triggers a mempool misbehavior penalty. The handshake path canonicalizes IPv4-mapped IPv6 addresses to plain IPv4 when storing the peer in the address book via DetailsOn Linux with The handshake path uses After the 30-second misbehavior batch flush, The attacker needs only to complete a P2P handshake over IPv4 to a dual-stack listener and advertise an invalid mempool transaction (such as a coinbase transaction). The assertion fires after the 30-second misbehavior batch flush. PatchesPatched in Zebra 4.5.0. The fix canonicalizes the address in the misbehavior update path via a new WorkaroundsConfiguring ImpactA remote unauthenticated peer can deterministically crash any synced Zebra node running the default Linux dual-stack configuration with a single invalid mempool transaction advertisement, followed by a 30-second wait. The attack requires no mining capability, no RPC access, no funds, and no special privileges. The crash can be repeated after each restart, causing persistent downtime. Linux dual-stack sockets and mempool activation are the default production state, not special preconditions. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52734
GHSA-65jj-fmw8-468q
Jul 02, 2026
zebrad has unbounded memory leak in mempool download pipeline via timeout path cancel_handles retention
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryThe mempool download pipeline's Details
The only cleanup paths for For direct PatchesThe fix preserves the WorkaroundsThere is no configuration-level workaround. Restarting the node clears the accumulated entries. Operators running in memory-constrained environments (containers with cgroup limits) may see the process killed by the OOM killer before natural recovery. ImpactGradual, unbounded memory exhaustion of a Zebra node from unauthenticated P2P traffic. The leak is monotonic (entries are never freed under normal operation) but slow (~685 KB/s per connection worst case). An attacker must sustain traffic for hours to exhaust typical server memory. The node continues operating normally until memory pressure becomes critical, at which point the OS OOM killer terminates the process or the node degrades due to swap pressure. No consensus impact, no fund loss, no on-disk corruption. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52733
GHSA-2gf8-q9rr-jq3h
Jul 02, 2026
zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip
6.5
/ 10
Medium
Network
High
None
None
Unchanged
None
High
Low
Am I affectedYou are affected if:
All default configurations are affected. The corruption persists across restarts because it is written to RocksDB. SummaryWhen DetailsThe non-finalized state provides two methods for removing blocks: When a chain fork occurs and The Patcheszebra-state 7.0.0 and zebrad 4.5.0. The fix adds subtree root cleanup to WorkaroundsThere 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 ImpactPersistent corruption of Sapling and Orchard subtree root history in the RocksDB state database. The corruption survives node restarts. Downstream consumers that rely on CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52739
GHSA-hhm7-qrv5-h4r6
Jul 02, 2026
Zebra: Repeated Non-Finalized Shielded Transaction Aborts Zebra Before Duplicate-Nullifier Rejection
5.9
/ 10
Medium
Network
High
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
All default configurations are affected. Summary
The block should be rejected with a duplicate-nullifier contextual validation error. Instead, the ordering of index updates within DetailsIn
The shielded nullifier uniqueness check at step 3 would correctly reject the duplicate transaction. But the The block transaction verifier does not run the best-chain nullifier query for block transactions — that check is gated on mempool transactions only ( There are two attack models: Model A (two attacker blocks): The attacker mines two consecutive valid-work blocks: parent B1 containing a shielded transaction T, and child B2 repeating T. This requires controlling both blocks consecutively. Model B (one attacker block after an honest block): The attacker broadcasts a shielded transaction T into the mempool. When any honest miner includes T in their block B1, the attacker only needs to mine the next child block B2 containing the same T. This requires controlling only one block immediately after an honest block that included the attacker's transaction. The attacker can broadcast a suitable shielded transaction every block until one is included by an honest miner, then attempt to mine the follow-up. Both models require the child block to repeat the shielded-only V5 transaction while the parent is still in non-finalized state. Patcheszebra-state 7.0.0 and zebrad 4.5.0. Replace the
WorkaroundsThere is no configuration-level workaround. The assert is in the non-finalized state push path, which is exercised by all block processing past the checkpoint height. ImpactA malicious block producer can crash targeted Zebra nodes. There are two attack models: In the first model, the attacker mines two consecutive valid-work blocks where the child repeats a shielded transaction from the parent. At 10% hashrate, the attacker has approximately 11.5 opportunities per day; at 5%, approximately 2.9 per day; at 1%, approximately one every 8.7 days. In the second model, the attacker broadcasts a shielded transaction into the mempool and waits for any honest miner to include it. The attacker then only needs to mine the next block containing the same transaction. This is cheaper because the attacker does not need to mine the parent block. At 10% hashrate, the attacker has approximately 14.4 single-block opportunities per day; at 5%, approximately 7.2 per day; at 1%, approximately 1.4 per day. The crash is a process abort (not recoverable within the process). The node must be restarted. Repeated attacks can keep a node down for extended periods. This is a liveness issue, not a consensus divergence: zcashd cleanly rejects the invalid child block while Zebra aborts. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52738
GHSA-w834-cf6p-9m9w
Jul 02, 2026
Zebra: Finalized address balance credit-first overflow on consensus-valid blocks
Medium
Network
Low
None
None
Am I affectedYou are affected if:
SummaryThe finalized transparent address balance writer processes all newly-created outputs (credits) before processing spent outputs (debits) within the same block. A consensus-valid block containing a long chain of same-address transparent self-spends can cause the intermediate per-address balance during the credit pass to exceed Because the triggering block is consensus-valid (zcashd accepts it), the panic recurs on restart when the node re-encounters the same block. This creates a persistent chain halt that can only be resolved by a software patch. DetailsThe finalized state writer at The code panics on the intermediate overflow via An attacker with approximately 1,100–2,100 ZEC and mining capability can construct a block that permanently halts all Zebra nodes. The attacker recovers their capital (the self-spends return funds to the same address), so the net cost is the mining effort only. PatchesPatched in Zebra 4.4.2. The fix processes credits and debits together per transaction rather than all credits then all debits, matching zcashd's approach. WorkaroundsNo workaround is available. Upgrade to Zebra 4.4.2. ImpactA single consensus-valid mined block can permanently halt all Zebra nodes on the network. The halt persists across restarts. Recovery requires deploying a patched version. Downstream consumers (light wallets, exchanges, mining infrastructure) lose service for the duration of the halt. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52737
GHSA-gvjc-3w7c-92jx
Jul 02, 2026
Zebra has sync restart poisoning from single unauthenticated peer via above-lookahead block
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryA malicious peer can answer Zebra's outbound On mainnet, each successful cycle imposes a 67-second sync restart delay. All in-flight downloads from honest peers are cancelled on each restart. DetailsThe bug is the interaction of three layers:
The attacker needs only an unauthenticated P2P connection (post-handshake), a tiny payload (one two-hash Additionally, several other pre-consensus sync-layer errors had zero misbehaviour scores even when peer-attributed. Contextual validation failures ( PatchesPatched in Zebra 4.4.2. The fix:
WorkaroundsNo configuration-level workaround is available. The attack is mitigated by having a diverse honest peer set, but cannot be prevented while the vulnerable code is running. ImpactA single unauthenticated peer can repeatedly stall a syncing Zebra node by forcing 67-second global sync restart cycles. All unrelated in-flight downloads are cancelled on each restart. The node does not crash and no state is corrupted, but sync progress is significantly degraded for the duration of the attack. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52735
GHSA-gf9r-m956-97qx
Jul 02, 2026
zebrad has consensus divergence via P2SH sigop undercount in pure-Rust disabled-opcode parser
Critical
Network
Low
None
None
Am I affectedYou are affected if:
All default configurations are affected. No feature flags, non-default settings, or special build options are required. SummaryZebra's P2SH sigop counter uses a pure-Rust code path that short-circuits on disabled opcodes (such as An attacker can exploit this without mining capability. Broadcasting transactions that spend P2SH outputs with malicious redeem scripts is sufficient; any Zebra miner who includes those transactions in a block triggers a chain split between Zebra and zcashd validators. DetailsThe P2SH sigop counter at The Rust parser in zcashd's A redeem script of PatchesPatched in Zebra 4.4.2. The fix routes the P2SH sigop counter through the same C++ FFI already used by the legacy sigop counter. WorkaroundsThere is no configuration-level workaround. All Zebra nodes validating blocks on a network shared with zcashd are affected. Upgrade as soon as the patched version is available. ImpactA chain split between Zebra and zcashd validators. The attacker broadcasts spending transactions referencing P2SH outputs whose redeem scripts contain a disabled opcode followed by The attacker does not need mining capability, RPC access, or any special privileges. The cost is the transaction fees for the funding and spending transactions. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52736
GHSA-4m69-67m6-prqp
Jul 02, 2026
Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache
High
Network
Low
None
None
DescriptionAm I affectedYou are affected if:
All default configurations are affected. SummaryZebra records a block hash in DetailsZIP-244 defines The attack flow over P2P:
A secondary variant exists where chain pruning (via PatchesPatched in Zebra 4.4.2. The fix removes stale entries from WorkaroundsThere is no complete configuration-level workaround. Reducing the node's inbound peer count ( ImpactA remote unauthenticated P2P peer can permanently stall a targeted Zebra node at a specific block height. The node diverges from the network tip; downstream consumers (lightwalletd, wallets, explorers, mining infrastructure) relying on the node see a stalled chain. The attack requires winning a propagation race: delivering the poisoned block body before honest peers deliver the canonical block. A well-positioned attacker (low-latency connection to the target, observation of new blocks from other peers) can reliably win this race. In sustained form, the attacker repeats for each new block, keeping the target permanently behind. Recovery requires restarting the node (which clears the in-memory sent-hash cache) or waiting for a reorg at the affected height (rare on the canonical chain). CreditReported independently by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-h72h-ppcx-998p
Jul 02, 2026
Zebra has pre-handshake buffer capacity reservation based on attacker-claimed body length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe P2P codec's However, Zebra's existing mitigations further constrain the practical attack surface: per-IP connection limits ( DetailsAt No legitimate Zcash handshake message ( PatchesThe fix defers large buffer reservations until after the handshake completes, or caps the per-message reservation for pre-handshake messages to what WorkaroundsNo workaround is needed. The existing per-IP rate limiting, handshake timeout, and connection limits effectively mitigate the practical impact. ImpactMinimal. The reservation affects virtual address space only, not physical memory. Zebra's existing connection-management mitigations (per-IP limits, accept rate, handshake timeout) further constrain the attack. The code path is worth cleaning up for defense-in-depth but does not produce a measurable denial-of-service effect. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52732
GHSA-4fc2-h7jh-287c
Jul 02, 2026
zebrad has mempool transaction admission denial via single-peer inbound queue saturation
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryA single unauthenticated P2P peer can monopolize all 25 inbound mempool download/verification slots ( DetailsThe mempool download/verification pipeline at
The attacker sends Two additional slot-holding techniques have been independently demonstrated: invalid-prevout transactions that park in Patcheszebrad 4.5.0 The fix adds per-peer queue accounting to the mempool download pipeline. A single peer is limited to a fraction of WorkaroundsThere is no complete configuration-level workaround. Reducing ImpactMempool transaction admission is denied for all honest peers and local RPC clients while the attack is sustained. Block validation and chain synchronization continue normally. The attacker needs only one TCP connection and minimal bandwidth (~1 KB/s of fake CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
GHSA-c8w6-x74f-vmg3
Jul 02, 2026
zebrad vulnerable to full node denial of service via crafted Sapling receiver in z_listunifiedreceivers
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe Details
At The same crate already handles this correctly in Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-443g-gwgp-49x4
Jul 02, 2026
zebrad vulnerable to getblocks/getheaders locator CPU amplification via uncapped vector length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe A single maximally-sized DetailsThe A legitimate block locator is logarithmic in chain length (approximately 30 hashes for the current ~3M-block Zcash chain). Zebra's own send-side cap is The practical impact requires significant attacker bandwidth (approximately 2 MiB per request) and multiple Sybil peers to meaningfully degrade the blocking pool, which limits real-world exploitability. PatchesPatched in Zebra 4.4.2. The fix caps WorkaroundsNo specific workaround is needed. Existing backpressure mechanisms (load shedding, sequential per-peer message processing, connection limits) constrain the practical impact. ImpactUnder sustained load from multiple Sybil peers, oversized locator vectors can occupy blocking-pool threads and degrade state-read performance. The effect is bounded by connection limits and requires significant attacker bandwidth. CreditVulnerability identified by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52731
GHSA-qv2r-v3mx-f4pf
Jul 02, 2026
zebrad has full node denial of service via non-ASCII LongPollId in getblocktemplate
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe DetailsThe Under the Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace byte-index string slicing with character-aware parsing or validate that the Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-44499
GHSA-h9hm-m2xj-4rq9
May 08, 2026
Zebra has Permanent Block Discovery Halt via Gossip Queue Saturation and Syncer Poisoning
High
Network
Low
None
None
SummaryA composite denial-of-service vulnerability in Zebra's block discovery pipeline allows an unauthenticated remote attacker to permanently halt all new block discovery on a targeted node. The attack exploits three independent weaknesses in the gossip, syncer, and download subsystems — all exercisable from a single TCP connection — to create a monotonically growing block deficit that never self-heals. SeverityCritical — This is a Denial of Service vulnerability that requires no authentication, no special privileges, and only a single peer connection. The halt is permanent: the node will never recover without operator intervention. Affected VersionsAll Zebra versions prior to 4.4.0. DescriptionZebra discovers new blocks through two complementary paths: a gossip path (peers announce blocks via The gossip path was vulnerable because there was no per-connection rate limit on The syncer backup path could be degraded by responding with empty Combining these two vectors, an attacker could suppress both block discovery paths simultaneously from a single connection, causing the node to fall permanently behind the chain tip. ImpactDenial of Service
Fixed VersionsThis issue is fixed in Zebra 4.4.0. The fix drops connections that send empty responses to MitigationUsers should upgrade to Zebra 4.4.0 or later immediately. There are no known workarounds for this issue. Immediate upgrade is the only way to protect against this attack. CreditsZebra the researcher who reported this issue through the coordinated disclosure process. Fixed in
4.4.0
References Updated May 08, 2026 · Source: OSV.dev
GHSA-pvmv-cwg8-v6c8
May 08, 2026
Zebra v4.4.0 still accepts V5 SIGHASH_SINGLE without a corresponding output
Critical
Network
Low
None
None
Consensus Divergence in V5 Transparent SIGHASH_SINGLE With No Corresponding OutputSummaryZebra failed to enforce a ZIP-244 consensus rule for V5 transparent transactions: when an input is signed with A previous fix ( SeverityCritical - 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 Affected VersionsZebra 4.4.0. DescriptionVerification of transparent transactions inherits the Bitcoin Script verification code in C++. Since it is consensus-critical, this code is called from Zebra through a foreign function interface (FFI), with a Rust callback that computes the sighash for each input being verified. ZIP-244 §S.2a marks two situations as consensus failure for V5 transparent signatures:
An attacker could exploit this by:
Zebra would verify the transaction's transparent script and accept the transaction (and any block containing it), while ImpactConsensus Failure
Fixed VersionsThis issue is fixed in Zebra 4.4.1. MitigationUsers should upgrade to Zebra 4.4.1 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. CreditsZebra thanks @sangsoo-osec, @zmanian, and @fivelittleducks for finding and reporting the issue. Fixed in
4.4.1
References Updated May 22, 2026 · Source: OSV.dev
GHSA-cwfq-rfcr-8hmp
May 07, 2026
Zebra's Transparent SIGHASH_SINGLE Handling Diverges from zcashd for Corresponding Outputs
Critical
Network
Low
None
None
|
4.1.0
unknown
Dependencies (89)
+ 81 more
Changelog
Compare changes
|
|
4.0.0
unknown
27 CVEs
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev
CVE-2026-52829
GHSA-63wg-wjjj-7cp8
Jul 02, 2026
Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryAn address normalization mismatch between the handshake path and the mempool misbehavior path causes a deterministic assertion panic when a peer connects via IPv4 to a dual-stack IPv6 listener and then triggers a mempool misbehavior penalty. The handshake path canonicalizes IPv4-mapped IPv6 addresses to plain IPv4 when storing the peer in the address book via DetailsOn Linux with The handshake path uses After the 30-second misbehavior batch flush, The attacker needs only to complete a P2P handshake over IPv4 to a dual-stack listener and advertise an invalid mempool transaction (such as a coinbase transaction). The assertion fires after the 30-second misbehavior batch flush. PatchesPatched in Zebra 4.5.0. The fix canonicalizes the address in the misbehavior update path via a new WorkaroundsConfiguring ImpactA remote unauthenticated peer can deterministically crash any synced Zebra node running the default Linux dual-stack configuration with a single invalid mempool transaction advertisement, followed by a 30-second wait. The attack requires no mining capability, no RPC access, no funds, and no special privileges. The crash can be repeated after each restart, causing persistent downtime. Linux dual-stack sockets and mempool activation are the default production state, not special preconditions. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52734
GHSA-65jj-fmw8-468q
Jul 02, 2026
zebrad has unbounded memory leak in mempool download pipeline via timeout path cancel_handles retention
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryThe mempool download pipeline's Details
The only cleanup paths for For direct PatchesThe fix preserves the WorkaroundsThere is no configuration-level workaround. Restarting the node clears the accumulated entries. Operators running in memory-constrained environments (containers with cgroup limits) may see the process killed by the OOM killer before natural recovery. ImpactGradual, unbounded memory exhaustion of a Zebra node from unauthenticated P2P traffic. The leak is monotonic (entries are never freed under normal operation) but slow (~685 KB/s per connection worst case). An attacker must sustain traffic for hours to exhaust typical server memory. The node continues operating normally until memory pressure becomes critical, at which point the OS OOM killer terminates the process or the node degrades due to swap pressure. No consensus impact, no fund loss, no on-disk corruption. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52733
GHSA-2gf8-q9rr-jq3h
Jul 02, 2026
zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip
6.5
/ 10
Medium
Network
High
None
None
Unchanged
None
High
Low
Am I affectedYou are affected if:
All default configurations are affected. The corruption persists across restarts because it is written to RocksDB. SummaryWhen DetailsThe non-finalized state provides two methods for removing blocks: When a chain fork occurs and The Patcheszebra-state 7.0.0 and zebrad 4.5.0. The fix adds subtree root cleanup to WorkaroundsThere 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 ImpactPersistent corruption of Sapling and Orchard subtree root history in the RocksDB state database. The corruption survives node restarts. Downstream consumers that rely on CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52739
GHSA-hhm7-qrv5-h4r6
Jul 02, 2026
Zebra: Repeated Non-Finalized Shielded Transaction Aborts Zebra Before Duplicate-Nullifier Rejection
5.9
/ 10
Medium
Network
High
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
All default configurations are affected. Summary
The block should be rejected with a duplicate-nullifier contextual validation error. Instead, the ordering of index updates within DetailsIn
The shielded nullifier uniqueness check at step 3 would correctly reject the duplicate transaction. But the The block transaction verifier does not run the best-chain nullifier query for block transactions — that check is gated on mempool transactions only ( There are two attack models: Model A (two attacker blocks): The attacker mines two consecutive valid-work blocks: parent B1 containing a shielded transaction T, and child B2 repeating T. This requires controlling both blocks consecutively. Model B (one attacker block after an honest block): The attacker broadcasts a shielded transaction T into the mempool. When any honest miner includes T in their block B1, the attacker only needs to mine the next child block B2 containing the same T. This requires controlling only one block immediately after an honest block that included the attacker's transaction. The attacker can broadcast a suitable shielded transaction every block until one is included by an honest miner, then attempt to mine the follow-up. Both models require the child block to repeat the shielded-only V5 transaction while the parent is still in non-finalized state. Patcheszebra-state 7.0.0 and zebrad 4.5.0. Replace the
WorkaroundsThere is no configuration-level workaround. The assert is in the non-finalized state push path, which is exercised by all block processing past the checkpoint height. ImpactA malicious block producer can crash targeted Zebra nodes. There are two attack models: In the first model, the attacker mines two consecutive valid-work blocks where the child repeats a shielded transaction from the parent. At 10% hashrate, the attacker has approximately 11.5 opportunities per day; at 5%, approximately 2.9 per day; at 1%, approximately one every 8.7 days. In the second model, the attacker broadcasts a shielded transaction into the mempool and waits for any honest miner to include it. The attacker then only needs to mine the next block containing the same transaction. This is cheaper because the attacker does not need to mine the parent block. At 10% hashrate, the attacker has approximately 14.4 single-block opportunities per day; at 5%, approximately 7.2 per day; at 1%, approximately 1.4 per day. The crash is a process abort (not recoverable within the process). The node must be restarted. Repeated attacks can keep a node down for extended periods. This is a liveness issue, not a consensus divergence: zcashd cleanly rejects the invalid child block while Zebra aborts. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52738
GHSA-w834-cf6p-9m9w
Jul 02, 2026
Zebra: Finalized address balance credit-first overflow on consensus-valid blocks
Medium
Network
Low
None
None
Am I affectedYou are affected if:
SummaryThe finalized transparent address balance writer processes all newly-created outputs (credits) before processing spent outputs (debits) within the same block. A consensus-valid block containing a long chain of same-address transparent self-spends can cause the intermediate per-address balance during the credit pass to exceed Because the triggering block is consensus-valid (zcashd accepts it), the panic recurs on restart when the node re-encounters the same block. This creates a persistent chain halt that can only be resolved by a software patch. DetailsThe finalized state writer at The code panics on the intermediate overflow via An attacker with approximately 1,100–2,100 ZEC and mining capability can construct a block that permanently halts all Zebra nodes. The attacker recovers their capital (the self-spends return funds to the same address), so the net cost is the mining effort only. PatchesPatched in Zebra 4.4.2. The fix processes credits and debits together per transaction rather than all credits then all debits, matching zcashd's approach. WorkaroundsNo workaround is available. Upgrade to Zebra 4.4.2. ImpactA single consensus-valid mined block can permanently halt all Zebra nodes on the network. The halt persists across restarts. Recovery requires deploying a patched version. Downstream consumers (light wallets, exchanges, mining infrastructure) lose service for the duration of the halt. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52737
GHSA-gvjc-3w7c-92jx
Jul 02, 2026
Zebra has sync restart poisoning from single unauthenticated peer via above-lookahead block
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryA malicious peer can answer Zebra's outbound On mainnet, each successful cycle imposes a 67-second sync restart delay. All in-flight downloads from honest peers are cancelled on each restart. DetailsThe bug is the interaction of three layers:
The attacker needs only an unauthenticated P2P connection (post-handshake), a tiny payload (one two-hash Additionally, several other pre-consensus sync-layer errors had zero misbehaviour scores even when peer-attributed. Contextual validation failures ( PatchesPatched in Zebra 4.4.2. The fix:
WorkaroundsNo configuration-level workaround is available. The attack is mitigated by having a diverse honest peer set, but cannot be prevented while the vulnerable code is running. ImpactA single unauthenticated peer can repeatedly stall a syncing Zebra node by forcing 67-second global sync restart cycles. All unrelated in-flight downloads are cancelled on each restart. The node does not crash and no state is corrupted, but sync progress is significantly degraded for the duration of the attack. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52735
GHSA-gf9r-m956-97qx
Jul 02, 2026
zebrad has consensus divergence via P2SH sigop undercount in pure-Rust disabled-opcode parser
Critical
Network
Low
None
None
Am I affectedYou are affected if:
All default configurations are affected. No feature flags, non-default settings, or special build options are required. SummaryZebra's P2SH sigop counter uses a pure-Rust code path that short-circuits on disabled opcodes (such as An attacker can exploit this without mining capability. Broadcasting transactions that spend P2SH outputs with malicious redeem scripts is sufficient; any Zebra miner who includes those transactions in a block triggers a chain split between Zebra and zcashd validators. DetailsThe P2SH sigop counter at The Rust parser in zcashd's A redeem script of PatchesPatched in Zebra 4.4.2. The fix routes the P2SH sigop counter through the same C++ FFI already used by the legacy sigop counter. WorkaroundsThere is no configuration-level workaround. All Zebra nodes validating blocks on a network shared with zcashd are affected. Upgrade as soon as the patched version is available. ImpactA chain split between Zebra and zcashd validators. The attacker broadcasts spending transactions referencing P2SH outputs whose redeem scripts contain a disabled opcode followed by The attacker does not need mining capability, RPC access, or any special privileges. The cost is the transaction fees for the funding and spending transactions. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52736
GHSA-4m69-67m6-prqp
Jul 02, 2026
Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache
High
Network
Low
None
None
DescriptionAm I affectedYou are affected if:
All default configurations are affected. SummaryZebra records a block hash in DetailsZIP-244 defines The attack flow over P2P:
A secondary variant exists where chain pruning (via PatchesPatched in Zebra 4.4.2. The fix removes stale entries from WorkaroundsThere is no complete configuration-level workaround. Reducing the node's inbound peer count ( ImpactA remote unauthenticated P2P peer can permanently stall a targeted Zebra node at a specific block height. The node diverges from the network tip; downstream consumers (lightwalletd, wallets, explorers, mining infrastructure) relying on the node see a stalled chain. The attack requires winning a propagation race: delivering the poisoned block body before honest peers deliver the canonical block. A well-positioned attacker (low-latency connection to the target, observation of new blocks from other peers) can reliably win this race. In sustained form, the attacker repeats for each new block, keeping the target permanently behind. Recovery requires restarting the node (which clears the in-memory sent-hash cache) or waiting for a reorg at the affected height (rare on the canonical chain). CreditReported independently by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-h72h-ppcx-998p
Jul 02, 2026
Zebra has pre-handshake buffer capacity reservation based on attacker-claimed body length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe P2P codec's However, Zebra's existing mitigations further constrain the practical attack surface: per-IP connection limits ( DetailsAt No legitimate Zcash handshake message ( PatchesThe fix defers large buffer reservations until after the handshake completes, or caps the per-message reservation for pre-handshake messages to what WorkaroundsNo workaround is needed. The existing per-IP rate limiting, handshake timeout, and connection limits effectively mitigate the practical impact. ImpactMinimal. The reservation affects virtual address space only, not physical memory. Zebra's existing connection-management mitigations (per-IP limits, accept rate, handshake timeout) further constrain the attack. The code path is worth cleaning up for defense-in-depth but does not produce a measurable denial-of-service effect. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52732
GHSA-4fc2-h7jh-287c
Jul 02, 2026
zebrad has mempool transaction admission denial via single-peer inbound queue saturation
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryA single unauthenticated P2P peer can monopolize all 25 inbound mempool download/verification slots ( DetailsThe mempool download/verification pipeline at
The attacker sends Two additional slot-holding techniques have been independently demonstrated: invalid-prevout transactions that park in Patcheszebrad 4.5.0 The fix adds per-peer queue accounting to the mempool download pipeline. A single peer is limited to a fraction of WorkaroundsThere is no complete configuration-level workaround. Reducing ImpactMempool transaction admission is denied for all honest peers and local RPC clients while the attack is sustained. Block validation and chain synchronization continue normally. The attacker needs only one TCP connection and minimal bandwidth (~1 KB/s of fake CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
GHSA-c8w6-x74f-vmg3
Jul 02, 2026
zebrad vulnerable to full node denial of service via crafted Sapling receiver in z_listunifiedreceivers
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe Details
At The same crate already handles this correctly in Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-443g-gwgp-49x4
Jul 02, 2026
zebrad vulnerable to getblocks/getheaders locator CPU amplification via uncapped vector length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe A single maximally-sized DetailsThe A legitimate block locator is logarithmic in chain length (approximately 30 hashes for the current ~3M-block Zcash chain). Zebra's own send-side cap is The practical impact requires significant attacker bandwidth (approximately 2 MiB per request) and multiple Sybil peers to meaningfully degrade the blocking pool, which limits real-world exploitability. PatchesPatched in Zebra 4.4.2. The fix caps WorkaroundsNo specific workaround is needed. Existing backpressure mechanisms (load shedding, sequential per-peer message processing, connection limits) constrain the practical impact. ImpactUnder sustained load from multiple Sybil peers, oversized locator vectors can occupy blocking-pool threads and degrade state-read performance. The effect is bounded by connection limits and requires significant attacker bandwidth. CreditVulnerability identified by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52731
GHSA-qv2r-v3mx-f4pf
Jul 02, 2026
zebrad has full node denial of service via non-ASCII LongPollId in getblocktemplate
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe DetailsThe Under the Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace byte-index string slicing with character-aware parsing or validate that the Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-44499
GHSA-h9hm-m2xj-4rq9
May 08, 2026
Zebra has Permanent Block Discovery Halt via Gossip Queue Saturation and Syncer Poisoning
High
Network
Low
None
None
SummaryA composite denial-of-service vulnerability in Zebra's block discovery pipeline allows an unauthenticated remote attacker to permanently halt all new block discovery on a targeted node. The attack exploits three independent weaknesses in the gossip, syncer, and download subsystems — all exercisable from a single TCP connection — to create a monotonically growing block deficit that never self-heals. SeverityCritical — This is a Denial of Service vulnerability that requires no authentication, no special privileges, and only a single peer connection. The halt is permanent: the node will never recover without operator intervention. Affected VersionsAll Zebra versions prior to 4.4.0. DescriptionZebra discovers new blocks through two complementary paths: a gossip path (peers announce blocks via The gossip path was vulnerable because there was no per-connection rate limit on The syncer backup path could be degraded by responding with empty Combining these two vectors, an attacker could suppress both block discovery paths simultaneously from a single connection, causing the node to fall permanently behind the chain tip. ImpactDenial of Service
Fixed VersionsThis issue is fixed in Zebra 4.4.0. The fix drops connections that send empty responses to MitigationUsers should upgrade to Zebra 4.4.0 or later immediately. There are no known workarounds for this issue. Immediate upgrade is the only way to protect against this attack. CreditsZebra the researcher who reported this issue through the coordinated disclosure process. Fixed in
4.4.0
References Updated May 08, 2026 · Source: OSV.dev
GHSA-pvmv-cwg8-v6c8
May 08, 2026
Zebra v4.4.0 still accepts V5 SIGHASH_SINGLE without a corresponding output
Critical
Network
Low
None
None
Consensus Divergence in V5 Transparent SIGHASH_SINGLE With No Corresponding OutputSummaryZebra failed to enforce a ZIP-244 consensus rule for V5 transparent transactions: when an input is signed with A previous fix ( SeverityCritical - 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 Affected VersionsZebra 4.4.0. DescriptionVerification of transparent transactions inherits the Bitcoin Script verification code in C++. Since it is consensus-critical, this code is called from Zebra through a foreign function interface (FFI), with a Rust callback that computes the sighash for each input being verified. ZIP-244 §S.2a marks two situations as consensus failure for V5 transparent signatures:
An attacker could exploit this by:
Zebra would verify the transaction's transparent script and accept the transaction (and any block containing it), while ImpactConsensus Failure
Fixed VersionsThis issue is fixed in Zebra 4.4.1. MitigationUsers should upgrade to Zebra 4.4.1 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. CreditsZebra thanks @sangsoo-osec, @zmanian, and @fivelittleducks for finding and reporting the issue. Fixed in
4.4.1
References Updated May 22, 2026 · Source: OSV.dev
GHSA-cwfq-rfcr-8hmp
May 07, 2026
Zebra's Transparent SIGHASH_SINGLE Handling Diverges from zcashd for Corresponding Outputs
Critical
Network
Low
None
None
|
4.0.0
unknown
Dependencies (88)
+ 80 more
Changelog
Compare changes
|
|
3.1.0
unknown
27 CVEs
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev
CVE-2026-52829
GHSA-63wg-wjjj-7cp8
Jul 02, 2026
Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryAn address normalization mismatch between the handshake path and the mempool misbehavior path causes a deterministic assertion panic when a peer connects via IPv4 to a dual-stack IPv6 listener and then triggers a mempool misbehavior penalty. The handshake path canonicalizes IPv4-mapped IPv6 addresses to plain IPv4 when storing the peer in the address book via DetailsOn Linux with The handshake path uses After the 30-second misbehavior batch flush, The attacker needs only to complete a P2P handshake over IPv4 to a dual-stack listener and advertise an invalid mempool transaction (such as a coinbase transaction). The assertion fires after the 30-second misbehavior batch flush. PatchesPatched in Zebra 4.5.0. The fix canonicalizes the address in the misbehavior update path via a new WorkaroundsConfiguring ImpactA remote unauthenticated peer can deterministically crash any synced Zebra node running the default Linux dual-stack configuration with a single invalid mempool transaction advertisement, followed by a 30-second wait. The attack requires no mining capability, no RPC access, no funds, and no special privileges. The crash can be repeated after each restart, causing persistent downtime. Linux dual-stack sockets and mempool activation are the default production state, not special preconditions. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52734
GHSA-65jj-fmw8-468q
Jul 02, 2026
zebrad has unbounded memory leak in mempool download pipeline via timeout path cancel_handles retention
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryThe mempool download pipeline's Details
The only cleanup paths for For direct PatchesThe fix preserves the WorkaroundsThere is no configuration-level workaround. Restarting the node clears the accumulated entries. Operators running in memory-constrained environments (containers with cgroup limits) may see the process killed by the OOM killer before natural recovery. ImpactGradual, unbounded memory exhaustion of a Zebra node from unauthenticated P2P traffic. The leak is monotonic (entries are never freed under normal operation) but slow (~685 KB/s per connection worst case). An attacker must sustain traffic for hours to exhaust typical server memory. The node continues operating normally until memory pressure becomes critical, at which point the OS OOM killer terminates the process or the node degrades due to swap pressure. No consensus impact, no fund loss, no on-disk corruption. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52733
GHSA-2gf8-q9rr-jq3h
Jul 02, 2026
zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip
6.5
/ 10
Medium
Network
High
None
None
Unchanged
None
High
Low
Am I affectedYou are affected if:
All default configurations are affected. The corruption persists across restarts because it is written to RocksDB. SummaryWhen DetailsThe non-finalized state provides two methods for removing blocks: When a chain fork occurs and The Patcheszebra-state 7.0.0 and zebrad 4.5.0. The fix adds subtree root cleanup to WorkaroundsThere 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 ImpactPersistent corruption of Sapling and Orchard subtree root history in the RocksDB state database. The corruption survives node restarts. Downstream consumers that rely on CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52739
GHSA-hhm7-qrv5-h4r6
Jul 02, 2026
Zebra: Repeated Non-Finalized Shielded Transaction Aborts Zebra Before Duplicate-Nullifier Rejection
5.9
/ 10
Medium
Network
High
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
All default configurations are affected. Summary
The block should be rejected with a duplicate-nullifier contextual validation error. Instead, the ordering of index updates within DetailsIn
The shielded nullifier uniqueness check at step 3 would correctly reject the duplicate transaction. But the The block transaction verifier does not run the best-chain nullifier query for block transactions — that check is gated on mempool transactions only ( There are two attack models: Model A (two attacker blocks): The attacker mines two consecutive valid-work blocks: parent B1 containing a shielded transaction T, and child B2 repeating T. This requires controlling both blocks consecutively. Model B (one attacker block after an honest block): The attacker broadcasts a shielded transaction T into the mempool. When any honest miner includes T in their block B1, the attacker only needs to mine the next child block B2 containing the same T. This requires controlling only one block immediately after an honest block that included the attacker's transaction. The attacker can broadcast a suitable shielded transaction every block until one is included by an honest miner, then attempt to mine the follow-up. Both models require the child block to repeat the shielded-only V5 transaction while the parent is still in non-finalized state. Patcheszebra-state 7.0.0 and zebrad 4.5.0. Replace the
WorkaroundsThere is no configuration-level workaround. The assert is in the non-finalized state push path, which is exercised by all block processing past the checkpoint height. ImpactA malicious block producer can crash targeted Zebra nodes. There are two attack models: In the first model, the attacker mines two consecutive valid-work blocks where the child repeats a shielded transaction from the parent. At 10% hashrate, the attacker has approximately 11.5 opportunities per day; at 5%, approximately 2.9 per day; at 1%, approximately one every 8.7 days. In the second model, the attacker broadcasts a shielded transaction into the mempool and waits for any honest miner to include it. The attacker then only needs to mine the next block containing the same transaction. This is cheaper because the attacker does not need to mine the parent block. At 10% hashrate, the attacker has approximately 14.4 single-block opportunities per day; at 5%, approximately 7.2 per day; at 1%, approximately 1.4 per day. The crash is a process abort (not recoverable within the process). The node must be restarted. Repeated attacks can keep a node down for extended periods. This is a liveness issue, not a consensus divergence: zcashd cleanly rejects the invalid child block while Zebra aborts. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52738
GHSA-w834-cf6p-9m9w
Jul 02, 2026
Zebra: Finalized address balance credit-first overflow on consensus-valid blocks
Medium
Network
Low
None
None
Am I affectedYou are affected if:
SummaryThe finalized transparent address balance writer processes all newly-created outputs (credits) before processing spent outputs (debits) within the same block. A consensus-valid block containing a long chain of same-address transparent self-spends can cause the intermediate per-address balance during the credit pass to exceed Because the triggering block is consensus-valid (zcashd accepts it), the panic recurs on restart when the node re-encounters the same block. This creates a persistent chain halt that can only be resolved by a software patch. DetailsThe finalized state writer at The code panics on the intermediate overflow via An attacker with approximately 1,100–2,100 ZEC and mining capability can construct a block that permanently halts all Zebra nodes. The attacker recovers their capital (the self-spends return funds to the same address), so the net cost is the mining effort only. PatchesPatched in Zebra 4.4.2. The fix processes credits and debits together per transaction rather than all credits then all debits, matching zcashd's approach. WorkaroundsNo workaround is available. Upgrade to Zebra 4.4.2. ImpactA single consensus-valid mined block can permanently halt all Zebra nodes on the network. The halt persists across restarts. Recovery requires deploying a patched version. Downstream consumers (light wallets, exchanges, mining infrastructure) lose service for the duration of the halt. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52737
GHSA-gvjc-3w7c-92jx
Jul 02, 2026
Zebra has sync restart poisoning from single unauthenticated peer via above-lookahead block
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryA malicious peer can answer Zebra's outbound On mainnet, each successful cycle imposes a 67-second sync restart delay. All in-flight downloads from honest peers are cancelled on each restart. DetailsThe bug is the interaction of three layers:
The attacker needs only an unauthenticated P2P connection (post-handshake), a tiny payload (one two-hash Additionally, several other pre-consensus sync-layer errors had zero misbehaviour scores even when peer-attributed. Contextual validation failures ( PatchesPatched in Zebra 4.4.2. The fix:
WorkaroundsNo configuration-level workaround is available. The attack is mitigated by having a diverse honest peer set, but cannot be prevented while the vulnerable code is running. ImpactA single unauthenticated peer can repeatedly stall a syncing Zebra node by forcing 67-second global sync restart cycles. All unrelated in-flight downloads are cancelled on each restart. The node does not crash and no state is corrupted, but sync progress is significantly degraded for the duration of the attack. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52735
GHSA-gf9r-m956-97qx
Jul 02, 2026
zebrad has consensus divergence via P2SH sigop undercount in pure-Rust disabled-opcode parser
Critical
Network
Low
None
None
Am I affectedYou are affected if:
All default configurations are affected. No feature flags, non-default settings, or special build options are required. SummaryZebra's P2SH sigop counter uses a pure-Rust code path that short-circuits on disabled opcodes (such as An attacker can exploit this without mining capability. Broadcasting transactions that spend P2SH outputs with malicious redeem scripts is sufficient; any Zebra miner who includes those transactions in a block triggers a chain split between Zebra and zcashd validators. DetailsThe P2SH sigop counter at The Rust parser in zcashd's A redeem script of PatchesPatched in Zebra 4.4.2. The fix routes the P2SH sigop counter through the same C++ FFI already used by the legacy sigop counter. WorkaroundsThere is no configuration-level workaround. All Zebra nodes validating blocks on a network shared with zcashd are affected. Upgrade as soon as the patched version is available. ImpactA chain split between Zebra and zcashd validators. The attacker broadcasts spending transactions referencing P2SH outputs whose redeem scripts contain a disabled opcode followed by The attacker does not need mining capability, RPC access, or any special privileges. The cost is the transaction fees for the funding and spending transactions. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52736
GHSA-4m69-67m6-prqp
Jul 02, 2026
Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache
High
Network
Low
None
None
DescriptionAm I affectedYou are affected if:
All default configurations are affected. SummaryZebra records a block hash in DetailsZIP-244 defines The attack flow over P2P:
A secondary variant exists where chain pruning (via PatchesPatched in Zebra 4.4.2. The fix removes stale entries from WorkaroundsThere is no complete configuration-level workaround. Reducing the node's inbound peer count ( ImpactA remote unauthenticated P2P peer can permanently stall a targeted Zebra node at a specific block height. The node diverges from the network tip; downstream consumers (lightwalletd, wallets, explorers, mining infrastructure) relying on the node see a stalled chain. The attack requires winning a propagation race: delivering the poisoned block body before honest peers deliver the canonical block. A well-positioned attacker (low-latency connection to the target, observation of new blocks from other peers) can reliably win this race. In sustained form, the attacker repeats for each new block, keeping the target permanently behind. Recovery requires restarting the node (which clears the in-memory sent-hash cache) or waiting for a reorg at the affected height (rare on the canonical chain). CreditReported independently by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-h72h-ppcx-998p
Jul 02, 2026
Zebra has pre-handshake buffer capacity reservation based on attacker-claimed body length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe P2P codec's However, Zebra's existing mitigations further constrain the practical attack surface: per-IP connection limits ( DetailsAt No legitimate Zcash handshake message ( PatchesThe fix defers large buffer reservations until after the handshake completes, or caps the per-message reservation for pre-handshake messages to what WorkaroundsNo workaround is needed. The existing per-IP rate limiting, handshake timeout, and connection limits effectively mitigate the practical impact. ImpactMinimal. The reservation affects virtual address space only, not physical memory. Zebra's existing connection-management mitigations (per-IP limits, accept rate, handshake timeout) further constrain the attack. The code path is worth cleaning up for defense-in-depth but does not produce a measurable denial-of-service effect. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52732
GHSA-4fc2-h7jh-287c
Jul 02, 2026
zebrad has mempool transaction admission denial via single-peer inbound queue saturation
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryA single unauthenticated P2P peer can monopolize all 25 inbound mempool download/verification slots ( DetailsThe mempool download/verification pipeline at
The attacker sends Two additional slot-holding techniques have been independently demonstrated: invalid-prevout transactions that park in Patcheszebrad 4.5.0 The fix adds per-peer queue accounting to the mempool download pipeline. A single peer is limited to a fraction of WorkaroundsThere is no complete configuration-level workaround. Reducing ImpactMempool transaction admission is denied for all honest peers and local RPC clients while the attack is sustained. Block validation and chain synchronization continue normally. The attacker needs only one TCP connection and minimal bandwidth (~1 KB/s of fake CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
GHSA-c8w6-x74f-vmg3
Jul 02, 2026
zebrad vulnerable to full node denial of service via crafted Sapling receiver in z_listunifiedreceivers
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe Details
At The same crate already handles this correctly in Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-443g-gwgp-49x4
Jul 02, 2026
zebrad vulnerable to getblocks/getheaders locator CPU amplification via uncapped vector length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe A single maximally-sized DetailsThe A legitimate block locator is logarithmic in chain length (approximately 30 hashes for the current ~3M-block Zcash chain). Zebra's own send-side cap is The practical impact requires significant attacker bandwidth (approximately 2 MiB per request) and multiple Sybil peers to meaningfully degrade the blocking pool, which limits real-world exploitability. PatchesPatched in Zebra 4.4.2. The fix caps WorkaroundsNo specific workaround is needed. Existing backpressure mechanisms (load shedding, sequential per-peer message processing, connection limits) constrain the practical impact. ImpactUnder sustained load from multiple Sybil peers, oversized locator vectors can occupy blocking-pool threads and degrade state-read performance. The effect is bounded by connection limits and requires significant attacker bandwidth. CreditVulnerability identified by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52731
GHSA-qv2r-v3mx-f4pf
Jul 02, 2026
zebrad has full node denial of service via non-ASCII LongPollId in getblocktemplate
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe DetailsThe Under the Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace byte-index string slicing with character-aware parsing or validate that the Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-44499
GHSA-h9hm-m2xj-4rq9
May 08, 2026
Zebra has Permanent Block Discovery Halt via Gossip Queue Saturation and Syncer Poisoning
High
Network
Low
None
None
SummaryA composite denial-of-service vulnerability in Zebra's block discovery pipeline allows an unauthenticated remote attacker to permanently halt all new block discovery on a targeted node. The attack exploits three independent weaknesses in the gossip, syncer, and download subsystems — all exercisable from a single TCP connection — to create a monotonically growing block deficit that never self-heals. SeverityCritical — This is a Denial of Service vulnerability that requires no authentication, no special privileges, and only a single peer connection. The halt is permanent: the node will never recover without operator intervention. Affected VersionsAll Zebra versions prior to 4.4.0. DescriptionZebra discovers new blocks through two complementary paths: a gossip path (peers announce blocks via The gossip path was vulnerable because there was no per-connection rate limit on The syncer backup path could be degraded by responding with empty Combining these two vectors, an attacker could suppress both block discovery paths simultaneously from a single connection, causing the node to fall permanently behind the chain tip. ImpactDenial of Service
Fixed VersionsThis issue is fixed in Zebra 4.4.0. The fix drops connections that send empty responses to MitigationUsers should upgrade to Zebra 4.4.0 or later immediately. There are no known workarounds for this issue. Immediate upgrade is the only way to protect against this attack. CreditsZebra the researcher who reported this issue through the coordinated disclosure process. Fixed in
4.4.0
References Updated May 08, 2026 · Source: OSV.dev
GHSA-pvmv-cwg8-v6c8
May 08, 2026
Zebra v4.4.0 still accepts V5 SIGHASH_SINGLE without a corresponding output
Critical
Network
Low
None
None
Consensus Divergence in V5 Transparent SIGHASH_SINGLE With No Corresponding OutputSummaryZebra failed to enforce a ZIP-244 consensus rule for V5 transparent transactions: when an input is signed with A previous fix ( SeverityCritical - 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 Affected VersionsZebra 4.4.0. DescriptionVerification of transparent transactions inherits the Bitcoin Script verification code in C++. Since it is consensus-critical, this code is called from Zebra through a foreign function interface (FFI), with a Rust callback that computes the sighash for each input being verified. ZIP-244 §S.2a marks two situations as consensus failure for V5 transparent signatures:
An attacker could exploit this by:
Zebra would verify the transaction's transparent script and accept the transaction (and any block containing it), while ImpactConsensus Failure
Fixed VersionsThis issue is fixed in Zebra 4.4.1. MitigationUsers should upgrade to Zebra 4.4.1 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. CreditsZebra thanks @sangsoo-osec, @zmanian, and @fivelittleducks for finding and reporting the issue. Fixed in
4.4.1
References Updated May 22, 2026 · Source: OSV.dev
GHSA-cwfq-rfcr-8hmp
May 07, 2026
Zebra's Transparent SIGHASH_SINGLE Handling Diverges from zcashd for Corresponding Outputs
Critical
Network
Low
None
None
|
3.1.0
unknown
Dependencies (84)
+ 76 more
Changelog
Compare changes
|
|
3.0.0
unknown
27 CVEs
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev
CVE-2026-52829
GHSA-63wg-wjjj-7cp8
Jul 02, 2026
Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryAn address normalization mismatch between the handshake path and the mempool misbehavior path causes a deterministic assertion panic when a peer connects via IPv4 to a dual-stack IPv6 listener and then triggers a mempool misbehavior penalty. The handshake path canonicalizes IPv4-mapped IPv6 addresses to plain IPv4 when storing the peer in the address book via DetailsOn Linux with The handshake path uses After the 30-second misbehavior batch flush, The attacker needs only to complete a P2P handshake over IPv4 to a dual-stack listener and advertise an invalid mempool transaction (such as a coinbase transaction). The assertion fires after the 30-second misbehavior batch flush. PatchesPatched in Zebra 4.5.0. The fix canonicalizes the address in the misbehavior update path via a new WorkaroundsConfiguring ImpactA remote unauthenticated peer can deterministically crash any synced Zebra node running the default Linux dual-stack configuration with a single invalid mempool transaction advertisement, followed by a 30-second wait. The attack requires no mining capability, no RPC access, no funds, and no special privileges. The crash can be repeated after each restart, causing persistent downtime. Linux dual-stack sockets and mempool activation are the default production state, not special preconditions. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52734
GHSA-65jj-fmw8-468q
Jul 02, 2026
zebrad has unbounded memory leak in mempool download pipeline via timeout path cancel_handles retention
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryThe mempool download pipeline's Details
The only cleanup paths for For direct PatchesThe fix preserves the WorkaroundsThere is no configuration-level workaround. Restarting the node clears the accumulated entries. Operators running in memory-constrained environments (containers with cgroup limits) may see the process killed by the OOM killer before natural recovery. ImpactGradual, unbounded memory exhaustion of a Zebra node from unauthenticated P2P traffic. The leak is monotonic (entries are never freed under normal operation) but slow (~685 KB/s per connection worst case). An attacker must sustain traffic for hours to exhaust typical server memory. The node continues operating normally until memory pressure becomes critical, at which point the OS OOM killer terminates the process or the node degrades due to swap pressure. No consensus impact, no fund loss, no on-disk corruption. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52733
GHSA-2gf8-q9rr-jq3h
Jul 02, 2026
zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip
6.5
/ 10
Medium
Network
High
None
None
Unchanged
None
High
Low
Am I affectedYou are affected if:
All default configurations are affected. The corruption persists across restarts because it is written to RocksDB. SummaryWhen DetailsThe non-finalized state provides two methods for removing blocks: When a chain fork occurs and The Patcheszebra-state 7.0.0 and zebrad 4.5.0. The fix adds subtree root cleanup to WorkaroundsThere 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 ImpactPersistent corruption of Sapling and Orchard subtree root history in the RocksDB state database. The corruption survives node restarts. Downstream consumers that rely on CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52739
GHSA-hhm7-qrv5-h4r6
Jul 02, 2026
Zebra: Repeated Non-Finalized Shielded Transaction Aborts Zebra Before Duplicate-Nullifier Rejection
5.9
/ 10
Medium
Network
High
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
All default configurations are affected. Summary
The block should be rejected with a duplicate-nullifier contextual validation error. Instead, the ordering of index updates within DetailsIn
The shielded nullifier uniqueness check at step 3 would correctly reject the duplicate transaction. But the The block transaction verifier does not run the best-chain nullifier query for block transactions — that check is gated on mempool transactions only ( There are two attack models: Model A (two attacker blocks): The attacker mines two consecutive valid-work blocks: parent B1 containing a shielded transaction T, and child B2 repeating T. This requires controlling both blocks consecutively. Model B (one attacker block after an honest block): The attacker broadcasts a shielded transaction T into the mempool. When any honest miner includes T in their block B1, the attacker only needs to mine the next child block B2 containing the same T. This requires controlling only one block immediately after an honest block that included the attacker's transaction. The attacker can broadcast a suitable shielded transaction every block until one is included by an honest miner, then attempt to mine the follow-up. Both models require the child block to repeat the shielded-only V5 transaction while the parent is still in non-finalized state. Patcheszebra-state 7.0.0 and zebrad 4.5.0. Replace the
WorkaroundsThere is no configuration-level workaround. The assert is in the non-finalized state push path, which is exercised by all block processing past the checkpoint height. ImpactA malicious block producer can crash targeted Zebra nodes. There are two attack models: In the first model, the attacker mines two consecutive valid-work blocks where the child repeats a shielded transaction from the parent. At 10% hashrate, the attacker has approximately 11.5 opportunities per day; at 5%, approximately 2.9 per day; at 1%, approximately one every 8.7 days. In the second model, the attacker broadcasts a shielded transaction into the mempool and waits for any honest miner to include it. The attacker then only needs to mine the next block containing the same transaction. This is cheaper because the attacker does not need to mine the parent block. At 10% hashrate, the attacker has approximately 14.4 single-block opportunities per day; at 5%, approximately 7.2 per day; at 1%, approximately 1.4 per day. The crash is a process abort (not recoverable within the process). The node must be restarted. Repeated attacks can keep a node down for extended periods. This is a liveness issue, not a consensus divergence: zcashd cleanly rejects the invalid child block while Zebra aborts. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52738
GHSA-w834-cf6p-9m9w
Jul 02, 2026
Zebra: Finalized address balance credit-first overflow on consensus-valid blocks
Medium
Network
Low
None
None
Am I affectedYou are affected if:
SummaryThe finalized transparent address balance writer processes all newly-created outputs (credits) before processing spent outputs (debits) within the same block. A consensus-valid block containing a long chain of same-address transparent self-spends can cause the intermediate per-address balance during the credit pass to exceed Because the triggering block is consensus-valid (zcashd accepts it), the panic recurs on restart when the node re-encounters the same block. This creates a persistent chain halt that can only be resolved by a software patch. DetailsThe finalized state writer at The code panics on the intermediate overflow via An attacker with approximately 1,100–2,100 ZEC and mining capability can construct a block that permanently halts all Zebra nodes. The attacker recovers their capital (the self-spends return funds to the same address), so the net cost is the mining effort only. PatchesPatched in Zebra 4.4.2. The fix processes credits and debits together per transaction rather than all credits then all debits, matching zcashd's approach. WorkaroundsNo workaround is available. Upgrade to Zebra 4.4.2. ImpactA single consensus-valid mined block can permanently halt all Zebra nodes on the network. The halt persists across restarts. Recovery requires deploying a patched version. Downstream consumers (light wallets, exchanges, mining infrastructure) lose service for the duration of the halt. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52737
GHSA-gvjc-3w7c-92jx
Jul 02, 2026
Zebra has sync restart poisoning from single unauthenticated peer via above-lookahead block
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryA malicious peer can answer Zebra's outbound On mainnet, each successful cycle imposes a 67-second sync restart delay. All in-flight downloads from honest peers are cancelled on each restart. DetailsThe bug is the interaction of three layers:
The attacker needs only an unauthenticated P2P connection (post-handshake), a tiny payload (one two-hash Additionally, several other pre-consensus sync-layer errors had zero misbehaviour scores even when peer-attributed. Contextual validation failures ( PatchesPatched in Zebra 4.4.2. The fix:
WorkaroundsNo configuration-level workaround is available. The attack is mitigated by having a diverse honest peer set, but cannot be prevented while the vulnerable code is running. ImpactA single unauthenticated peer can repeatedly stall a syncing Zebra node by forcing 67-second global sync restart cycles. All unrelated in-flight downloads are cancelled on each restart. The node does not crash and no state is corrupted, but sync progress is significantly degraded for the duration of the attack. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52735
GHSA-gf9r-m956-97qx
Jul 02, 2026
zebrad has consensus divergence via P2SH sigop undercount in pure-Rust disabled-opcode parser
Critical
Network
Low
None
None
Am I affectedYou are affected if:
All default configurations are affected. No feature flags, non-default settings, or special build options are required. SummaryZebra's P2SH sigop counter uses a pure-Rust code path that short-circuits on disabled opcodes (such as An attacker can exploit this without mining capability. Broadcasting transactions that spend P2SH outputs with malicious redeem scripts is sufficient; any Zebra miner who includes those transactions in a block triggers a chain split between Zebra and zcashd validators. DetailsThe P2SH sigop counter at The Rust parser in zcashd's A redeem script of PatchesPatched in Zebra 4.4.2. The fix routes the P2SH sigop counter through the same C++ FFI already used by the legacy sigop counter. WorkaroundsThere is no configuration-level workaround. All Zebra nodes validating blocks on a network shared with zcashd are affected. Upgrade as soon as the patched version is available. ImpactA chain split between Zebra and zcashd validators. The attacker broadcasts spending transactions referencing P2SH outputs whose redeem scripts contain a disabled opcode followed by The attacker does not need mining capability, RPC access, or any special privileges. The cost is the transaction fees for the funding and spending transactions. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52736
GHSA-4m69-67m6-prqp
Jul 02, 2026
Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache
High
Network
Low
None
None
DescriptionAm I affectedYou are affected if:
All default configurations are affected. SummaryZebra records a block hash in DetailsZIP-244 defines The attack flow over P2P:
A secondary variant exists where chain pruning (via PatchesPatched in Zebra 4.4.2. The fix removes stale entries from WorkaroundsThere is no complete configuration-level workaround. Reducing the node's inbound peer count ( ImpactA remote unauthenticated P2P peer can permanently stall a targeted Zebra node at a specific block height. The node diverges from the network tip; downstream consumers (lightwalletd, wallets, explorers, mining infrastructure) relying on the node see a stalled chain. The attack requires winning a propagation race: delivering the poisoned block body before honest peers deliver the canonical block. A well-positioned attacker (low-latency connection to the target, observation of new blocks from other peers) can reliably win this race. In sustained form, the attacker repeats for each new block, keeping the target permanently behind. Recovery requires restarting the node (which clears the in-memory sent-hash cache) or waiting for a reorg at the affected height (rare on the canonical chain). CreditReported independently by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-h72h-ppcx-998p
Jul 02, 2026
Zebra has pre-handshake buffer capacity reservation based on attacker-claimed body length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe P2P codec's However, Zebra's existing mitigations further constrain the practical attack surface: per-IP connection limits ( DetailsAt No legitimate Zcash handshake message ( PatchesThe fix defers large buffer reservations until after the handshake completes, or caps the per-message reservation for pre-handshake messages to what WorkaroundsNo workaround is needed. The existing per-IP rate limiting, handshake timeout, and connection limits effectively mitigate the practical impact. ImpactMinimal. The reservation affects virtual address space only, not physical memory. Zebra's existing connection-management mitigations (per-IP limits, accept rate, handshake timeout) further constrain the attack. The code path is worth cleaning up for defense-in-depth but does not produce a measurable denial-of-service effect. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52732
GHSA-4fc2-h7jh-287c
Jul 02, 2026
zebrad has mempool transaction admission denial via single-peer inbound queue saturation
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryA single unauthenticated P2P peer can monopolize all 25 inbound mempool download/verification slots ( DetailsThe mempool download/verification pipeline at
The attacker sends Two additional slot-holding techniques have been independently demonstrated: invalid-prevout transactions that park in Patcheszebrad 4.5.0 The fix adds per-peer queue accounting to the mempool download pipeline. A single peer is limited to a fraction of WorkaroundsThere is no complete configuration-level workaround. Reducing ImpactMempool transaction admission is denied for all honest peers and local RPC clients while the attack is sustained. Block validation and chain synchronization continue normally. The attacker needs only one TCP connection and minimal bandwidth (~1 KB/s of fake CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
GHSA-c8w6-x74f-vmg3
Jul 02, 2026
zebrad vulnerable to full node denial of service via crafted Sapling receiver in z_listunifiedreceivers
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe Details
At The same crate already handles this correctly in Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-443g-gwgp-49x4
Jul 02, 2026
zebrad vulnerable to getblocks/getheaders locator CPU amplification via uncapped vector length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe A single maximally-sized DetailsThe A legitimate block locator is logarithmic in chain length (approximately 30 hashes for the current ~3M-block Zcash chain). Zebra's own send-side cap is The practical impact requires significant attacker bandwidth (approximately 2 MiB per request) and multiple Sybil peers to meaningfully degrade the blocking pool, which limits real-world exploitability. PatchesPatched in Zebra 4.4.2. The fix caps WorkaroundsNo specific workaround is needed. Existing backpressure mechanisms (load shedding, sequential per-peer message processing, connection limits) constrain the practical impact. ImpactUnder sustained load from multiple Sybil peers, oversized locator vectors can occupy blocking-pool threads and degrade state-read performance. The effect is bounded by connection limits and requires significant attacker bandwidth. CreditVulnerability identified by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52731
GHSA-qv2r-v3mx-f4pf
Jul 02, 2026
zebrad has full node denial of service via non-ASCII LongPollId in getblocktemplate
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe DetailsThe Under the Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace byte-index string slicing with character-aware parsing or validate that the Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-44499
GHSA-h9hm-m2xj-4rq9
May 08, 2026
Zebra has Permanent Block Discovery Halt via Gossip Queue Saturation and Syncer Poisoning
High
Network
Low
None
None
SummaryA composite denial-of-service vulnerability in Zebra's block discovery pipeline allows an unauthenticated remote attacker to permanently halt all new block discovery on a targeted node. The attack exploits three independent weaknesses in the gossip, syncer, and download subsystems — all exercisable from a single TCP connection — to create a monotonically growing block deficit that never self-heals. SeverityCritical — This is a Denial of Service vulnerability that requires no authentication, no special privileges, and only a single peer connection. The halt is permanent: the node will never recover without operator intervention. Affected VersionsAll Zebra versions prior to 4.4.0. DescriptionZebra discovers new blocks through two complementary paths: a gossip path (peers announce blocks via The gossip path was vulnerable because there was no per-connection rate limit on The syncer backup path could be degraded by responding with empty Combining these two vectors, an attacker could suppress both block discovery paths simultaneously from a single connection, causing the node to fall permanently behind the chain tip. ImpactDenial of Service
Fixed VersionsThis issue is fixed in Zebra 4.4.0. The fix drops connections that send empty responses to MitigationUsers should upgrade to Zebra 4.4.0 or later immediately. There are no known workarounds for this issue. Immediate upgrade is the only way to protect against this attack. CreditsZebra the researcher who reported this issue through the coordinated disclosure process. Fixed in
4.4.0
References Updated May 08, 2026 · Source: OSV.dev
GHSA-pvmv-cwg8-v6c8
May 08, 2026
Zebra v4.4.0 still accepts V5 SIGHASH_SINGLE without a corresponding output
Critical
Network
Low
None
None
Consensus Divergence in V5 Transparent SIGHASH_SINGLE With No Corresponding OutputSummaryZebra failed to enforce a ZIP-244 consensus rule for V5 transparent transactions: when an input is signed with A previous fix ( SeverityCritical - 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 Affected VersionsZebra 4.4.0. DescriptionVerification of transparent transactions inherits the Bitcoin Script verification code in C++. Since it is consensus-critical, this code is called from Zebra through a foreign function interface (FFI), with a Rust callback that computes the sighash for each input being verified. ZIP-244 §S.2a marks two situations as consensus failure for V5 transparent signatures:
An attacker could exploit this by:
Zebra would verify the transaction's transparent script and accept the transaction (and any block containing it), while ImpactConsensus Failure
Fixed VersionsThis issue is fixed in Zebra 4.4.1. MitigationUsers should upgrade to Zebra 4.4.1 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. CreditsZebra thanks @sangsoo-osec, @zmanian, and @fivelittleducks for finding and reporting the issue. Fixed in
4.4.1
References Updated May 22, 2026 · Source: OSV.dev
GHSA-cwfq-rfcr-8hmp
May 07, 2026
Zebra's Transparent SIGHASH_SINGLE Handling Diverges from zcashd for Corresponding Outputs
Critical
Network
Low
None
None
|
3.0.0
unknown
Dependencies (84)
+ 76 more
Changelog
Compare changes
|
|
3.0.0-rc.0
unknown
27 CVEs
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev
CVE-2026-52829
GHSA-63wg-wjjj-7cp8
Jul 02, 2026
Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryAn address normalization mismatch between the handshake path and the mempool misbehavior path causes a deterministic assertion panic when a peer connects via IPv4 to a dual-stack IPv6 listener and then triggers a mempool misbehavior penalty. The handshake path canonicalizes IPv4-mapped IPv6 addresses to plain IPv4 when storing the peer in the address book via DetailsOn Linux with The handshake path uses After the 30-second misbehavior batch flush, The attacker needs only to complete a P2P handshake over IPv4 to a dual-stack listener and advertise an invalid mempool transaction (such as a coinbase transaction). The assertion fires after the 30-second misbehavior batch flush. PatchesPatched in Zebra 4.5.0. The fix canonicalizes the address in the misbehavior update path via a new WorkaroundsConfiguring ImpactA remote unauthenticated peer can deterministically crash any synced Zebra node running the default Linux dual-stack configuration with a single invalid mempool transaction advertisement, followed by a 30-second wait. The attack requires no mining capability, no RPC access, no funds, and no special privileges. The crash can be repeated after each restart, causing persistent downtime. Linux dual-stack sockets and mempool activation are the default production state, not special preconditions. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52734
GHSA-65jj-fmw8-468q
Jul 02, 2026
zebrad has unbounded memory leak in mempool download pipeline via timeout path cancel_handles retention
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryThe mempool download pipeline's Details
The only cleanup paths for For direct PatchesThe fix preserves the WorkaroundsThere is no configuration-level workaround. Restarting the node clears the accumulated entries. Operators running in memory-constrained environments (containers with cgroup limits) may see the process killed by the OOM killer before natural recovery. ImpactGradual, unbounded memory exhaustion of a Zebra node from unauthenticated P2P traffic. The leak is monotonic (entries are never freed under normal operation) but slow (~685 KB/s per connection worst case). An attacker must sustain traffic for hours to exhaust typical server memory. The node continues operating normally until memory pressure becomes critical, at which point the OS OOM killer terminates the process or the node degrades due to swap pressure. No consensus impact, no fund loss, no on-disk corruption. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52733
GHSA-2gf8-q9rr-jq3h
Jul 02, 2026
zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip
6.5
/ 10
Medium
Network
High
None
None
Unchanged
None
High
Low
Am I affectedYou are affected if:
All default configurations are affected. The corruption persists across restarts because it is written to RocksDB. SummaryWhen DetailsThe non-finalized state provides two methods for removing blocks: When a chain fork occurs and The Patcheszebra-state 7.0.0 and zebrad 4.5.0. The fix adds subtree root cleanup to WorkaroundsThere 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 ImpactPersistent corruption of Sapling and Orchard subtree root history in the RocksDB state database. The corruption survives node restarts. Downstream consumers that rely on CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52739
GHSA-hhm7-qrv5-h4r6
Jul 02, 2026
Zebra: Repeated Non-Finalized Shielded Transaction Aborts Zebra Before Duplicate-Nullifier Rejection
5.9
/ 10
Medium
Network
High
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
All default configurations are affected. Summary
The block should be rejected with a duplicate-nullifier contextual validation error. Instead, the ordering of index updates within DetailsIn
The shielded nullifier uniqueness check at step 3 would correctly reject the duplicate transaction. But the The block transaction verifier does not run the best-chain nullifier query for block transactions — that check is gated on mempool transactions only ( There are two attack models: Model A (two attacker blocks): The attacker mines two consecutive valid-work blocks: parent B1 containing a shielded transaction T, and child B2 repeating T. This requires controlling both blocks consecutively. Model B (one attacker block after an honest block): The attacker broadcasts a shielded transaction T into the mempool. When any honest miner includes T in their block B1, the attacker only needs to mine the next child block B2 containing the same T. This requires controlling only one block immediately after an honest block that included the attacker's transaction. The attacker can broadcast a suitable shielded transaction every block until one is included by an honest miner, then attempt to mine the follow-up. Both models require the child block to repeat the shielded-only V5 transaction while the parent is still in non-finalized state. Patcheszebra-state 7.0.0 and zebrad 4.5.0. Replace the
WorkaroundsThere is no configuration-level workaround. The assert is in the non-finalized state push path, which is exercised by all block processing past the checkpoint height. ImpactA malicious block producer can crash targeted Zebra nodes. There are two attack models: In the first model, the attacker mines two consecutive valid-work blocks where the child repeats a shielded transaction from the parent. At 10% hashrate, the attacker has approximately 11.5 opportunities per day; at 5%, approximately 2.9 per day; at 1%, approximately one every 8.7 days. In the second model, the attacker broadcasts a shielded transaction into the mempool and waits for any honest miner to include it. The attacker then only needs to mine the next block containing the same transaction. This is cheaper because the attacker does not need to mine the parent block. At 10% hashrate, the attacker has approximately 14.4 single-block opportunities per day; at 5%, approximately 7.2 per day; at 1%, approximately 1.4 per day. The crash is a process abort (not recoverable within the process). The node must be restarted. Repeated attacks can keep a node down for extended periods. This is a liveness issue, not a consensus divergence: zcashd cleanly rejects the invalid child block while Zebra aborts. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52738
GHSA-w834-cf6p-9m9w
Jul 02, 2026
Zebra: Finalized address balance credit-first overflow on consensus-valid blocks
Medium
Network
Low
None
None
Am I affectedYou are affected if:
SummaryThe finalized transparent address balance writer processes all newly-created outputs (credits) before processing spent outputs (debits) within the same block. A consensus-valid block containing a long chain of same-address transparent self-spends can cause the intermediate per-address balance during the credit pass to exceed Because the triggering block is consensus-valid (zcashd accepts it), the panic recurs on restart when the node re-encounters the same block. This creates a persistent chain halt that can only be resolved by a software patch. DetailsThe finalized state writer at The code panics on the intermediate overflow via An attacker with approximately 1,100–2,100 ZEC and mining capability can construct a block that permanently halts all Zebra nodes. The attacker recovers their capital (the self-spends return funds to the same address), so the net cost is the mining effort only. PatchesPatched in Zebra 4.4.2. The fix processes credits and debits together per transaction rather than all credits then all debits, matching zcashd's approach. WorkaroundsNo workaround is available. Upgrade to Zebra 4.4.2. ImpactA single consensus-valid mined block can permanently halt all Zebra nodes on the network. The halt persists across restarts. Recovery requires deploying a patched version. Downstream consumers (light wallets, exchanges, mining infrastructure) lose service for the duration of the halt. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52737
GHSA-gvjc-3w7c-92jx
Jul 02, 2026
Zebra has sync restart poisoning from single unauthenticated peer via above-lookahead block
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryA malicious peer can answer Zebra's outbound On mainnet, each successful cycle imposes a 67-second sync restart delay. All in-flight downloads from honest peers are cancelled on each restart. DetailsThe bug is the interaction of three layers:
The attacker needs only an unauthenticated P2P connection (post-handshake), a tiny payload (one two-hash Additionally, several other pre-consensus sync-layer errors had zero misbehaviour scores even when peer-attributed. Contextual validation failures ( PatchesPatched in Zebra 4.4.2. The fix:
WorkaroundsNo configuration-level workaround is available. The attack is mitigated by having a diverse honest peer set, but cannot be prevented while the vulnerable code is running. ImpactA single unauthenticated peer can repeatedly stall a syncing Zebra node by forcing 67-second global sync restart cycles. All unrelated in-flight downloads are cancelled on each restart. The node does not crash and no state is corrupted, but sync progress is significantly degraded for the duration of the attack. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52735
GHSA-gf9r-m956-97qx
Jul 02, 2026
zebrad has consensus divergence via P2SH sigop undercount in pure-Rust disabled-opcode parser
Critical
Network
Low
None
None
Am I affectedYou are affected if:
All default configurations are affected. No feature flags, non-default settings, or special build options are required. SummaryZebra's P2SH sigop counter uses a pure-Rust code path that short-circuits on disabled opcodes (such as An attacker can exploit this without mining capability. Broadcasting transactions that spend P2SH outputs with malicious redeem scripts is sufficient; any Zebra miner who includes those transactions in a block triggers a chain split between Zebra and zcashd validators. DetailsThe P2SH sigop counter at The Rust parser in zcashd's A redeem script of PatchesPatched in Zebra 4.4.2. The fix routes the P2SH sigop counter through the same C++ FFI already used by the legacy sigop counter. WorkaroundsThere is no configuration-level workaround. All Zebra nodes validating blocks on a network shared with zcashd are affected. Upgrade as soon as the patched version is available. ImpactA chain split between Zebra and zcashd validators. The attacker broadcasts spending transactions referencing P2SH outputs whose redeem scripts contain a disabled opcode followed by The attacker does not need mining capability, RPC access, or any special privileges. The cost is the transaction fees for the funding and spending transactions. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52736
GHSA-4m69-67m6-prqp
Jul 02, 2026
Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache
High
Network
Low
None
None
DescriptionAm I affectedYou are affected if:
All default configurations are affected. SummaryZebra records a block hash in DetailsZIP-244 defines The attack flow over P2P:
A secondary variant exists where chain pruning (via PatchesPatched in Zebra 4.4.2. The fix removes stale entries from WorkaroundsThere is no complete configuration-level workaround. Reducing the node's inbound peer count ( ImpactA remote unauthenticated P2P peer can permanently stall a targeted Zebra node at a specific block height. The node diverges from the network tip; downstream consumers (lightwalletd, wallets, explorers, mining infrastructure) relying on the node see a stalled chain. The attack requires winning a propagation race: delivering the poisoned block body before honest peers deliver the canonical block. A well-positioned attacker (low-latency connection to the target, observation of new blocks from other peers) can reliably win this race. In sustained form, the attacker repeats for each new block, keeping the target permanently behind. Recovery requires restarting the node (which clears the in-memory sent-hash cache) or waiting for a reorg at the affected height (rare on the canonical chain). CreditReported independently by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-h72h-ppcx-998p
Jul 02, 2026
Zebra has pre-handshake buffer capacity reservation based on attacker-claimed body length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe P2P codec's However, Zebra's existing mitigations further constrain the practical attack surface: per-IP connection limits ( DetailsAt No legitimate Zcash handshake message ( PatchesThe fix defers large buffer reservations until after the handshake completes, or caps the per-message reservation for pre-handshake messages to what WorkaroundsNo workaround is needed. The existing per-IP rate limiting, handshake timeout, and connection limits effectively mitigate the practical impact. ImpactMinimal. The reservation affects virtual address space only, not physical memory. Zebra's existing connection-management mitigations (per-IP limits, accept rate, handshake timeout) further constrain the attack. The code path is worth cleaning up for defense-in-depth but does not produce a measurable denial-of-service effect. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52732
GHSA-4fc2-h7jh-287c
Jul 02, 2026
zebrad has mempool transaction admission denial via single-peer inbound queue saturation
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryA single unauthenticated P2P peer can monopolize all 25 inbound mempool download/verification slots ( DetailsThe mempool download/verification pipeline at
The attacker sends Two additional slot-holding techniques have been independently demonstrated: invalid-prevout transactions that park in Patcheszebrad 4.5.0 The fix adds per-peer queue accounting to the mempool download pipeline. A single peer is limited to a fraction of WorkaroundsThere is no complete configuration-level workaround. Reducing ImpactMempool transaction admission is denied for all honest peers and local RPC clients while the attack is sustained. Block validation and chain synchronization continue normally. The attacker needs only one TCP connection and minimal bandwidth (~1 KB/s of fake CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
GHSA-c8w6-x74f-vmg3
Jul 02, 2026
zebrad vulnerable to full node denial of service via crafted Sapling receiver in z_listunifiedreceivers
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe Details
At The same crate already handles this correctly in Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-443g-gwgp-49x4
Jul 02, 2026
zebrad vulnerable to getblocks/getheaders locator CPU amplification via uncapped vector length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe A single maximally-sized DetailsThe A legitimate block locator is logarithmic in chain length (approximately 30 hashes for the current ~3M-block Zcash chain). Zebra's own send-side cap is The practical impact requires significant attacker bandwidth (approximately 2 MiB per request) and multiple Sybil peers to meaningfully degrade the blocking pool, which limits real-world exploitability. PatchesPatched in Zebra 4.4.2. The fix caps WorkaroundsNo specific workaround is needed. Existing backpressure mechanisms (load shedding, sequential per-peer message processing, connection limits) constrain the practical impact. ImpactUnder sustained load from multiple Sybil peers, oversized locator vectors can occupy blocking-pool threads and degrade state-read performance. The effect is bounded by connection limits and requires significant attacker bandwidth. CreditVulnerability identified by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52731
GHSA-qv2r-v3mx-f4pf
Jul 02, 2026
zebrad has full node denial of service via non-ASCII LongPollId in getblocktemplate
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe DetailsThe Under the Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace byte-index string slicing with character-aware parsing or validate that the Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-44499
GHSA-h9hm-m2xj-4rq9
May 08, 2026
Zebra has Permanent Block Discovery Halt via Gossip Queue Saturation and Syncer Poisoning
High
Network
Low
None
None
SummaryA composite denial-of-service vulnerability in Zebra's block discovery pipeline allows an unauthenticated remote attacker to permanently halt all new block discovery on a targeted node. The attack exploits three independent weaknesses in the gossip, syncer, and download subsystems — all exercisable from a single TCP connection — to create a monotonically growing block deficit that never self-heals. SeverityCritical — This is a Denial of Service vulnerability that requires no authentication, no special privileges, and only a single peer connection. The halt is permanent: the node will never recover without operator intervention. Affected VersionsAll Zebra versions prior to 4.4.0. DescriptionZebra discovers new blocks through two complementary paths: a gossip path (peers announce blocks via The gossip path was vulnerable because there was no per-connection rate limit on The syncer backup path could be degraded by responding with empty Combining these two vectors, an attacker could suppress both block discovery paths simultaneously from a single connection, causing the node to fall permanently behind the chain tip. ImpactDenial of Service
Fixed VersionsThis issue is fixed in Zebra 4.4.0. The fix drops connections that send empty responses to MitigationUsers should upgrade to Zebra 4.4.0 or later immediately. There are no known workarounds for this issue. Immediate upgrade is the only way to protect against this attack. CreditsZebra the researcher who reported this issue through the coordinated disclosure process. Fixed in
4.4.0
References Updated May 08, 2026 · Source: OSV.dev
GHSA-pvmv-cwg8-v6c8
May 08, 2026
Zebra v4.4.0 still accepts V5 SIGHASH_SINGLE without a corresponding output
Critical
Network
Low
None
None
Consensus Divergence in V5 Transparent SIGHASH_SINGLE With No Corresponding OutputSummaryZebra failed to enforce a ZIP-244 consensus rule for V5 transparent transactions: when an input is signed with A previous fix ( SeverityCritical - 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 Affected VersionsZebra 4.4.0. DescriptionVerification of transparent transactions inherits the Bitcoin Script verification code in C++. Since it is consensus-critical, this code is called from Zebra through a foreign function interface (FFI), with a Rust callback that computes the sighash for each input being verified. ZIP-244 §S.2a marks two situations as consensus failure for V5 transparent signatures:
An attacker could exploit this by:
Zebra would verify the transaction's transparent script and accept the transaction (and any block containing it), while ImpactConsensus Failure
Fixed VersionsThis issue is fixed in Zebra 4.4.1. MitigationUsers should upgrade to Zebra 4.4.1 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. CreditsZebra thanks @sangsoo-osec, @zmanian, and @fivelittleducks for finding and reporting the issue. Fixed in
4.4.1
References Updated May 22, 2026 · Source: OSV.dev
GHSA-cwfq-rfcr-8hmp
May 07, 2026
Zebra's Transparent SIGHASH_SINGLE Handling Diverges from zcashd for Corresponding Outputs
Critical
Network
Low
None
None
|
3.0.0-rc.0
unknown
Dependencies (84)
+ 76 more
Changelog
Compare changes
|
|
2.5.0
unknown
27 CVEs
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev
CVE-2026-52829
GHSA-63wg-wjjj-7cp8
Jul 02, 2026
Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryAn address normalization mismatch between the handshake path and the mempool misbehavior path causes a deterministic assertion panic when a peer connects via IPv4 to a dual-stack IPv6 listener and then triggers a mempool misbehavior penalty. The handshake path canonicalizes IPv4-mapped IPv6 addresses to plain IPv4 when storing the peer in the address book via DetailsOn Linux with The handshake path uses After the 30-second misbehavior batch flush, The attacker needs only to complete a P2P handshake over IPv4 to a dual-stack listener and advertise an invalid mempool transaction (such as a coinbase transaction). The assertion fires after the 30-second misbehavior batch flush. PatchesPatched in Zebra 4.5.0. The fix canonicalizes the address in the misbehavior update path via a new WorkaroundsConfiguring ImpactA remote unauthenticated peer can deterministically crash any synced Zebra node running the default Linux dual-stack configuration with a single invalid mempool transaction advertisement, followed by a 30-second wait. The attack requires no mining capability, no RPC access, no funds, and no special privileges. The crash can be repeated after each restart, causing persistent downtime. Linux dual-stack sockets and mempool activation are the default production state, not special preconditions. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52734
GHSA-65jj-fmw8-468q
Jul 02, 2026
zebrad has unbounded memory leak in mempool download pipeline via timeout path cancel_handles retention
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryThe mempool download pipeline's Details
The only cleanup paths for For direct PatchesThe fix preserves the WorkaroundsThere is no configuration-level workaround. Restarting the node clears the accumulated entries. Operators running in memory-constrained environments (containers with cgroup limits) may see the process killed by the OOM killer before natural recovery. ImpactGradual, unbounded memory exhaustion of a Zebra node from unauthenticated P2P traffic. The leak is monotonic (entries are never freed under normal operation) but slow (~685 KB/s per connection worst case). An attacker must sustain traffic for hours to exhaust typical server memory. The node continues operating normally until memory pressure becomes critical, at which point the OS OOM killer terminates the process or the node degrades due to swap pressure. No consensus impact, no fund loss, no on-disk corruption. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52733
GHSA-2gf8-q9rr-jq3h
Jul 02, 2026
zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip
6.5
/ 10
Medium
Network
High
None
None
Unchanged
None
High
Low
Am I affectedYou are affected if:
All default configurations are affected. The corruption persists across restarts because it is written to RocksDB. SummaryWhen DetailsThe non-finalized state provides two methods for removing blocks: When a chain fork occurs and The Patcheszebra-state 7.0.0 and zebrad 4.5.0. The fix adds subtree root cleanup to WorkaroundsThere 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 ImpactPersistent corruption of Sapling and Orchard subtree root history in the RocksDB state database. The corruption survives node restarts. Downstream consumers that rely on CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52739
GHSA-hhm7-qrv5-h4r6
Jul 02, 2026
Zebra: Repeated Non-Finalized Shielded Transaction Aborts Zebra Before Duplicate-Nullifier Rejection
5.9
/ 10
Medium
Network
High
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
All default configurations are affected. Summary
The block should be rejected with a duplicate-nullifier contextual validation error. Instead, the ordering of index updates within DetailsIn
The shielded nullifier uniqueness check at step 3 would correctly reject the duplicate transaction. But the The block transaction verifier does not run the best-chain nullifier query for block transactions — that check is gated on mempool transactions only ( There are two attack models: Model A (two attacker blocks): The attacker mines two consecutive valid-work blocks: parent B1 containing a shielded transaction T, and child B2 repeating T. This requires controlling both blocks consecutively. Model B (one attacker block after an honest block): The attacker broadcasts a shielded transaction T into the mempool. When any honest miner includes T in their block B1, the attacker only needs to mine the next child block B2 containing the same T. This requires controlling only one block immediately after an honest block that included the attacker's transaction. The attacker can broadcast a suitable shielded transaction every block until one is included by an honest miner, then attempt to mine the follow-up. Both models require the child block to repeat the shielded-only V5 transaction while the parent is still in non-finalized state. Patcheszebra-state 7.0.0 and zebrad 4.5.0. Replace the
WorkaroundsThere is no configuration-level workaround. The assert is in the non-finalized state push path, which is exercised by all block processing past the checkpoint height. ImpactA malicious block producer can crash targeted Zebra nodes. There are two attack models: In the first model, the attacker mines two consecutive valid-work blocks where the child repeats a shielded transaction from the parent. At 10% hashrate, the attacker has approximately 11.5 opportunities per day; at 5%, approximately 2.9 per day; at 1%, approximately one every 8.7 days. In the second model, the attacker broadcasts a shielded transaction into the mempool and waits for any honest miner to include it. The attacker then only needs to mine the next block containing the same transaction. This is cheaper because the attacker does not need to mine the parent block. At 10% hashrate, the attacker has approximately 14.4 single-block opportunities per day; at 5%, approximately 7.2 per day; at 1%, approximately 1.4 per day. The crash is a process abort (not recoverable within the process). The node must be restarted. Repeated attacks can keep a node down for extended periods. This is a liveness issue, not a consensus divergence: zcashd cleanly rejects the invalid child block while Zebra aborts. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52738
GHSA-w834-cf6p-9m9w
Jul 02, 2026
Zebra: Finalized address balance credit-first overflow on consensus-valid blocks
Medium
Network
Low
None
None
Am I affectedYou are affected if:
SummaryThe finalized transparent address balance writer processes all newly-created outputs (credits) before processing spent outputs (debits) within the same block. A consensus-valid block containing a long chain of same-address transparent self-spends can cause the intermediate per-address balance during the credit pass to exceed Because the triggering block is consensus-valid (zcashd accepts it), the panic recurs on restart when the node re-encounters the same block. This creates a persistent chain halt that can only be resolved by a software patch. DetailsThe finalized state writer at The code panics on the intermediate overflow via An attacker with approximately 1,100–2,100 ZEC and mining capability can construct a block that permanently halts all Zebra nodes. The attacker recovers their capital (the self-spends return funds to the same address), so the net cost is the mining effort only. PatchesPatched in Zebra 4.4.2. The fix processes credits and debits together per transaction rather than all credits then all debits, matching zcashd's approach. WorkaroundsNo workaround is available. Upgrade to Zebra 4.4.2. ImpactA single consensus-valid mined block can permanently halt all Zebra nodes on the network. The halt persists across restarts. Recovery requires deploying a patched version. Downstream consumers (light wallets, exchanges, mining infrastructure) lose service for the duration of the halt. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52737
GHSA-gvjc-3w7c-92jx
Jul 02, 2026
Zebra has sync restart poisoning from single unauthenticated peer via above-lookahead block
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryA malicious peer can answer Zebra's outbound On mainnet, each successful cycle imposes a 67-second sync restart delay. All in-flight downloads from honest peers are cancelled on each restart. DetailsThe bug is the interaction of three layers:
The attacker needs only an unauthenticated P2P connection (post-handshake), a tiny payload (one two-hash Additionally, several other pre-consensus sync-layer errors had zero misbehaviour scores even when peer-attributed. Contextual validation failures ( PatchesPatched in Zebra 4.4.2. The fix:
WorkaroundsNo configuration-level workaround is available. The attack is mitigated by having a diverse honest peer set, but cannot be prevented while the vulnerable code is running. ImpactA single unauthenticated peer can repeatedly stall a syncing Zebra node by forcing 67-second global sync restart cycles. All unrelated in-flight downloads are cancelled on each restart. The node does not crash and no state is corrupted, but sync progress is significantly degraded for the duration of the attack. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52735
GHSA-gf9r-m956-97qx
Jul 02, 2026
zebrad has consensus divergence via P2SH sigop undercount in pure-Rust disabled-opcode parser
Critical
Network
Low
None
None
Am I affectedYou are affected if:
All default configurations are affected. No feature flags, non-default settings, or special build options are required. SummaryZebra's P2SH sigop counter uses a pure-Rust code path that short-circuits on disabled opcodes (such as An attacker can exploit this without mining capability. Broadcasting transactions that spend P2SH outputs with malicious redeem scripts is sufficient; any Zebra miner who includes those transactions in a block triggers a chain split between Zebra and zcashd validators. DetailsThe P2SH sigop counter at The Rust parser in zcashd's A redeem script of PatchesPatched in Zebra 4.4.2. The fix routes the P2SH sigop counter through the same C++ FFI already used by the legacy sigop counter. WorkaroundsThere is no configuration-level workaround. All Zebra nodes validating blocks on a network shared with zcashd are affected. Upgrade as soon as the patched version is available. ImpactA chain split between Zebra and zcashd validators. The attacker broadcasts spending transactions referencing P2SH outputs whose redeem scripts contain a disabled opcode followed by The attacker does not need mining capability, RPC access, or any special privileges. The cost is the transaction fees for the funding and spending transactions. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52736
GHSA-4m69-67m6-prqp
Jul 02, 2026
Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache
High
Network
Low
None
None
DescriptionAm I affectedYou are affected if:
All default configurations are affected. SummaryZebra records a block hash in DetailsZIP-244 defines The attack flow over P2P:
A secondary variant exists where chain pruning (via PatchesPatched in Zebra 4.4.2. The fix removes stale entries from WorkaroundsThere is no complete configuration-level workaround. Reducing the node's inbound peer count ( ImpactA remote unauthenticated P2P peer can permanently stall a targeted Zebra node at a specific block height. The node diverges from the network tip; downstream consumers (lightwalletd, wallets, explorers, mining infrastructure) relying on the node see a stalled chain. The attack requires winning a propagation race: delivering the poisoned block body before honest peers deliver the canonical block. A well-positioned attacker (low-latency connection to the target, observation of new blocks from other peers) can reliably win this race. In sustained form, the attacker repeats for each new block, keeping the target permanently behind. Recovery requires restarting the node (which clears the in-memory sent-hash cache) or waiting for a reorg at the affected height (rare on the canonical chain). CreditReported independently by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-h72h-ppcx-998p
Jul 02, 2026
Zebra has pre-handshake buffer capacity reservation based on attacker-claimed body length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe P2P codec's However, Zebra's existing mitigations further constrain the practical attack surface: per-IP connection limits ( DetailsAt No legitimate Zcash handshake message ( PatchesThe fix defers large buffer reservations until after the handshake completes, or caps the per-message reservation for pre-handshake messages to what WorkaroundsNo workaround is needed. The existing per-IP rate limiting, handshake timeout, and connection limits effectively mitigate the practical impact. ImpactMinimal. The reservation affects virtual address space only, not physical memory. Zebra's existing connection-management mitigations (per-IP limits, accept rate, handshake timeout) further constrain the attack. The code path is worth cleaning up for defense-in-depth but does not produce a measurable denial-of-service effect. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52732
GHSA-4fc2-h7jh-287c
Jul 02, 2026
zebrad has mempool transaction admission denial via single-peer inbound queue saturation
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryA single unauthenticated P2P peer can monopolize all 25 inbound mempool download/verification slots ( DetailsThe mempool download/verification pipeline at
The attacker sends Two additional slot-holding techniques have been independently demonstrated: invalid-prevout transactions that park in Patcheszebrad 4.5.0 The fix adds per-peer queue accounting to the mempool download pipeline. A single peer is limited to a fraction of WorkaroundsThere is no complete configuration-level workaround. Reducing ImpactMempool transaction admission is denied for all honest peers and local RPC clients while the attack is sustained. Block validation and chain synchronization continue normally. The attacker needs only one TCP connection and minimal bandwidth (~1 KB/s of fake CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
GHSA-c8w6-x74f-vmg3
Jul 02, 2026
zebrad vulnerable to full node denial of service via crafted Sapling receiver in z_listunifiedreceivers
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe Details
At The same crate already handles this correctly in Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-443g-gwgp-49x4
Jul 02, 2026
zebrad vulnerable to getblocks/getheaders locator CPU amplification via uncapped vector length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe A single maximally-sized DetailsThe A legitimate block locator is logarithmic in chain length (approximately 30 hashes for the current ~3M-block Zcash chain). Zebra's own send-side cap is The practical impact requires significant attacker bandwidth (approximately 2 MiB per request) and multiple Sybil peers to meaningfully degrade the blocking pool, which limits real-world exploitability. PatchesPatched in Zebra 4.4.2. The fix caps WorkaroundsNo specific workaround is needed. Existing backpressure mechanisms (load shedding, sequential per-peer message processing, connection limits) constrain the practical impact. ImpactUnder sustained load from multiple Sybil peers, oversized locator vectors can occupy blocking-pool threads and degrade state-read performance. The effect is bounded by connection limits and requires significant attacker bandwidth. CreditVulnerability identified by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52731
GHSA-qv2r-v3mx-f4pf
Jul 02, 2026
zebrad has full node denial of service via non-ASCII LongPollId in getblocktemplate
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe DetailsThe Under the Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace byte-index string slicing with character-aware parsing or validate that the Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-44499
GHSA-h9hm-m2xj-4rq9
May 08, 2026
Zebra has Permanent Block Discovery Halt via Gossip Queue Saturation and Syncer Poisoning
High
Network
Low
None
None
SummaryA composite denial-of-service vulnerability in Zebra's block discovery pipeline allows an unauthenticated remote attacker to permanently halt all new block discovery on a targeted node. The attack exploits three independent weaknesses in the gossip, syncer, and download subsystems — all exercisable from a single TCP connection — to create a monotonically growing block deficit that never self-heals. SeverityCritical — This is a Denial of Service vulnerability that requires no authentication, no special privileges, and only a single peer connection. The halt is permanent: the node will never recover without operator intervention. Affected VersionsAll Zebra versions prior to 4.4.0. DescriptionZebra discovers new blocks through two complementary paths: a gossip path (peers announce blocks via The gossip path was vulnerable because there was no per-connection rate limit on The syncer backup path could be degraded by responding with empty Combining these two vectors, an attacker could suppress both block discovery paths simultaneously from a single connection, causing the node to fall permanently behind the chain tip. ImpactDenial of Service
Fixed VersionsThis issue is fixed in Zebra 4.4.0. The fix drops connections that send empty responses to MitigationUsers should upgrade to Zebra 4.4.0 or later immediately. There are no known workarounds for this issue. Immediate upgrade is the only way to protect against this attack. CreditsZebra the researcher who reported this issue through the coordinated disclosure process. Fixed in
4.4.0
References Updated May 08, 2026 · Source: OSV.dev
GHSA-pvmv-cwg8-v6c8
May 08, 2026
Zebra v4.4.0 still accepts V5 SIGHASH_SINGLE without a corresponding output
Critical
Network
Low
None
None
Consensus Divergence in V5 Transparent SIGHASH_SINGLE With No Corresponding OutputSummaryZebra failed to enforce a ZIP-244 consensus rule for V5 transparent transactions: when an input is signed with A previous fix ( SeverityCritical - 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 Affected VersionsZebra 4.4.0. DescriptionVerification of transparent transactions inherits the Bitcoin Script verification code in C++. Since it is consensus-critical, this code is called from Zebra through a foreign function interface (FFI), with a Rust callback that computes the sighash for each input being verified. ZIP-244 §S.2a marks two situations as consensus failure for V5 transparent signatures:
An attacker could exploit this by:
Zebra would verify the transaction's transparent script and accept the transaction (and any block containing it), while ImpactConsensus Failure
Fixed VersionsThis issue is fixed in Zebra 4.4.1. MitigationUsers should upgrade to Zebra 4.4.1 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. CreditsZebra thanks @sangsoo-osec, @zmanian, and @fivelittleducks for finding and reporting the issue. Fixed in
4.4.1
References Updated May 22, 2026 · Source: OSV.dev
GHSA-cwfq-rfcr-8hmp
May 07, 2026
Zebra's Transparent SIGHASH_SINGLE Handling Diverges from zcashd for Corresponding Outputs
Critical
Network
Low
None
None
|
2.5.0
unknown
Dependencies (82)
+ 74 more
Changelog
Compare changes
|
|
2.4.2
unknown
27 CVEs
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev
CVE-2026-52829
GHSA-63wg-wjjj-7cp8
Jul 02, 2026
Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryAn address normalization mismatch between the handshake path and the mempool misbehavior path causes a deterministic assertion panic when a peer connects via IPv4 to a dual-stack IPv6 listener and then triggers a mempool misbehavior penalty. The handshake path canonicalizes IPv4-mapped IPv6 addresses to plain IPv4 when storing the peer in the address book via DetailsOn Linux with The handshake path uses After the 30-second misbehavior batch flush, The attacker needs only to complete a P2P handshake over IPv4 to a dual-stack listener and advertise an invalid mempool transaction (such as a coinbase transaction). The assertion fires after the 30-second misbehavior batch flush. PatchesPatched in Zebra 4.5.0. The fix canonicalizes the address in the misbehavior update path via a new WorkaroundsConfiguring ImpactA remote unauthenticated peer can deterministically crash any synced Zebra node running the default Linux dual-stack configuration with a single invalid mempool transaction advertisement, followed by a 30-second wait. The attack requires no mining capability, no RPC access, no funds, and no special privileges. The crash can be repeated after each restart, causing persistent downtime. Linux dual-stack sockets and mempool activation are the default production state, not special preconditions. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52734
GHSA-65jj-fmw8-468q
Jul 02, 2026
zebrad has unbounded memory leak in mempool download pipeline via timeout path cancel_handles retention
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryThe mempool download pipeline's Details
The only cleanup paths for For direct PatchesThe fix preserves the WorkaroundsThere is no configuration-level workaround. Restarting the node clears the accumulated entries. Operators running in memory-constrained environments (containers with cgroup limits) may see the process killed by the OOM killer before natural recovery. ImpactGradual, unbounded memory exhaustion of a Zebra node from unauthenticated P2P traffic. The leak is monotonic (entries are never freed under normal operation) but slow (~685 KB/s per connection worst case). An attacker must sustain traffic for hours to exhaust typical server memory. The node continues operating normally until memory pressure becomes critical, at which point the OS OOM killer terminates the process or the node degrades due to swap pressure. No consensus impact, no fund loss, no on-disk corruption. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52733
GHSA-2gf8-q9rr-jq3h
Jul 02, 2026
zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip
6.5
/ 10
Medium
Network
High
None
None
Unchanged
None
High
Low
Am I affectedYou are affected if:
All default configurations are affected. The corruption persists across restarts because it is written to RocksDB. SummaryWhen DetailsThe non-finalized state provides two methods for removing blocks: When a chain fork occurs and The Patcheszebra-state 7.0.0 and zebrad 4.5.0. The fix adds subtree root cleanup to WorkaroundsThere 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 ImpactPersistent corruption of Sapling and Orchard subtree root history in the RocksDB state database. The corruption survives node restarts. Downstream consumers that rely on CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52739
GHSA-hhm7-qrv5-h4r6
Jul 02, 2026
Zebra: Repeated Non-Finalized Shielded Transaction Aborts Zebra Before Duplicate-Nullifier Rejection
5.9
/ 10
Medium
Network
High
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
All default configurations are affected. Summary
The block should be rejected with a duplicate-nullifier contextual validation error. Instead, the ordering of index updates within DetailsIn
The shielded nullifier uniqueness check at step 3 would correctly reject the duplicate transaction. But the The block transaction verifier does not run the best-chain nullifier query for block transactions — that check is gated on mempool transactions only ( There are two attack models: Model A (two attacker blocks): The attacker mines two consecutive valid-work blocks: parent B1 containing a shielded transaction T, and child B2 repeating T. This requires controlling both blocks consecutively. Model B (one attacker block after an honest block): The attacker broadcasts a shielded transaction T into the mempool. When any honest miner includes T in their block B1, the attacker only needs to mine the next child block B2 containing the same T. This requires controlling only one block immediately after an honest block that included the attacker's transaction. The attacker can broadcast a suitable shielded transaction every block until one is included by an honest miner, then attempt to mine the follow-up. Both models require the child block to repeat the shielded-only V5 transaction while the parent is still in non-finalized state. Patcheszebra-state 7.0.0 and zebrad 4.5.0. Replace the
WorkaroundsThere is no configuration-level workaround. The assert is in the non-finalized state push path, which is exercised by all block processing past the checkpoint height. ImpactA malicious block producer can crash targeted Zebra nodes. There are two attack models: In the first model, the attacker mines two consecutive valid-work blocks where the child repeats a shielded transaction from the parent. At 10% hashrate, the attacker has approximately 11.5 opportunities per day; at 5%, approximately 2.9 per day; at 1%, approximately one every 8.7 days. In the second model, the attacker broadcasts a shielded transaction into the mempool and waits for any honest miner to include it. The attacker then only needs to mine the next block containing the same transaction. This is cheaper because the attacker does not need to mine the parent block. At 10% hashrate, the attacker has approximately 14.4 single-block opportunities per day; at 5%, approximately 7.2 per day; at 1%, approximately 1.4 per day. The crash is a process abort (not recoverable within the process). The node must be restarted. Repeated attacks can keep a node down for extended periods. This is a liveness issue, not a consensus divergence: zcashd cleanly rejects the invalid child block while Zebra aborts. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52738
GHSA-w834-cf6p-9m9w
Jul 02, 2026
Zebra: Finalized address balance credit-first overflow on consensus-valid blocks
Medium
Network
Low
None
None
Am I affectedYou are affected if:
SummaryThe finalized transparent address balance writer processes all newly-created outputs (credits) before processing spent outputs (debits) within the same block. A consensus-valid block containing a long chain of same-address transparent self-spends can cause the intermediate per-address balance during the credit pass to exceed Because the triggering block is consensus-valid (zcashd accepts it), the panic recurs on restart when the node re-encounters the same block. This creates a persistent chain halt that can only be resolved by a software patch. DetailsThe finalized state writer at The code panics on the intermediate overflow via An attacker with approximately 1,100–2,100 ZEC and mining capability can construct a block that permanently halts all Zebra nodes. The attacker recovers their capital (the self-spends return funds to the same address), so the net cost is the mining effort only. PatchesPatched in Zebra 4.4.2. The fix processes credits and debits together per transaction rather than all credits then all debits, matching zcashd's approach. WorkaroundsNo workaround is available. Upgrade to Zebra 4.4.2. ImpactA single consensus-valid mined block can permanently halt all Zebra nodes on the network. The halt persists across restarts. Recovery requires deploying a patched version. Downstream consumers (light wallets, exchanges, mining infrastructure) lose service for the duration of the halt. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52737
GHSA-gvjc-3w7c-92jx
Jul 02, 2026
Zebra has sync restart poisoning from single unauthenticated peer via above-lookahead block
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryA malicious peer can answer Zebra's outbound On mainnet, each successful cycle imposes a 67-second sync restart delay. All in-flight downloads from honest peers are cancelled on each restart. DetailsThe bug is the interaction of three layers:
The attacker needs only an unauthenticated P2P connection (post-handshake), a tiny payload (one two-hash Additionally, several other pre-consensus sync-layer errors had zero misbehaviour scores even when peer-attributed. Contextual validation failures ( PatchesPatched in Zebra 4.4.2. The fix:
WorkaroundsNo configuration-level workaround is available. The attack is mitigated by having a diverse honest peer set, but cannot be prevented while the vulnerable code is running. ImpactA single unauthenticated peer can repeatedly stall a syncing Zebra node by forcing 67-second global sync restart cycles. All unrelated in-flight downloads are cancelled on each restart. The node does not crash and no state is corrupted, but sync progress is significantly degraded for the duration of the attack. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52735
GHSA-gf9r-m956-97qx
Jul 02, 2026
zebrad has consensus divergence via P2SH sigop undercount in pure-Rust disabled-opcode parser
Critical
Network
Low
None
None
Am I affectedYou are affected if:
All default configurations are affected. No feature flags, non-default settings, or special build options are required. SummaryZebra's P2SH sigop counter uses a pure-Rust code path that short-circuits on disabled opcodes (such as An attacker can exploit this without mining capability. Broadcasting transactions that spend P2SH outputs with malicious redeem scripts is sufficient; any Zebra miner who includes those transactions in a block triggers a chain split between Zebra and zcashd validators. DetailsThe P2SH sigop counter at The Rust parser in zcashd's A redeem script of PatchesPatched in Zebra 4.4.2. The fix routes the P2SH sigop counter through the same C++ FFI already used by the legacy sigop counter. WorkaroundsThere is no configuration-level workaround. All Zebra nodes validating blocks on a network shared with zcashd are affected. Upgrade as soon as the patched version is available. ImpactA chain split between Zebra and zcashd validators. The attacker broadcasts spending transactions referencing P2SH outputs whose redeem scripts contain a disabled opcode followed by The attacker does not need mining capability, RPC access, or any special privileges. The cost is the transaction fees for the funding and spending transactions. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52736
GHSA-4m69-67m6-prqp
Jul 02, 2026
Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache
High
Network
Low
None
None
DescriptionAm I affectedYou are affected if:
All default configurations are affected. SummaryZebra records a block hash in DetailsZIP-244 defines The attack flow over P2P:
A secondary variant exists where chain pruning (via PatchesPatched in Zebra 4.4.2. The fix removes stale entries from WorkaroundsThere is no complete configuration-level workaround. Reducing the node's inbound peer count ( ImpactA remote unauthenticated P2P peer can permanently stall a targeted Zebra node at a specific block height. The node diverges from the network tip; downstream consumers (lightwalletd, wallets, explorers, mining infrastructure) relying on the node see a stalled chain. The attack requires winning a propagation race: delivering the poisoned block body before honest peers deliver the canonical block. A well-positioned attacker (low-latency connection to the target, observation of new blocks from other peers) can reliably win this race. In sustained form, the attacker repeats for each new block, keeping the target permanently behind. Recovery requires restarting the node (which clears the in-memory sent-hash cache) or waiting for a reorg at the affected height (rare on the canonical chain). CreditReported independently by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-h72h-ppcx-998p
Jul 02, 2026
Zebra has pre-handshake buffer capacity reservation based on attacker-claimed body length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe P2P codec's However, Zebra's existing mitigations further constrain the practical attack surface: per-IP connection limits ( DetailsAt No legitimate Zcash handshake message ( PatchesThe fix defers large buffer reservations until after the handshake completes, or caps the per-message reservation for pre-handshake messages to what WorkaroundsNo workaround is needed. The existing per-IP rate limiting, handshake timeout, and connection limits effectively mitigate the practical impact. ImpactMinimal. The reservation affects virtual address space only, not physical memory. Zebra's existing connection-management mitigations (per-IP limits, accept rate, handshake timeout) further constrain the attack. The code path is worth cleaning up for defense-in-depth but does not produce a measurable denial-of-service effect. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52732
GHSA-4fc2-h7jh-287c
Jul 02, 2026
zebrad has mempool transaction admission denial via single-peer inbound queue saturation
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryA single unauthenticated P2P peer can monopolize all 25 inbound mempool download/verification slots ( DetailsThe mempool download/verification pipeline at
The attacker sends Two additional slot-holding techniques have been independently demonstrated: invalid-prevout transactions that park in Patcheszebrad 4.5.0 The fix adds per-peer queue accounting to the mempool download pipeline. A single peer is limited to a fraction of WorkaroundsThere is no complete configuration-level workaround. Reducing ImpactMempool transaction admission is denied for all honest peers and local RPC clients while the attack is sustained. Block validation and chain synchronization continue normally. The attacker needs only one TCP connection and minimal bandwidth (~1 KB/s of fake CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
GHSA-c8w6-x74f-vmg3
Jul 02, 2026
zebrad vulnerable to full node denial of service via crafted Sapling receiver in z_listunifiedreceivers
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe Details
At The same crate already handles this correctly in Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-443g-gwgp-49x4
Jul 02, 2026
zebrad vulnerable to getblocks/getheaders locator CPU amplification via uncapped vector length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe A single maximally-sized DetailsThe A legitimate block locator is logarithmic in chain length (approximately 30 hashes for the current ~3M-block Zcash chain). Zebra's own send-side cap is The practical impact requires significant attacker bandwidth (approximately 2 MiB per request) and multiple Sybil peers to meaningfully degrade the blocking pool, which limits real-world exploitability. PatchesPatched in Zebra 4.4.2. The fix caps WorkaroundsNo specific workaround is needed. Existing backpressure mechanisms (load shedding, sequential per-peer message processing, connection limits) constrain the practical impact. ImpactUnder sustained load from multiple Sybil peers, oversized locator vectors can occupy blocking-pool threads and degrade state-read performance. The effect is bounded by connection limits and requires significant attacker bandwidth. CreditVulnerability identified by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52731
GHSA-qv2r-v3mx-f4pf
Jul 02, 2026
zebrad has full node denial of service via non-ASCII LongPollId in getblocktemplate
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe DetailsThe Under the Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace byte-index string slicing with character-aware parsing or validate that the Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-44499
GHSA-h9hm-m2xj-4rq9
May 08, 2026
Zebra has Permanent Block Discovery Halt via Gossip Queue Saturation and Syncer Poisoning
High
Network
Low
None
None
SummaryA composite denial-of-service vulnerability in Zebra's block discovery pipeline allows an unauthenticated remote attacker to permanently halt all new block discovery on a targeted node. The attack exploits three independent weaknesses in the gossip, syncer, and download subsystems — all exercisable from a single TCP connection — to create a monotonically growing block deficit that never self-heals. SeverityCritical — This is a Denial of Service vulnerability that requires no authentication, no special privileges, and only a single peer connection. The halt is permanent: the node will never recover without operator intervention. Affected VersionsAll Zebra versions prior to 4.4.0. DescriptionZebra discovers new blocks through two complementary paths: a gossip path (peers announce blocks via The gossip path was vulnerable because there was no per-connection rate limit on The syncer backup path could be degraded by responding with empty Combining these two vectors, an attacker could suppress both block discovery paths simultaneously from a single connection, causing the node to fall permanently behind the chain tip. ImpactDenial of Service
Fixed VersionsThis issue is fixed in Zebra 4.4.0. The fix drops connections that send empty responses to MitigationUsers should upgrade to Zebra 4.4.0 or later immediately. There are no known workarounds for this issue. Immediate upgrade is the only way to protect against this attack. CreditsZebra the researcher who reported this issue through the coordinated disclosure process. Fixed in
4.4.0
References Updated May 08, 2026 · Source: OSV.dev
GHSA-pvmv-cwg8-v6c8
May 08, 2026
Zebra v4.4.0 still accepts V5 SIGHASH_SINGLE without a corresponding output
Critical
Network
Low
None
None
Consensus Divergence in V5 Transparent SIGHASH_SINGLE With No Corresponding OutputSummaryZebra failed to enforce a ZIP-244 consensus rule for V5 transparent transactions: when an input is signed with A previous fix ( SeverityCritical - 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 Affected VersionsZebra 4.4.0. DescriptionVerification of transparent transactions inherits the Bitcoin Script verification code in C++. Since it is consensus-critical, this code is called from Zebra through a foreign function interface (FFI), with a Rust callback that computes the sighash for each input being verified. ZIP-244 §S.2a marks two situations as consensus failure for V5 transparent signatures:
An attacker could exploit this by:
Zebra would verify the transaction's transparent script and accept the transaction (and any block containing it), while ImpactConsensus Failure
Fixed VersionsThis issue is fixed in Zebra 4.4.1. MitigationUsers should upgrade to Zebra 4.4.1 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. CreditsZebra thanks @sangsoo-osec, @zmanian, and @fivelittleducks for finding and reporting the issue. Fixed in
4.4.1
References Updated May 22, 2026 · Source: OSV.dev
GHSA-cwfq-rfcr-8hmp
May 07, 2026
Zebra's Transparent SIGHASH_SINGLE Handling Diverges from zcashd for Corresponding Outputs
Critical
Network
Low
None
None
|
2.4.2
unknown
Dependencies (82)
+ 74 more
Changelog
Compare changes
|
|
2.4.1
unknown
yanked
27 CVEs
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev
CVE-2026-52829
GHSA-63wg-wjjj-7cp8
Jul 02, 2026
Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryAn address normalization mismatch between the handshake path and the mempool misbehavior path causes a deterministic assertion panic when a peer connects via IPv4 to a dual-stack IPv6 listener and then triggers a mempool misbehavior penalty. The handshake path canonicalizes IPv4-mapped IPv6 addresses to plain IPv4 when storing the peer in the address book via DetailsOn Linux with The handshake path uses After the 30-second misbehavior batch flush, The attacker needs only to complete a P2P handshake over IPv4 to a dual-stack listener and advertise an invalid mempool transaction (such as a coinbase transaction). The assertion fires after the 30-second misbehavior batch flush. PatchesPatched in Zebra 4.5.0. The fix canonicalizes the address in the misbehavior update path via a new WorkaroundsConfiguring ImpactA remote unauthenticated peer can deterministically crash any synced Zebra node running the default Linux dual-stack configuration with a single invalid mempool transaction advertisement, followed by a 30-second wait. The attack requires no mining capability, no RPC access, no funds, and no special privileges. The crash can be repeated after each restart, causing persistent downtime. Linux dual-stack sockets and mempool activation are the default production state, not special preconditions. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52734
GHSA-65jj-fmw8-468q
Jul 02, 2026
zebrad has unbounded memory leak in mempool download pipeline via timeout path cancel_handles retention
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryThe mempool download pipeline's Details
The only cleanup paths for For direct PatchesThe fix preserves the WorkaroundsThere is no configuration-level workaround. Restarting the node clears the accumulated entries. Operators running in memory-constrained environments (containers with cgroup limits) may see the process killed by the OOM killer before natural recovery. ImpactGradual, unbounded memory exhaustion of a Zebra node from unauthenticated P2P traffic. The leak is monotonic (entries are never freed under normal operation) but slow (~685 KB/s per connection worst case). An attacker must sustain traffic for hours to exhaust typical server memory. The node continues operating normally until memory pressure becomes critical, at which point the OS OOM killer terminates the process or the node degrades due to swap pressure. No consensus impact, no fund loss, no on-disk corruption. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52733
GHSA-2gf8-q9rr-jq3h
Jul 02, 2026
zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip
6.5
/ 10
Medium
Network
High
None
None
Unchanged
None
High
Low
Am I affectedYou are affected if:
All default configurations are affected. The corruption persists across restarts because it is written to RocksDB. SummaryWhen DetailsThe non-finalized state provides two methods for removing blocks: When a chain fork occurs and The Patcheszebra-state 7.0.0 and zebrad 4.5.0. The fix adds subtree root cleanup to WorkaroundsThere 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 ImpactPersistent corruption of Sapling and Orchard subtree root history in the RocksDB state database. The corruption survives node restarts. Downstream consumers that rely on CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52739
GHSA-hhm7-qrv5-h4r6
Jul 02, 2026
Zebra: Repeated Non-Finalized Shielded Transaction Aborts Zebra Before Duplicate-Nullifier Rejection
5.9
/ 10
Medium
Network
High
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
All default configurations are affected. Summary
The block should be rejected with a duplicate-nullifier contextual validation error. Instead, the ordering of index updates within DetailsIn
The shielded nullifier uniqueness check at step 3 would correctly reject the duplicate transaction. But the The block transaction verifier does not run the best-chain nullifier query for block transactions — that check is gated on mempool transactions only ( There are two attack models: Model A (two attacker blocks): The attacker mines two consecutive valid-work blocks: parent B1 containing a shielded transaction T, and child B2 repeating T. This requires controlling both blocks consecutively. Model B (one attacker block after an honest block): The attacker broadcasts a shielded transaction T into the mempool. When any honest miner includes T in their block B1, the attacker only needs to mine the next child block B2 containing the same T. This requires controlling only one block immediately after an honest block that included the attacker's transaction. The attacker can broadcast a suitable shielded transaction every block until one is included by an honest miner, then attempt to mine the follow-up. Both models require the child block to repeat the shielded-only V5 transaction while the parent is still in non-finalized state. Patcheszebra-state 7.0.0 and zebrad 4.5.0. Replace the
WorkaroundsThere is no configuration-level workaround. The assert is in the non-finalized state push path, which is exercised by all block processing past the checkpoint height. ImpactA malicious block producer can crash targeted Zebra nodes. There are two attack models: In the first model, the attacker mines two consecutive valid-work blocks where the child repeats a shielded transaction from the parent. At 10% hashrate, the attacker has approximately 11.5 opportunities per day; at 5%, approximately 2.9 per day; at 1%, approximately one every 8.7 days. In the second model, the attacker broadcasts a shielded transaction into the mempool and waits for any honest miner to include it. The attacker then only needs to mine the next block containing the same transaction. This is cheaper because the attacker does not need to mine the parent block. At 10% hashrate, the attacker has approximately 14.4 single-block opportunities per day; at 5%, approximately 7.2 per day; at 1%, approximately 1.4 per day. The crash is a process abort (not recoverable within the process). The node must be restarted. Repeated attacks can keep a node down for extended periods. This is a liveness issue, not a consensus divergence: zcashd cleanly rejects the invalid child block while Zebra aborts. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52738
GHSA-w834-cf6p-9m9w
Jul 02, 2026
Zebra: Finalized address balance credit-first overflow on consensus-valid blocks
Medium
Network
Low
None
None
Am I affectedYou are affected if:
SummaryThe finalized transparent address balance writer processes all newly-created outputs (credits) before processing spent outputs (debits) within the same block. A consensus-valid block containing a long chain of same-address transparent self-spends can cause the intermediate per-address balance during the credit pass to exceed Because the triggering block is consensus-valid (zcashd accepts it), the panic recurs on restart when the node re-encounters the same block. This creates a persistent chain halt that can only be resolved by a software patch. DetailsThe finalized state writer at The code panics on the intermediate overflow via An attacker with approximately 1,100–2,100 ZEC and mining capability can construct a block that permanently halts all Zebra nodes. The attacker recovers their capital (the self-spends return funds to the same address), so the net cost is the mining effort only. PatchesPatched in Zebra 4.4.2. The fix processes credits and debits together per transaction rather than all credits then all debits, matching zcashd's approach. WorkaroundsNo workaround is available. Upgrade to Zebra 4.4.2. ImpactA single consensus-valid mined block can permanently halt all Zebra nodes on the network. The halt persists across restarts. Recovery requires deploying a patched version. Downstream consumers (light wallets, exchanges, mining infrastructure) lose service for the duration of the halt. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52737
GHSA-gvjc-3w7c-92jx
Jul 02, 2026
Zebra has sync restart poisoning from single unauthenticated peer via above-lookahead block
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryA malicious peer can answer Zebra's outbound On mainnet, each successful cycle imposes a 67-second sync restart delay. All in-flight downloads from honest peers are cancelled on each restart. DetailsThe bug is the interaction of three layers:
The attacker needs only an unauthenticated P2P connection (post-handshake), a tiny payload (one two-hash Additionally, several other pre-consensus sync-layer errors had zero misbehaviour scores even when peer-attributed. Contextual validation failures ( PatchesPatched in Zebra 4.4.2. The fix:
WorkaroundsNo configuration-level workaround is available. The attack is mitigated by having a diverse honest peer set, but cannot be prevented while the vulnerable code is running. ImpactA single unauthenticated peer can repeatedly stall a syncing Zebra node by forcing 67-second global sync restart cycles. All unrelated in-flight downloads are cancelled on each restart. The node does not crash and no state is corrupted, but sync progress is significantly degraded for the duration of the attack. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52735
GHSA-gf9r-m956-97qx
Jul 02, 2026
zebrad has consensus divergence via P2SH sigop undercount in pure-Rust disabled-opcode parser
Critical
Network
Low
None
None
Am I affectedYou are affected if:
All default configurations are affected. No feature flags, non-default settings, or special build options are required. SummaryZebra's P2SH sigop counter uses a pure-Rust code path that short-circuits on disabled opcodes (such as An attacker can exploit this without mining capability. Broadcasting transactions that spend P2SH outputs with malicious redeem scripts is sufficient; any Zebra miner who includes those transactions in a block triggers a chain split between Zebra and zcashd validators. DetailsThe P2SH sigop counter at The Rust parser in zcashd's A redeem script of PatchesPatched in Zebra 4.4.2. The fix routes the P2SH sigop counter through the same C++ FFI already used by the legacy sigop counter. WorkaroundsThere is no configuration-level workaround. All Zebra nodes validating blocks on a network shared with zcashd are affected. Upgrade as soon as the patched version is available. ImpactA chain split between Zebra and zcashd validators. The attacker broadcasts spending transactions referencing P2SH outputs whose redeem scripts contain a disabled opcode followed by The attacker does not need mining capability, RPC access, or any special privileges. The cost is the transaction fees for the funding and spending transactions. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52736
GHSA-4m69-67m6-prqp
Jul 02, 2026
Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache
High
Network
Low
None
None
DescriptionAm I affectedYou are affected if:
All default configurations are affected. SummaryZebra records a block hash in DetailsZIP-244 defines The attack flow over P2P:
A secondary variant exists where chain pruning (via PatchesPatched in Zebra 4.4.2. The fix removes stale entries from WorkaroundsThere is no complete configuration-level workaround. Reducing the node's inbound peer count ( ImpactA remote unauthenticated P2P peer can permanently stall a targeted Zebra node at a specific block height. The node diverges from the network tip; downstream consumers (lightwalletd, wallets, explorers, mining infrastructure) relying on the node see a stalled chain. The attack requires winning a propagation race: delivering the poisoned block body before honest peers deliver the canonical block. A well-positioned attacker (low-latency connection to the target, observation of new blocks from other peers) can reliably win this race. In sustained form, the attacker repeats for each new block, keeping the target permanently behind. Recovery requires restarting the node (which clears the in-memory sent-hash cache) or waiting for a reorg at the affected height (rare on the canonical chain). CreditReported independently by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-h72h-ppcx-998p
Jul 02, 2026
Zebra has pre-handshake buffer capacity reservation based on attacker-claimed body length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe P2P codec's However, Zebra's existing mitigations further constrain the practical attack surface: per-IP connection limits ( DetailsAt No legitimate Zcash handshake message ( PatchesThe fix defers large buffer reservations until after the handshake completes, or caps the per-message reservation for pre-handshake messages to what WorkaroundsNo workaround is needed. The existing per-IP rate limiting, handshake timeout, and connection limits effectively mitigate the practical impact. ImpactMinimal. The reservation affects virtual address space only, not physical memory. Zebra's existing connection-management mitigations (per-IP limits, accept rate, handshake timeout) further constrain the attack. The code path is worth cleaning up for defense-in-depth but does not produce a measurable denial-of-service effect. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52732
GHSA-4fc2-h7jh-287c
Jul 02, 2026
zebrad has mempool transaction admission denial via single-peer inbound queue saturation
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryA single unauthenticated P2P peer can monopolize all 25 inbound mempool download/verification slots ( DetailsThe mempool download/verification pipeline at
The attacker sends Two additional slot-holding techniques have been independently demonstrated: invalid-prevout transactions that park in Patcheszebrad 4.5.0 The fix adds per-peer queue accounting to the mempool download pipeline. A single peer is limited to a fraction of WorkaroundsThere is no complete configuration-level workaround. Reducing ImpactMempool transaction admission is denied for all honest peers and local RPC clients while the attack is sustained. Block validation and chain synchronization continue normally. The attacker needs only one TCP connection and minimal bandwidth (~1 KB/s of fake CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
GHSA-c8w6-x74f-vmg3
Jul 02, 2026
zebrad vulnerable to full node denial of service via crafted Sapling receiver in z_listunifiedreceivers
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe Details
At The same crate already handles this correctly in Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-443g-gwgp-49x4
Jul 02, 2026
zebrad vulnerable to getblocks/getheaders locator CPU amplification via uncapped vector length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe A single maximally-sized DetailsThe A legitimate block locator is logarithmic in chain length (approximately 30 hashes for the current ~3M-block Zcash chain). Zebra's own send-side cap is The practical impact requires significant attacker bandwidth (approximately 2 MiB per request) and multiple Sybil peers to meaningfully degrade the blocking pool, which limits real-world exploitability. PatchesPatched in Zebra 4.4.2. The fix caps WorkaroundsNo specific workaround is needed. Existing backpressure mechanisms (load shedding, sequential per-peer message processing, connection limits) constrain the practical impact. ImpactUnder sustained load from multiple Sybil peers, oversized locator vectors can occupy blocking-pool threads and degrade state-read performance. The effect is bounded by connection limits and requires significant attacker bandwidth. CreditVulnerability identified by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52731
GHSA-qv2r-v3mx-f4pf
Jul 02, 2026
zebrad has full node denial of service via non-ASCII LongPollId in getblocktemplate
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe DetailsThe Under the Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace byte-index string slicing with character-aware parsing or validate that the Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-44499
GHSA-h9hm-m2xj-4rq9
May 08, 2026
Zebra has Permanent Block Discovery Halt via Gossip Queue Saturation and Syncer Poisoning
High
Network
Low
None
None
SummaryA composite denial-of-service vulnerability in Zebra's block discovery pipeline allows an unauthenticated remote attacker to permanently halt all new block discovery on a targeted node. The attack exploits three independent weaknesses in the gossip, syncer, and download subsystems — all exercisable from a single TCP connection — to create a monotonically growing block deficit that never self-heals. SeverityCritical — This is a Denial of Service vulnerability that requires no authentication, no special privileges, and only a single peer connection. The halt is permanent: the node will never recover without operator intervention. Affected VersionsAll Zebra versions prior to 4.4.0. DescriptionZebra discovers new blocks through two complementary paths: a gossip path (peers announce blocks via The gossip path was vulnerable because there was no per-connection rate limit on The syncer backup path could be degraded by responding with empty Combining these two vectors, an attacker could suppress both block discovery paths simultaneously from a single connection, causing the node to fall permanently behind the chain tip. ImpactDenial of Service
Fixed VersionsThis issue is fixed in Zebra 4.4.0. The fix drops connections that send empty responses to MitigationUsers should upgrade to Zebra 4.4.0 or later immediately. There are no known workarounds for this issue. Immediate upgrade is the only way to protect against this attack. CreditsZebra the researcher who reported this issue through the coordinated disclosure process. Fixed in
4.4.0
References Updated May 08, 2026 · Source: OSV.dev
GHSA-pvmv-cwg8-v6c8
May 08, 2026
Zebra v4.4.0 still accepts V5 SIGHASH_SINGLE without a corresponding output
Critical
Network
Low
None
None
Consensus Divergence in V5 Transparent SIGHASH_SINGLE With No Corresponding OutputSummaryZebra failed to enforce a ZIP-244 consensus rule for V5 transparent transactions: when an input is signed with A previous fix ( SeverityCritical - 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 Affected VersionsZebra 4.4.0. DescriptionVerification of transparent transactions inherits the Bitcoin Script verification code in C++. Since it is consensus-critical, this code is called from Zebra through a foreign function interface (FFI), with a Rust callback that computes the sighash for each input being verified. ZIP-244 §S.2a marks two situations as consensus failure for V5 transparent signatures:
An attacker could exploit this by:
Zebra would verify the transaction's transparent script and accept the transaction (and any block containing it), while ImpactConsensus Failure
Fixed VersionsThis issue is fixed in Zebra 4.4.1. MitigationUsers should upgrade to Zebra 4.4.1 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. CreditsZebra thanks @sangsoo-osec, @zmanian, and @fivelittleducks for finding and reporting the issue. Fixed in
4.4.1
References Updated May 22, 2026 · Source: OSV.dev
GHSA-cwfq-rfcr-8hmp
May 07, 2026
Zebra's Transparent SIGHASH_SINGLE Handling Diverges from zcashd for Corresponding Outputs
Critical
Network
Low
None
None
|
2.4.1
unknown
yanked
Dependencies (82)
+ 74 more
Changelog
Compare changes
|
|
2.4.0
unknown
yanked
27 CVEs
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev
CVE-2026-52829
GHSA-63wg-wjjj-7cp8
Jul 02, 2026
Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryAn address normalization mismatch between the handshake path and the mempool misbehavior path causes a deterministic assertion panic when a peer connects via IPv4 to a dual-stack IPv6 listener and then triggers a mempool misbehavior penalty. The handshake path canonicalizes IPv4-mapped IPv6 addresses to plain IPv4 when storing the peer in the address book via DetailsOn Linux with The handshake path uses After the 30-second misbehavior batch flush, The attacker needs only to complete a P2P handshake over IPv4 to a dual-stack listener and advertise an invalid mempool transaction (such as a coinbase transaction). The assertion fires after the 30-second misbehavior batch flush. PatchesPatched in Zebra 4.5.0. The fix canonicalizes the address in the misbehavior update path via a new WorkaroundsConfiguring ImpactA remote unauthenticated peer can deterministically crash any synced Zebra node running the default Linux dual-stack configuration with a single invalid mempool transaction advertisement, followed by a 30-second wait. The attack requires no mining capability, no RPC access, no funds, and no special privileges. The crash can be repeated after each restart, causing persistent downtime. Linux dual-stack sockets and mempool activation are the default production state, not special preconditions. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52734
GHSA-65jj-fmw8-468q
Jul 02, 2026
zebrad has unbounded memory leak in mempool download pipeline via timeout path cancel_handles retention
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryThe mempool download pipeline's Details
The only cleanup paths for For direct PatchesThe fix preserves the WorkaroundsThere is no configuration-level workaround. Restarting the node clears the accumulated entries. Operators running in memory-constrained environments (containers with cgroup limits) may see the process killed by the OOM killer before natural recovery. ImpactGradual, unbounded memory exhaustion of a Zebra node from unauthenticated P2P traffic. The leak is monotonic (entries are never freed under normal operation) but slow (~685 KB/s per connection worst case). An attacker must sustain traffic for hours to exhaust typical server memory. The node continues operating normally until memory pressure becomes critical, at which point the OS OOM killer terminates the process or the node degrades due to swap pressure. No consensus impact, no fund loss, no on-disk corruption. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52733
GHSA-2gf8-q9rr-jq3h
Jul 02, 2026
zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip
6.5
/ 10
Medium
Network
High
None
None
Unchanged
None
High
Low
Am I affectedYou are affected if:
All default configurations are affected. The corruption persists across restarts because it is written to RocksDB. SummaryWhen DetailsThe non-finalized state provides two methods for removing blocks: When a chain fork occurs and The Patcheszebra-state 7.0.0 and zebrad 4.5.0. The fix adds subtree root cleanup to WorkaroundsThere 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 ImpactPersistent corruption of Sapling and Orchard subtree root history in the RocksDB state database. The corruption survives node restarts. Downstream consumers that rely on CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52739
GHSA-hhm7-qrv5-h4r6
Jul 02, 2026
Zebra: Repeated Non-Finalized Shielded Transaction Aborts Zebra Before Duplicate-Nullifier Rejection
5.9
/ 10
Medium
Network
High
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
All default configurations are affected. Summary
The block should be rejected with a duplicate-nullifier contextual validation error. Instead, the ordering of index updates within DetailsIn
The shielded nullifier uniqueness check at step 3 would correctly reject the duplicate transaction. But the The block transaction verifier does not run the best-chain nullifier query for block transactions — that check is gated on mempool transactions only ( There are two attack models: Model A (two attacker blocks): The attacker mines two consecutive valid-work blocks: parent B1 containing a shielded transaction T, and child B2 repeating T. This requires controlling both blocks consecutively. Model B (one attacker block after an honest block): The attacker broadcasts a shielded transaction T into the mempool. When any honest miner includes T in their block B1, the attacker only needs to mine the next child block B2 containing the same T. This requires controlling only one block immediately after an honest block that included the attacker's transaction. The attacker can broadcast a suitable shielded transaction every block until one is included by an honest miner, then attempt to mine the follow-up. Both models require the child block to repeat the shielded-only V5 transaction while the parent is still in non-finalized state. Patcheszebra-state 7.0.0 and zebrad 4.5.0. Replace the
WorkaroundsThere is no configuration-level workaround. The assert is in the non-finalized state push path, which is exercised by all block processing past the checkpoint height. ImpactA malicious block producer can crash targeted Zebra nodes. There are two attack models: In the first model, the attacker mines two consecutive valid-work blocks where the child repeats a shielded transaction from the parent. At 10% hashrate, the attacker has approximately 11.5 opportunities per day; at 5%, approximately 2.9 per day; at 1%, approximately one every 8.7 days. In the second model, the attacker broadcasts a shielded transaction into the mempool and waits for any honest miner to include it. The attacker then only needs to mine the next block containing the same transaction. This is cheaper because the attacker does not need to mine the parent block. At 10% hashrate, the attacker has approximately 14.4 single-block opportunities per day; at 5%, approximately 7.2 per day; at 1%, approximately 1.4 per day. The crash is a process abort (not recoverable within the process). The node must be restarted. Repeated attacks can keep a node down for extended periods. This is a liveness issue, not a consensus divergence: zcashd cleanly rejects the invalid child block while Zebra aborts. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52738
GHSA-w834-cf6p-9m9w
Jul 02, 2026
Zebra: Finalized address balance credit-first overflow on consensus-valid blocks
Medium
Network
Low
None
None
Am I affectedYou are affected if:
SummaryThe finalized transparent address balance writer processes all newly-created outputs (credits) before processing spent outputs (debits) within the same block. A consensus-valid block containing a long chain of same-address transparent self-spends can cause the intermediate per-address balance during the credit pass to exceed Because the triggering block is consensus-valid (zcashd accepts it), the panic recurs on restart when the node re-encounters the same block. This creates a persistent chain halt that can only be resolved by a software patch. DetailsThe finalized state writer at The code panics on the intermediate overflow via An attacker with approximately 1,100–2,100 ZEC and mining capability can construct a block that permanently halts all Zebra nodes. The attacker recovers their capital (the self-spends return funds to the same address), so the net cost is the mining effort only. PatchesPatched in Zebra 4.4.2. The fix processes credits and debits together per transaction rather than all credits then all debits, matching zcashd's approach. WorkaroundsNo workaround is available. Upgrade to Zebra 4.4.2. ImpactA single consensus-valid mined block can permanently halt all Zebra nodes on the network. The halt persists across restarts. Recovery requires deploying a patched version. Downstream consumers (light wallets, exchanges, mining infrastructure) lose service for the duration of the halt. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52737
GHSA-gvjc-3w7c-92jx
Jul 02, 2026
Zebra has sync restart poisoning from single unauthenticated peer via above-lookahead block
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryA malicious peer can answer Zebra's outbound On mainnet, each successful cycle imposes a 67-second sync restart delay. All in-flight downloads from honest peers are cancelled on each restart. DetailsThe bug is the interaction of three layers:
The attacker needs only an unauthenticated P2P connection (post-handshake), a tiny payload (one two-hash Additionally, several other pre-consensus sync-layer errors had zero misbehaviour scores even when peer-attributed. Contextual validation failures ( PatchesPatched in Zebra 4.4.2. The fix:
WorkaroundsNo configuration-level workaround is available. The attack is mitigated by having a diverse honest peer set, but cannot be prevented while the vulnerable code is running. ImpactA single unauthenticated peer can repeatedly stall a syncing Zebra node by forcing 67-second global sync restart cycles. All unrelated in-flight downloads are cancelled on each restart. The node does not crash and no state is corrupted, but sync progress is significantly degraded for the duration of the attack. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52735
GHSA-gf9r-m956-97qx
Jul 02, 2026
zebrad has consensus divergence via P2SH sigop undercount in pure-Rust disabled-opcode parser
Critical
Network
Low
None
None
Am I affectedYou are affected if:
All default configurations are affected. No feature flags, non-default settings, or special build options are required. SummaryZebra's P2SH sigop counter uses a pure-Rust code path that short-circuits on disabled opcodes (such as An attacker can exploit this without mining capability. Broadcasting transactions that spend P2SH outputs with malicious redeem scripts is sufficient; any Zebra miner who includes those transactions in a block triggers a chain split between Zebra and zcashd validators. DetailsThe P2SH sigop counter at The Rust parser in zcashd's A redeem script of PatchesPatched in Zebra 4.4.2. The fix routes the P2SH sigop counter through the same C++ FFI already used by the legacy sigop counter. WorkaroundsThere is no configuration-level workaround. All Zebra nodes validating blocks on a network shared with zcashd are affected. Upgrade as soon as the patched version is available. ImpactA chain split between Zebra and zcashd validators. The attacker broadcasts spending transactions referencing P2SH outputs whose redeem scripts contain a disabled opcode followed by The attacker does not need mining capability, RPC access, or any special privileges. The cost is the transaction fees for the funding and spending transactions. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52736
GHSA-4m69-67m6-prqp
Jul 02, 2026
Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache
High
Network
Low
None
None
DescriptionAm I affectedYou are affected if:
All default configurations are affected. SummaryZebra records a block hash in DetailsZIP-244 defines The attack flow over P2P:
A secondary variant exists where chain pruning (via PatchesPatched in Zebra 4.4.2. The fix removes stale entries from WorkaroundsThere is no complete configuration-level workaround. Reducing the node's inbound peer count ( ImpactA remote unauthenticated P2P peer can permanently stall a targeted Zebra node at a specific block height. The node diverges from the network tip; downstream consumers (lightwalletd, wallets, explorers, mining infrastructure) relying on the node see a stalled chain. The attack requires winning a propagation race: delivering the poisoned block body before honest peers deliver the canonical block. A well-positioned attacker (low-latency connection to the target, observation of new blocks from other peers) can reliably win this race. In sustained form, the attacker repeats for each new block, keeping the target permanently behind. Recovery requires restarting the node (which clears the in-memory sent-hash cache) or waiting for a reorg at the affected height (rare on the canonical chain). CreditReported independently by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-h72h-ppcx-998p
Jul 02, 2026
Zebra has pre-handshake buffer capacity reservation based on attacker-claimed body length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe P2P codec's However, Zebra's existing mitigations further constrain the practical attack surface: per-IP connection limits ( DetailsAt No legitimate Zcash handshake message ( PatchesThe fix defers large buffer reservations until after the handshake completes, or caps the per-message reservation for pre-handshake messages to what WorkaroundsNo workaround is needed. The existing per-IP rate limiting, handshake timeout, and connection limits effectively mitigate the practical impact. ImpactMinimal. The reservation affects virtual address space only, not physical memory. Zebra's existing connection-management mitigations (per-IP limits, accept rate, handshake timeout) further constrain the attack. The code path is worth cleaning up for defense-in-depth but does not produce a measurable denial-of-service effect. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52732
GHSA-4fc2-h7jh-287c
Jul 02, 2026
zebrad has mempool transaction admission denial via single-peer inbound queue saturation
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryA single unauthenticated P2P peer can monopolize all 25 inbound mempool download/verification slots ( DetailsThe mempool download/verification pipeline at
The attacker sends Two additional slot-holding techniques have been independently demonstrated: invalid-prevout transactions that park in Patcheszebrad 4.5.0 The fix adds per-peer queue accounting to the mempool download pipeline. A single peer is limited to a fraction of WorkaroundsThere is no complete configuration-level workaround. Reducing ImpactMempool transaction admission is denied for all honest peers and local RPC clients while the attack is sustained. Block validation and chain synchronization continue normally. The attacker needs only one TCP connection and minimal bandwidth (~1 KB/s of fake CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
GHSA-c8w6-x74f-vmg3
Jul 02, 2026
zebrad vulnerable to full node denial of service via crafted Sapling receiver in z_listunifiedreceivers
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe Details
At The same crate already handles this correctly in Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-443g-gwgp-49x4
Jul 02, 2026
zebrad vulnerable to getblocks/getheaders locator CPU amplification via uncapped vector length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe A single maximally-sized DetailsThe A legitimate block locator is logarithmic in chain length (approximately 30 hashes for the current ~3M-block Zcash chain). Zebra's own send-side cap is The practical impact requires significant attacker bandwidth (approximately 2 MiB per request) and multiple Sybil peers to meaningfully degrade the blocking pool, which limits real-world exploitability. PatchesPatched in Zebra 4.4.2. The fix caps WorkaroundsNo specific workaround is needed. Existing backpressure mechanisms (load shedding, sequential per-peer message processing, connection limits) constrain the practical impact. ImpactUnder sustained load from multiple Sybil peers, oversized locator vectors can occupy blocking-pool threads and degrade state-read performance. The effect is bounded by connection limits and requires significant attacker bandwidth. CreditVulnerability identified by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52731
GHSA-qv2r-v3mx-f4pf
Jul 02, 2026
zebrad has full node denial of service via non-ASCII LongPollId in getblocktemplate
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe DetailsThe Under the Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace byte-index string slicing with character-aware parsing or validate that the Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-44499
GHSA-h9hm-m2xj-4rq9
May 08, 2026
Zebra has Permanent Block Discovery Halt via Gossip Queue Saturation and Syncer Poisoning
High
Network
Low
None
None
SummaryA composite denial-of-service vulnerability in Zebra's block discovery pipeline allows an unauthenticated remote attacker to permanently halt all new block discovery on a targeted node. The attack exploits three independent weaknesses in the gossip, syncer, and download subsystems — all exercisable from a single TCP connection — to create a monotonically growing block deficit that never self-heals. SeverityCritical — This is a Denial of Service vulnerability that requires no authentication, no special privileges, and only a single peer connection. The halt is permanent: the node will never recover without operator intervention. Affected VersionsAll Zebra versions prior to 4.4.0. DescriptionZebra discovers new blocks through two complementary paths: a gossip path (peers announce blocks via The gossip path was vulnerable because there was no per-connection rate limit on The syncer backup path could be degraded by responding with empty Combining these two vectors, an attacker could suppress both block discovery paths simultaneously from a single connection, causing the node to fall permanently behind the chain tip. ImpactDenial of Service
Fixed VersionsThis issue is fixed in Zebra 4.4.0. The fix drops connections that send empty responses to MitigationUsers should upgrade to Zebra 4.4.0 or later immediately. There are no known workarounds for this issue. Immediate upgrade is the only way to protect against this attack. CreditsZebra the researcher who reported this issue through the coordinated disclosure process. Fixed in
4.4.0
References Updated May 08, 2026 · Source: OSV.dev
GHSA-pvmv-cwg8-v6c8
May 08, 2026
Zebra v4.4.0 still accepts V5 SIGHASH_SINGLE without a corresponding output
Critical
Network
Low
None
None
Consensus Divergence in V5 Transparent SIGHASH_SINGLE With No Corresponding OutputSummaryZebra failed to enforce a ZIP-244 consensus rule for V5 transparent transactions: when an input is signed with A previous fix ( SeverityCritical - 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 Affected VersionsZebra 4.4.0. DescriptionVerification of transparent transactions inherits the Bitcoin Script verification code in C++. Since it is consensus-critical, this code is called from Zebra through a foreign function interface (FFI), with a Rust callback that computes the sighash for each input being verified. ZIP-244 §S.2a marks two situations as consensus failure for V5 transparent signatures:
An attacker could exploit this by:
Zebra would verify the transaction's transparent script and accept the transaction (and any block containing it), while ImpactConsensus Failure
Fixed VersionsThis issue is fixed in Zebra 4.4.1. MitigationUsers should upgrade to Zebra 4.4.1 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. CreditsZebra thanks @sangsoo-osec, @zmanian, and @fivelittleducks for finding and reporting the issue. Fixed in
4.4.1
References Updated May 22, 2026 · Source: OSV.dev
GHSA-cwfq-rfcr-8hmp
May 07, 2026
Zebra's Transparent SIGHASH_SINGLE Handling Diverges from zcashd for Corresponding Outputs
Critical
Network
Low
None
None
|
2.4.0
unknown
yanked
Dependencies (82)
+ 74 more
Changelog
Compare changes
|
|
2.3.0
unknown
27 CVEs
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev
CVE-2026-52829
GHSA-63wg-wjjj-7cp8
Jul 02, 2026
Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryAn address normalization mismatch between the handshake path and the mempool misbehavior path causes a deterministic assertion panic when a peer connects via IPv4 to a dual-stack IPv6 listener and then triggers a mempool misbehavior penalty. The handshake path canonicalizes IPv4-mapped IPv6 addresses to plain IPv4 when storing the peer in the address book via DetailsOn Linux with The handshake path uses After the 30-second misbehavior batch flush, The attacker needs only to complete a P2P handshake over IPv4 to a dual-stack listener and advertise an invalid mempool transaction (such as a coinbase transaction). The assertion fires after the 30-second misbehavior batch flush. PatchesPatched in Zebra 4.5.0. The fix canonicalizes the address in the misbehavior update path via a new WorkaroundsConfiguring ImpactA remote unauthenticated peer can deterministically crash any synced Zebra node running the default Linux dual-stack configuration with a single invalid mempool transaction advertisement, followed by a 30-second wait. The attack requires no mining capability, no RPC access, no funds, and no special privileges. The crash can be repeated after each restart, causing persistent downtime. Linux dual-stack sockets and mempool activation are the default production state, not special preconditions. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52734
GHSA-65jj-fmw8-468q
Jul 02, 2026
zebrad has unbounded memory leak in mempool download pipeline via timeout path cancel_handles retention
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryThe mempool download pipeline's Details
The only cleanup paths for For direct PatchesThe fix preserves the WorkaroundsThere is no configuration-level workaround. Restarting the node clears the accumulated entries. Operators running in memory-constrained environments (containers with cgroup limits) may see the process killed by the OOM killer before natural recovery. ImpactGradual, unbounded memory exhaustion of a Zebra node from unauthenticated P2P traffic. The leak is monotonic (entries are never freed under normal operation) but slow (~685 KB/s per connection worst case). An attacker must sustain traffic for hours to exhaust typical server memory. The node continues operating normally until memory pressure becomes critical, at which point the OS OOM killer terminates the process or the node degrades due to swap pressure. No consensus impact, no fund loss, no on-disk corruption. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52733
GHSA-2gf8-q9rr-jq3h
Jul 02, 2026
zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip
6.5
/ 10
Medium
Network
High
None
None
Unchanged
None
High
Low
Am I affectedYou are affected if:
All default configurations are affected. The corruption persists across restarts because it is written to RocksDB. SummaryWhen DetailsThe non-finalized state provides two methods for removing blocks: When a chain fork occurs and The Patcheszebra-state 7.0.0 and zebrad 4.5.0. The fix adds subtree root cleanup to WorkaroundsThere 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 ImpactPersistent corruption of Sapling and Orchard subtree root history in the RocksDB state database. The corruption survives node restarts. Downstream consumers that rely on CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52739
GHSA-hhm7-qrv5-h4r6
Jul 02, 2026
Zebra: Repeated Non-Finalized Shielded Transaction Aborts Zebra Before Duplicate-Nullifier Rejection
5.9
/ 10
Medium
Network
High
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
All default configurations are affected. Summary
The block should be rejected with a duplicate-nullifier contextual validation error. Instead, the ordering of index updates within DetailsIn
The shielded nullifier uniqueness check at step 3 would correctly reject the duplicate transaction. But the The block transaction verifier does not run the best-chain nullifier query for block transactions — that check is gated on mempool transactions only ( There are two attack models: Model A (two attacker blocks): The attacker mines two consecutive valid-work blocks: parent B1 containing a shielded transaction T, and child B2 repeating T. This requires controlling both blocks consecutively. Model B (one attacker block after an honest block): The attacker broadcasts a shielded transaction T into the mempool. When any honest miner includes T in their block B1, the attacker only needs to mine the next child block B2 containing the same T. This requires controlling only one block immediately after an honest block that included the attacker's transaction. The attacker can broadcast a suitable shielded transaction every block until one is included by an honest miner, then attempt to mine the follow-up. Both models require the child block to repeat the shielded-only V5 transaction while the parent is still in non-finalized state. Patcheszebra-state 7.0.0 and zebrad 4.5.0. Replace the
WorkaroundsThere is no configuration-level workaround. The assert is in the non-finalized state push path, which is exercised by all block processing past the checkpoint height. ImpactA malicious block producer can crash targeted Zebra nodes. There are two attack models: In the first model, the attacker mines two consecutive valid-work blocks where the child repeats a shielded transaction from the parent. At 10% hashrate, the attacker has approximately 11.5 opportunities per day; at 5%, approximately 2.9 per day; at 1%, approximately one every 8.7 days. In the second model, the attacker broadcasts a shielded transaction into the mempool and waits for any honest miner to include it. The attacker then only needs to mine the next block containing the same transaction. This is cheaper because the attacker does not need to mine the parent block. At 10% hashrate, the attacker has approximately 14.4 single-block opportunities per day; at 5%, approximately 7.2 per day; at 1%, approximately 1.4 per day. The crash is a process abort (not recoverable within the process). The node must be restarted. Repeated attacks can keep a node down for extended periods. This is a liveness issue, not a consensus divergence: zcashd cleanly rejects the invalid child block while Zebra aborts. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52738
GHSA-w834-cf6p-9m9w
Jul 02, 2026
Zebra: Finalized address balance credit-first overflow on consensus-valid blocks
Medium
Network
Low
None
None
Am I affectedYou are affected if:
SummaryThe finalized transparent address balance writer processes all newly-created outputs (credits) before processing spent outputs (debits) within the same block. A consensus-valid block containing a long chain of same-address transparent self-spends can cause the intermediate per-address balance during the credit pass to exceed Because the triggering block is consensus-valid (zcashd accepts it), the panic recurs on restart when the node re-encounters the same block. This creates a persistent chain halt that can only be resolved by a software patch. DetailsThe finalized state writer at The code panics on the intermediate overflow via An attacker with approximately 1,100–2,100 ZEC and mining capability can construct a block that permanently halts all Zebra nodes. The attacker recovers their capital (the self-spends return funds to the same address), so the net cost is the mining effort only. PatchesPatched in Zebra 4.4.2. The fix processes credits and debits together per transaction rather than all credits then all debits, matching zcashd's approach. WorkaroundsNo workaround is available. Upgrade to Zebra 4.4.2. ImpactA single consensus-valid mined block can permanently halt all Zebra nodes on the network. The halt persists across restarts. Recovery requires deploying a patched version. Downstream consumers (light wallets, exchanges, mining infrastructure) lose service for the duration of the halt. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52737
GHSA-gvjc-3w7c-92jx
Jul 02, 2026
Zebra has sync restart poisoning from single unauthenticated peer via above-lookahead block
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryA malicious peer can answer Zebra's outbound On mainnet, each successful cycle imposes a 67-second sync restart delay. All in-flight downloads from honest peers are cancelled on each restart. DetailsThe bug is the interaction of three layers:
The attacker needs only an unauthenticated P2P connection (post-handshake), a tiny payload (one two-hash Additionally, several other pre-consensus sync-layer errors had zero misbehaviour scores even when peer-attributed. Contextual validation failures ( PatchesPatched in Zebra 4.4.2. The fix:
WorkaroundsNo configuration-level workaround is available. The attack is mitigated by having a diverse honest peer set, but cannot be prevented while the vulnerable code is running. ImpactA single unauthenticated peer can repeatedly stall a syncing Zebra node by forcing 67-second global sync restart cycles. All unrelated in-flight downloads are cancelled on each restart. The node does not crash and no state is corrupted, but sync progress is significantly degraded for the duration of the attack. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52735
GHSA-gf9r-m956-97qx
Jul 02, 2026
zebrad has consensus divergence via P2SH sigop undercount in pure-Rust disabled-opcode parser
Critical
Network
Low
None
None
Am I affectedYou are affected if:
All default configurations are affected. No feature flags, non-default settings, or special build options are required. SummaryZebra's P2SH sigop counter uses a pure-Rust code path that short-circuits on disabled opcodes (such as An attacker can exploit this without mining capability. Broadcasting transactions that spend P2SH outputs with malicious redeem scripts is sufficient; any Zebra miner who includes those transactions in a block triggers a chain split between Zebra and zcashd validators. DetailsThe P2SH sigop counter at The Rust parser in zcashd's A redeem script of PatchesPatched in Zebra 4.4.2. The fix routes the P2SH sigop counter through the same C++ FFI already used by the legacy sigop counter. WorkaroundsThere is no configuration-level workaround. All Zebra nodes validating blocks on a network shared with zcashd are affected. Upgrade as soon as the patched version is available. ImpactA chain split between Zebra and zcashd validators. The attacker broadcasts spending transactions referencing P2SH outputs whose redeem scripts contain a disabled opcode followed by The attacker does not need mining capability, RPC access, or any special privileges. The cost is the transaction fees for the funding and spending transactions. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52736
GHSA-4m69-67m6-prqp
Jul 02, 2026
Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache
High
Network
Low
None
None
DescriptionAm I affectedYou are affected if:
All default configurations are affected. SummaryZebra records a block hash in DetailsZIP-244 defines The attack flow over P2P:
A secondary variant exists where chain pruning (via PatchesPatched in Zebra 4.4.2. The fix removes stale entries from WorkaroundsThere is no complete configuration-level workaround. Reducing the node's inbound peer count ( ImpactA remote unauthenticated P2P peer can permanently stall a targeted Zebra node at a specific block height. The node diverges from the network tip; downstream consumers (lightwalletd, wallets, explorers, mining infrastructure) relying on the node see a stalled chain. The attack requires winning a propagation race: delivering the poisoned block body before honest peers deliver the canonical block. A well-positioned attacker (low-latency connection to the target, observation of new blocks from other peers) can reliably win this race. In sustained form, the attacker repeats for each new block, keeping the target permanently behind. Recovery requires restarting the node (which clears the in-memory sent-hash cache) or waiting for a reorg at the affected height (rare on the canonical chain). CreditReported independently by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-h72h-ppcx-998p
Jul 02, 2026
Zebra has pre-handshake buffer capacity reservation based on attacker-claimed body length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe P2P codec's However, Zebra's existing mitigations further constrain the practical attack surface: per-IP connection limits ( DetailsAt No legitimate Zcash handshake message ( PatchesThe fix defers large buffer reservations until after the handshake completes, or caps the per-message reservation for pre-handshake messages to what WorkaroundsNo workaround is needed. The existing per-IP rate limiting, handshake timeout, and connection limits effectively mitigate the practical impact. ImpactMinimal. The reservation affects virtual address space only, not physical memory. Zebra's existing connection-management mitigations (per-IP limits, accept rate, handshake timeout) further constrain the attack. The code path is worth cleaning up for defense-in-depth but does not produce a measurable denial-of-service effect. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52732
GHSA-4fc2-h7jh-287c
Jul 02, 2026
zebrad has mempool transaction admission denial via single-peer inbound queue saturation
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryA single unauthenticated P2P peer can monopolize all 25 inbound mempool download/verification slots ( DetailsThe mempool download/verification pipeline at
The attacker sends Two additional slot-holding techniques have been independently demonstrated: invalid-prevout transactions that park in Patcheszebrad 4.5.0 The fix adds per-peer queue accounting to the mempool download pipeline. A single peer is limited to a fraction of WorkaroundsThere is no complete configuration-level workaround. Reducing ImpactMempool transaction admission is denied for all honest peers and local RPC clients while the attack is sustained. Block validation and chain synchronization continue normally. The attacker needs only one TCP connection and minimal bandwidth (~1 KB/s of fake CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
GHSA-c8w6-x74f-vmg3
Jul 02, 2026
zebrad vulnerable to full node denial of service via crafted Sapling receiver in z_listunifiedreceivers
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe Details
At The same crate already handles this correctly in Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-443g-gwgp-49x4
Jul 02, 2026
zebrad vulnerable to getblocks/getheaders locator CPU amplification via uncapped vector length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe A single maximally-sized DetailsThe A legitimate block locator is logarithmic in chain length (approximately 30 hashes for the current ~3M-block Zcash chain). Zebra's own send-side cap is The practical impact requires significant attacker bandwidth (approximately 2 MiB per request) and multiple Sybil peers to meaningfully degrade the blocking pool, which limits real-world exploitability. PatchesPatched in Zebra 4.4.2. The fix caps WorkaroundsNo specific workaround is needed. Existing backpressure mechanisms (load shedding, sequential per-peer message processing, connection limits) constrain the practical impact. ImpactUnder sustained load from multiple Sybil peers, oversized locator vectors can occupy blocking-pool threads and degrade state-read performance. The effect is bounded by connection limits and requires significant attacker bandwidth. CreditVulnerability identified by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52731
GHSA-qv2r-v3mx-f4pf
Jul 02, 2026
zebrad has full node denial of service via non-ASCII LongPollId in getblocktemplate
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe DetailsThe Under the Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace byte-index string slicing with character-aware parsing or validate that the Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-44499
GHSA-h9hm-m2xj-4rq9
May 08, 2026
Zebra has Permanent Block Discovery Halt via Gossip Queue Saturation and Syncer Poisoning
High
Network
Low
None
None
SummaryA composite denial-of-service vulnerability in Zebra's block discovery pipeline allows an unauthenticated remote attacker to permanently halt all new block discovery on a targeted node. The attack exploits three independent weaknesses in the gossip, syncer, and download subsystems — all exercisable from a single TCP connection — to create a monotonically growing block deficit that never self-heals. SeverityCritical — This is a Denial of Service vulnerability that requires no authentication, no special privileges, and only a single peer connection. The halt is permanent: the node will never recover without operator intervention. Affected VersionsAll Zebra versions prior to 4.4.0. DescriptionZebra discovers new blocks through two complementary paths: a gossip path (peers announce blocks via The gossip path was vulnerable because there was no per-connection rate limit on The syncer backup path could be degraded by responding with empty Combining these two vectors, an attacker could suppress both block discovery paths simultaneously from a single connection, causing the node to fall permanently behind the chain tip. ImpactDenial of Service
Fixed VersionsThis issue is fixed in Zebra 4.4.0. The fix drops connections that send empty responses to MitigationUsers should upgrade to Zebra 4.4.0 or later immediately. There are no known workarounds for this issue. Immediate upgrade is the only way to protect against this attack. CreditsZebra the researcher who reported this issue through the coordinated disclosure process. Fixed in
4.4.0
References Updated May 08, 2026 · Source: OSV.dev
GHSA-pvmv-cwg8-v6c8
May 08, 2026
Zebra v4.4.0 still accepts V5 SIGHASH_SINGLE without a corresponding output
Critical
Network
Low
None
None
Consensus Divergence in V5 Transparent SIGHASH_SINGLE With No Corresponding OutputSummaryZebra failed to enforce a ZIP-244 consensus rule for V5 transparent transactions: when an input is signed with A previous fix ( SeverityCritical - 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 Affected VersionsZebra 4.4.0. DescriptionVerification of transparent transactions inherits the Bitcoin Script verification code in C++. Since it is consensus-critical, this code is called from Zebra through a foreign function interface (FFI), with a Rust callback that computes the sighash for each input being verified. ZIP-244 §S.2a marks two situations as consensus failure for V5 transparent signatures:
An attacker could exploit this by:
Zebra would verify the transaction's transparent script and accept the transaction (and any block containing it), while ImpactConsensus Failure
Fixed VersionsThis issue is fixed in Zebra 4.4.1. MitigationUsers should upgrade to Zebra 4.4.1 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. CreditsZebra thanks @sangsoo-osec, @zmanian, and @fivelittleducks for finding and reporting the issue. Fixed in
4.4.1
References Updated May 22, 2026 · Source: OSV.dev
GHSA-cwfq-rfcr-8hmp
May 07, 2026
Zebra's Transparent SIGHASH_SINGLE Handling Diverges from zcashd for Corresponding Outputs
Critical
Network
Low
None
None
|
2.3.0
unknown
Dependencies (78)
+ 70 more
Changelog
Compare changes
|
|
2.2.0
unknown
27 CVEs
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev
CVE-2026-52829
GHSA-63wg-wjjj-7cp8
Jul 02, 2026
Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryAn address normalization mismatch between the handshake path and the mempool misbehavior path causes a deterministic assertion panic when a peer connects via IPv4 to a dual-stack IPv6 listener and then triggers a mempool misbehavior penalty. The handshake path canonicalizes IPv4-mapped IPv6 addresses to plain IPv4 when storing the peer in the address book via DetailsOn Linux with The handshake path uses After the 30-second misbehavior batch flush, The attacker needs only to complete a P2P handshake over IPv4 to a dual-stack listener and advertise an invalid mempool transaction (such as a coinbase transaction). The assertion fires after the 30-second misbehavior batch flush. PatchesPatched in Zebra 4.5.0. The fix canonicalizes the address in the misbehavior update path via a new WorkaroundsConfiguring ImpactA remote unauthenticated peer can deterministically crash any synced Zebra node running the default Linux dual-stack configuration with a single invalid mempool transaction advertisement, followed by a 30-second wait. The attack requires no mining capability, no RPC access, no funds, and no special privileges. The crash can be repeated after each restart, causing persistent downtime. Linux dual-stack sockets and mempool activation are the default production state, not special preconditions. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52734
GHSA-65jj-fmw8-468q
Jul 02, 2026
zebrad has unbounded memory leak in mempool download pipeline via timeout path cancel_handles retention
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryThe mempool download pipeline's Details
The only cleanup paths for For direct PatchesThe fix preserves the WorkaroundsThere is no configuration-level workaround. Restarting the node clears the accumulated entries. Operators running in memory-constrained environments (containers with cgroup limits) may see the process killed by the OOM killer before natural recovery. ImpactGradual, unbounded memory exhaustion of a Zebra node from unauthenticated P2P traffic. The leak is monotonic (entries are never freed under normal operation) but slow (~685 KB/s per connection worst case). An attacker must sustain traffic for hours to exhaust typical server memory. The node continues operating normally until memory pressure becomes critical, at which point the OS OOM killer terminates the process or the node degrades due to swap pressure. No consensus impact, no fund loss, no on-disk corruption. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52733
GHSA-2gf8-q9rr-jq3h
Jul 02, 2026
zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip
6.5
/ 10
Medium
Network
High
None
None
Unchanged
None
High
Low
Am I affectedYou are affected if:
All default configurations are affected. The corruption persists across restarts because it is written to RocksDB. SummaryWhen DetailsThe non-finalized state provides two methods for removing blocks: When a chain fork occurs and The Patcheszebra-state 7.0.0 and zebrad 4.5.0. The fix adds subtree root cleanup to WorkaroundsThere 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 ImpactPersistent corruption of Sapling and Orchard subtree root history in the RocksDB state database. The corruption survives node restarts. Downstream consumers that rely on CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52739
GHSA-hhm7-qrv5-h4r6
Jul 02, 2026
Zebra: Repeated Non-Finalized Shielded Transaction Aborts Zebra Before Duplicate-Nullifier Rejection
5.9
/ 10
Medium
Network
High
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
All default configurations are affected. Summary
The block should be rejected with a duplicate-nullifier contextual validation error. Instead, the ordering of index updates within DetailsIn
The shielded nullifier uniqueness check at step 3 would correctly reject the duplicate transaction. But the The block transaction verifier does not run the best-chain nullifier query for block transactions — that check is gated on mempool transactions only ( There are two attack models: Model A (two attacker blocks): The attacker mines two consecutive valid-work blocks: parent B1 containing a shielded transaction T, and child B2 repeating T. This requires controlling both blocks consecutively. Model B (one attacker block after an honest block): The attacker broadcasts a shielded transaction T into the mempool. When any honest miner includes T in their block B1, the attacker only needs to mine the next child block B2 containing the same T. This requires controlling only one block immediately after an honest block that included the attacker's transaction. The attacker can broadcast a suitable shielded transaction every block until one is included by an honest miner, then attempt to mine the follow-up. Both models require the child block to repeat the shielded-only V5 transaction while the parent is still in non-finalized state. Patcheszebra-state 7.0.0 and zebrad 4.5.0. Replace the
WorkaroundsThere is no configuration-level workaround. The assert is in the non-finalized state push path, which is exercised by all block processing past the checkpoint height. ImpactA malicious block producer can crash targeted Zebra nodes. There are two attack models: In the first model, the attacker mines two consecutive valid-work blocks where the child repeats a shielded transaction from the parent. At 10% hashrate, the attacker has approximately 11.5 opportunities per day; at 5%, approximately 2.9 per day; at 1%, approximately one every 8.7 days. In the second model, the attacker broadcasts a shielded transaction into the mempool and waits for any honest miner to include it. The attacker then only needs to mine the next block containing the same transaction. This is cheaper because the attacker does not need to mine the parent block. At 10% hashrate, the attacker has approximately 14.4 single-block opportunities per day; at 5%, approximately 7.2 per day; at 1%, approximately 1.4 per day. The crash is a process abort (not recoverable within the process). The node must be restarted. Repeated attacks can keep a node down for extended periods. This is a liveness issue, not a consensus divergence: zcashd cleanly rejects the invalid child block while Zebra aborts. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52738
GHSA-w834-cf6p-9m9w
Jul 02, 2026
Zebra: Finalized address balance credit-first overflow on consensus-valid blocks
Medium
Network
Low
None
None
Am I affectedYou are affected if:
SummaryThe finalized transparent address balance writer processes all newly-created outputs (credits) before processing spent outputs (debits) within the same block. A consensus-valid block containing a long chain of same-address transparent self-spends can cause the intermediate per-address balance during the credit pass to exceed Because the triggering block is consensus-valid (zcashd accepts it), the panic recurs on restart when the node re-encounters the same block. This creates a persistent chain halt that can only be resolved by a software patch. DetailsThe finalized state writer at The code panics on the intermediate overflow via An attacker with approximately 1,100–2,100 ZEC and mining capability can construct a block that permanently halts all Zebra nodes. The attacker recovers their capital (the self-spends return funds to the same address), so the net cost is the mining effort only. PatchesPatched in Zebra 4.4.2. The fix processes credits and debits together per transaction rather than all credits then all debits, matching zcashd's approach. WorkaroundsNo workaround is available. Upgrade to Zebra 4.4.2. ImpactA single consensus-valid mined block can permanently halt all Zebra nodes on the network. The halt persists across restarts. Recovery requires deploying a patched version. Downstream consumers (light wallets, exchanges, mining infrastructure) lose service for the duration of the halt. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52737
GHSA-gvjc-3w7c-92jx
Jul 02, 2026
Zebra has sync restart poisoning from single unauthenticated peer via above-lookahead block
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryA malicious peer can answer Zebra's outbound On mainnet, each successful cycle imposes a 67-second sync restart delay. All in-flight downloads from honest peers are cancelled on each restart. DetailsThe bug is the interaction of three layers:
The attacker needs only an unauthenticated P2P connection (post-handshake), a tiny payload (one two-hash Additionally, several other pre-consensus sync-layer errors had zero misbehaviour scores even when peer-attributed. Contextual validation failures ( PatchesPatched in Zebra 4.4.2. The fix:
WorkaroundsNo configuration-level workaround is available. The attack is mitigated by having a diverse honest peer set, but cannot be prevented while the vulnerable code is running. ImpactA single unauthenticated peer can repeatedly stall a syncing Zebra node by forcing 67-second global sync restart cycles. All unrelated in-flight downloads are cancelled on each restart. The node does not crash and no state is corrupted, but sync progress is significantly degraded for the duration of the attack. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52735
GHSA-gf9r-m956-97qx
Jul 02, 2026
zebrad has consensus divergence via P2SH sigop undercount in pure-Rust disabled-opcode parser
Critical
Network
Low
None
None
Am I affectedYou are affected if:
All default configurations are affected. No feature flags, non-default settings, or special build options are required. SummaryZebra's P2SH sigop counter uses a pure-Rust code path that short-circuits on disabled opcodes (such as An attacker can exploit this without mining capability. Broadcasting transactions that spend P2SH outputs with malicious redeem scripts is sufficient; any Zebra miner who includes those transactions in a block triggers a chain split between Zebra and zcashd validators. DetailsThe P2SH sigop counter at The Rust parser in zcashd's A redeem script of PatchesPatched in Zebra 4.4.2. The fix routes the P2SH sigop counter through the same C++ FFI already used by the legacy sigop counter. WorkaroundsThere is no configuration-level workaround. All Zebra nodes validating blocks on a network shared with zcashd are affected. Upgrade as soon as the patched version is available. ImpactA chain split between Zebra and zcashd validators. The attacker broadcasts spending transactions referencing P2SH outputs whose redeem scripts contain a disabled opcode followed by The attacker does not need mining capability, RPC access, or any special privileges. The cost is the transaction fees for the funding and spending transactions. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52736
GHSA-4m69-67m6-prqp
Jul 02, 2026
Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache
High
Network
Low
None
None
DescriptionAm I affectedYou are affected if:
All default configurations are affected. SummaryZebra records a block hash in DetailsZIP-244 defines The attack flow over P2P:
A secondary variant exists where chain pruning (via PatchesPatched in Zebra 4.4.2. The fix removes stale entries from WorkaroundsThere is no complete configuration-level workaround. Reducing the node's inbound peer count ( ImpactA remote unauthenticated P2P peer can permanently stall a targeted Zebra node at a specific block height. The node diverges from the network tip; downstream consumers (lightwalletd, wallets, explorers, mining infrastructure) relying on the node see a stalled chain. The attack requires winning a propagation race: delivering the poisoned block body before honest peers deliver the canonical block. A well-positioned attacker (low-latency connection to the target, observation of new blocks from other peers) can reliably win this race. In sustained form, the attacker repeats for each new block, keeping the target permanently behind. Recovery requires restarting the node (which clears the in-memory sent-hash cache) or waiting for a reorg at the affected height (rare on the canonical chain). CreditReported independently by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-h72h-ppcx-998p
Jul 02, 2026
Zebra has pre-handshake buffer capacity reservation based on attacker-claimed body length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe P2P codec's However, Zebra's existing mitigations further constrain the practical attack surface: per-IP connection limits ( DetailsAt No legitimate Zcash handshake message ( PatchesThe fix defers large buffer reservations until after the handshake completes, or caps the per-message reservation for pre-handshake messages to what WorkaroundsNo workaround is needed. The existing per-IP rate limiting, handshake timeout, and connection limits effectively mitigate the practical impact. ImpactMinimal. The reservation affects virtual address space only, not physical memory. Zebra's existing connection-management mitigations (per-IP limits, accept rate, handshake timeout) further constrain the attack. The code path is worth cleaning up for defense-in-depth but does not produce a measurable denial-of-service effect. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52732
GHSA-4fc2-h7jh-287c
Jul 02, 2026
zebrad has mempool transaction admission denial via single-peer inbound queue saturation
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryA single unauthenticated P2P peer can monopolize all 25 inbound mempool download/verification slots ( DetailsThe mempool download/verification pipeline at
The attacker sends Two additional slot-holding techniques have been independently demonstrated: invalid-prevout transactions that park in Patcheszebrad 4.5.0 The fix adds per-peer queue accounting to the mempool download pipeline. A single peer is limited to a fraction of WorkaroundsThere is no complete configuration-level workaround. Reducing ImpactMempool transaction admission is denied for all honest peers and local RPC clients while the attack is sustained. Block validation and chain synchronization continue normally. The attacker needs only one TCP connection and minimal bandwidth (~1 KB/s of fake CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
GHSA-c8w6-x74f-vmg3
Jul 02, 2026
zebrad vulnerable to full node denial of service via crafted Sapling receiver in z_listunifiedreceivers
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe Details
At The same crate already handles this correctly in Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-443g-gwgp-49x4
Jul 02, 2026
zebrad vulnerable to getblocks/getheaders locator CPU amplification via uncapped vector length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe A single maximally-sized DetailsThe A legitimate block locator is logarithmic in chain length (approximately 30 hashes for the current ~3M-block Zcash chain). Zebra's own send-side cap is The practical impact requires significant attacker bandwidth (approximately 2 MiB per request) and multiple Sybil peers to meaningfully degrade the blocking pool, which limits real-world exploitability. PatchesPatched in Zebra 4.4.2. The fix caps WorkaroundsNo specific workaround is needed. Existing backpressure mechanisms (load shedding, sequential per-peer message processing, connection limits) constrain the practical impact. ImpactUnder sustained load from multiple Sybil peers, oversized locator vectors can occupy blocking-pool threads and degrade state-read performance. The effect is bounded by connection limits and requires significant attacker bandwidth. CreditVulnerability identified by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52731
GHSA-qv2r-v3mx-f4pf
Jul 02, 2026
zebrad has full node denial of service via non-ASCII LongPollId in getblocktemplate
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe DetailsThe Under the Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace byte-index string slicing with character-aware parsing or validate that the Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-44499
GHSA-h9hm-m2xj-4rq9
May 08, 2026
Zebra has Permanent Block Discovery Halt via Gossip Queue Saturation and Syncer Poisoning
High
Network
Low
None
None
SummaryA composite denial-of-service vulnerability in Zebra's block discovery pipeline allows an unauthenticated remote attacker to permanently halt all new block discovery on a targeted node. The attack exploits three independent weaknesses in the gossip, syncer, and download subsystems — all exercisable from a single TCP connection — to create a monotonically growing block deficit that never self-heals. SeverityCritical — This is a Denial of Service vulnerability that requires no authentication, no special privileges, and only a single peer connection. The halt is permanent: the node will never recover without operator intervention. Affected VersionsAll Zebra versions prior to 4.4.0. DescriptionZebra discovers new blocks through two complementary paths: a gossip path (peers announce blocks via The gossip path was vulnerable because there was no per-connection rate limit on The syncer backup path could be degraded by responding with empty Combining these two vectors, an attacker could suppress both block discovery paths simultaneously from a single connection, causing the node to fall permanently behind the chain tip. ImpactDenial of Service
Fixed VersionsThis issue is fixed in Zebra 4.4.0. The fix drops connections that send empty responses to MitigationUsers should upgrade to Zebra 4.4.0 or later immediately. There are no known workarounds for this issue. Immediate upgrade is the only way to protect against this attack. CreditsZebra the researcher who reported this issue through the coordinated disclosure process. Fixed in
4.4.0
References Updated May 08, 2026 · Source: OSV.dev
GHSA-pvmv-cwg8-v6c8
May 08, 2026
Zebra v4.4.0 still accepts V5 SIGHASH_SINGLE without a corresponding output
Critical
Network
Low
None
None
Consensus Divergence in V5 Transparent SIGHASH_SINGLE With No Corresponding OutputSummaryZebra failed to enforce a ZIP-244 consensus rule for V5 transparent transactions: when an input is signed with A previous fix ( SeverityCritical - 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 Affected VersionsZebra 4.4.0. DescriptionVerification of transparent transactions inherits the Bitcoin Script verification code in C++. Since it is consensus-critical, this code is called from Zebra through a foreign function interface (FFI), with a Rust callback that computes the sighash for each input being verified. ZIP-244 §S.2a marks two situations as consensus failure for V5 transparent signatures:
An attacker could exploit this by:
Zebra would verify the transaction's transparent script and accept the transaction (and any block containing it), while ImpactConsensus Failure
Fixed VersionsThis issue is fixed in Zebra 4.4.1. MitigationUsers should upgrade to Zebra 4.4.1 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. CreditsZebra thanks @sangsoo-osec, @zmanian, and @fivelittleducks for finding and reporting the issue. Fixed in
4.4.1
References Updated May 22, 2026 · Source: OSV.dev
GHSA-cwfq-rfcr-8hmp
May 07, 2026
Zebra's Transparent SIGHASH_SINGLE Handling Diverges from zcashd for Corresponding Outputs
Critical
Network
Low
None
None
|
2.2.0
unknown
Dependencies (78)
+ 70 more
Changelog
Compare changes
|
|
2.1.0
unknown
26 CVEs
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev
CVE-2026-52829
GHSA-63wg-wjjj-7cp8
Jul 02, 2026
Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryAn address normalization mismatch between the handshake path and the mempool misbehavior path causes a deterministic assertion panic when a peer connects via IPv4 to a dual-stack IPv6 listener and then triggers a mempool misbehavior penalty. The handshake path canonicalizes IPv4-mapped IPv6 addresses to plain IPv4 when storing the peer in the address book via DetailsOn Linux with The handshake path uses After the 30-second misbehavior batch flush, The attacker needs only to complete a P2P handshake over IPv4 to a dual-stack listener and advertise an invalid mempool transaction (such as a coinbase transaction). The assertion fires after the 30-second misbehavior batch flush. PatchesPatched in Zebra 4.5.0. The fix canonicalizes the address in the misbehavior update path via a new WorkaroundsConfiguring ImpactA remote unauthenticated peer can deterministically crash any synced Zebra node running the default Linux dual-stack configuration with a single invalid mempool transaction advertisement, followed by a 30-second wait. The attack requires no mining capability, no RPC access, no funds, and no special privileges. The crash can be repeated after each restart, causing persistent downtime. Linux dual-stack sockets and mempool activation are the default production state, not special preconditions. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52734
GHSA-65jj-fmw8-468q
Jul 02, 2026
zebrad has unbounded memory leak in mempool download pipeline via timeout path cancel_handles retention
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryThe mempool download pipeline's Details
The only cleanup paths for For direct PatchesThe fix preserves the WorkaroundsThere is no configuration-level workaround. Restarting the node clears the accumulated entries. Operators running in memory-constrained environments (containers with cgroup limits) may see the process killed by the OOM killer before natural recovery. ImpactGradual, unbounded memory exhaustion of a Zebra node from unauthenticated P2P traffic. The leak is monotonic (entries are never freed under normal operation) but slow (~685 KB/s per connection worst case). An attacker must sustain traffic for hours to exhaust typical server memory. The node continues operating normally until memory pressure becomes critical, at which point the OS OOM killer terminates the process or the node degrades due to swap pressure. No consensus impact, no fund loss, no on-disk corruption. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52733
GHSA-2gf8-q9rr-jq3h
Jul 02, 2026
zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip
6.5
/ 10
Medium
Network
High
None
None
Unchanged
None
High
Low
Am I affectedYou are affected if:
All default configurations are affected. The corruption persists across restarts because it is written to RocksDB. SummaryWhen DetailsThe non-finalized state provides two methods for removing blocks: When a chain fork occurs and The Patcheszebra-state 7.0.0 and zebrad 4.5.0. The fix adds subtree root cleanup to WorkaroundsThere 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 ImpactPersistent corruption of Sapling and Orchard subtree root history in the RocksDB state database. The corruption survives node restarts. Downstream consumers that rely on CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52739
GHSA-hhm7-qrv5-h4r6
Jul 02, 2026
Zebra: Repeated Non-Finalized Shielded Transaction Aborts Zebra Before Duplicate-Nullifier Rejection
5.9
/ 10
Medium
Network
High
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
All default configurations are affected. Summary
The block should be rejected with a duplicate-nullifier contextual validation error. Instead, the ordering of index updates within DetailsIn
The shielded nullifier uniqueness check at step 3 would correctly reject the duplicate transaction. But the The block transaction verifier does not run the best-chain nullifier query for block transactions — that check is gated on mempool transactions only ( There are two attack models: Model A (two attacker blocks): The attacker mines two consecutive valid-work blocks: parent B1 containing a shielded transaction T, and child B2 repeating T. This requires controlling both blocks consecutively. Model B (one attacker block after an honest block): The attacker broadcasts a shielded transaction T into the mempool. When any honest miner includes T in their block B1, the attacker only needs to mine the next child block B2 containing the same T. This requires controlling only one block immediately after an honest block that included the attacker's transaction. The attacker can broadcast a suitable shielded transaction every block until one is included by an honest miner, then attempt to mine the follow-up. Both models require the child block to repeat the shielded-only V5 transaction while the parent is still in non-finalized state. Patcheszebra-state 7.0.0 and zebrad 4.5.0. Replace the
WorkaroundsThere is no configuration-level workaround. The assert is in the non-finalized state push path, which is exercised by all block processing past the checkpoint height. ImpactA malicious block producer can crash targeted Zebra nodes. There are two attack models: In the first model, the attacker mines two consecutive valid-work blocks where the child repeats a shielded transaction from the parent. At 10% hashrate, the attacker has approximately 11.5 opportunities per day; at 5%, approximately 2.9 per day; at 1%, approximately one every 8.7 days. In the second model, the attacker broadcasts a shielded transaction into the mempool and waits for any honest miner to include it. The attacker then only needs to mine the next block containing the same transaction. This is cheaper because the attacker does not need to mine the parent block. At 10% hashrate, the attacker has approximately 14.4 single-block opportunities per day; at 5%, approximately 7.2 per day; at 1%, approximately 1.4 per day. The crash is a process abort (not recoverable within the process). The node must be restarted. Repeated attacks can keep a node down for extended periods. This is a liveness issue, not a consensus divergence: zcashd cleanly rejects the invalid child block while Zebra aborts. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52738
GHSA-w834-cf6p-9m9w
Jul 02, 2026
Zebra: Finalized address balance credit-first overflow on consensus-valid blocks
Medium
Network
Low
None
None
Am I affectedYou are affected if:
SummaryThe finalized transparent address balance writer processes all newly-created outputs (credits) before processing spent outputs (debits) within the same block. A consensus-valid block containing a long chain of same-address transparent self-spends can cause the intermediate per-address balance during the credit pass to exceed Because the triggering block is consensus-valid (zcashd accepts it), the panic recurs on restart when the node re-encounters the same block. This creates a persistent chain halt that can only be resolved by a software patch. DetailsThe finalized state writer at The code panics on the intermediate overflow via An attacker with approximately 1,100–2,100 ZEC and mining capability can construct a block that permanently halts all Zebra nodes. The attacker recovers their capital (the self-spends return funds to the same address), so the net cost is the mining effort only. PatchesPatched in Zebra 4.4.2. The fix processes credits and debits together per transaction rather than all credits then all debits, matching zcashd's approach. WorkaroundsNo workaround is available. Upgrade to Zebra 4.4.2. ImpactA single consensus-valid mined block can permanently halt all Zebra nodes on the network. The halt persists across restarts. Recovery requires deploying a patched version. Downstream consumers (light wallets, exchanges, mining infrastructure) lose service for the duration of the halt. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52737
GHSA-gvjc-3w7c-92jx
Jul 02, 2026
Zebra has sync restart poisoning from single unauthenticated peer via above-lookahead block
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryA malicious peer can answer Zebra's outbound On mainnet, each successful cycle imposes a 67-second sync restart delay. All in-flight downloads from honest peers are cancelled on each restart. DetailsThe bug is the interaction of three layers:
The attacker needs only an unauthenticated P2P connection (post-handshake), a tiny payload (one two-hash Additionally, several other pre-consensus sync-layer errors had zero misbehaviour scores even when peer-attributed. Contextual validation failures ( PatchesPatched in Zebra 4.4.2. The fix:
WorkaroundsNo configuration-level workaround is available. The attack is mitigated by having a diverse honest peer set, but cannot be prevented while the vulnerable code is running. ImpactA single unauthenticated peer can repeatedly stall a syncing Zebra node by forcing 67-second global sync restart cycles. All unrelated in-flight downloads are cancelled on each restart. The node does not crash and no state is corrupted, but sync progress is significantly degraded for the duration of the attack. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52735
GHSA-gf9r-m956-97qx
Jul 02, 2026
zebrad has consensus divergence via P2SH sigop undercount in pure-Rust disabled-opcode parser
Critical
Network
Low
None
None
Am I affectedYou are affected if:
All default configurations are affected. No feature flags, non-default settings, or special build options are required. SummaryZebra's P2SH sigop counter uses a pure-Rust code path that short-circuits on disabled opcodes (such as An attacker can exploit this without mining capability. Broadcasting transactions that spend P2SH outputs with malicious redeem scripts is sufficient; any Zebra miner who includes those transactions in a block triggers a chain split between Zebra and zcashd validators. DetailsThe P2SH sigop counter at The Rust parser in zcashd's A redeem script of PatchesPatched in Zebra 4.4.2. The fix routes the P2SH sigop counter through the same C++ FFI already used by the legacy sigop counter. WorkaroundsThere is no configuration-level workaround. All Zebra nodes validating blocks on a network shared with zcashd are affected. Upgrade as soon as the patched version is available. ImpactA chain split between Zebra and zcashd validators. The attacker broadcasts spending transactions referencing P2SH outputs whose redeem scripts contain a disabled opcode followed by The attacker does not need mining capability, RPC access, or any special privileges. The cost is the transaction fees for the funding and spending transactions. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52736
GHSA-4m69-67m6-prqp
Jul 02, 2026
Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache
High
Network
Low
None
None
DescriptionAm I affectedYou are affected if:
All default configurations are affected. SummaryZebra records a block hash in DetailsZIP-244 defines The attack flow over P2P:
A secondary variant exists where chain pruning (via PatchesPatched in Zebra 4.4.2. The fix removes stale entries from WorkaroundsThere is no complete configuration-level workaround. Reducing the node's inbound peer count ( ImpactA remote unauthenticated P2P peer can permanently stall a targeted Zebra node at a specific block height. The node diverges from the network tip; downstream consumers (lightwalletd, wallets, explorers, mining infrastructure) relying on the node see a stalled chain. The attack requires winning a propagation race: delivering the poisoned block body before honest peers deliver the canonical block. A well-positioned attacker (low-latency connection to the target, observation of new blocks from other peers) can reliably win this race. In sustained form, the attacker repeats for each new block, keeping the target permanently behind. Recovery requires restarting the node (which clears the in-memory sent-hash cache) or waiting for a reorg at the affected height (rare on the canonical chain). CreditReported independently by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-h72h-ppcx-998p
Jul 02, 2026
Zebra has pre-handshake buffer capacity reservation based on attacker-claimed body length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe P2P codec's However, Zebra's existing mitigations further constrain the practical attack surface: per-IP connection limits ( DetailsAt No legitimate Zcash handshake message ( PatchesThe fix defers large buffer reservations until after the handshake completes, or caps the per-message reservation for pre-handshake messages to what WorkaroundsNo workaround is needed. The existing per-IP rate limiting, handshake timeout, and connection limits effectively mitigate the practical impact. ImpactMinimal. The reservation affects virtual address space only, not physical memory. Zebra's existing connection-management mitigations (per-IP limits, accept rate, handshake timeout) further constrain the attack. The code path is worth cleaning up for defense-in-depth but does not produce a measurable denial-of-service effect. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52732
GHSA-4fc2-h7jh-287c
Jul 02, 2026
zebrad has mempool transaction admission denial via single-peer inbound queue saturation
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryA single unauthenticated P2P peer can monopolize all 25 inbound mempool download/verification slots ( DetailsThe mempool download/verification pipeline at
The attacker sends Two additional slot-holding techniques have been independently demonstrated: invalid-prevout transactions that park in Patcheszebrad 4.5.0 The fix adds per-peer queue accounting to the mempool download pipeline. A single peer is limited to a fraction of WorkaroundsThere is no complete configuration-level workaround. Reducing ImpactMempool transaction admission is denied for all honest peers and local RPC clients while the attack is sustained. Block validation and chain synchronization continue normally. The attacker needs only one TCP connection and minimal bandwidth (~1 KB/s of fake CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
GHSA-c8w6-x74f-vmg3
Jul 02, 2026
zebrad vulnerable to full node denial of service via crafted Sapling receiver in z_listunifiedreceivers
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe Details
At The same crate already handles this correctly in Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-443g-gwgp-49x4
Jul 02, 2026
zebrad vulnerable to getblocks/getheaders locator CPU amplification via uncapped vector length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe A single maximally-sized DetailsThe A legitimate block locator is logarithmic in chain length (approximately 30 hashes for the current ~3M-block Zcash chain). Zebra's own send-side cap is The practical impact requires significant attacker bandwidth (approximately 2 MiB per request) and multiple Sybil peers to meaningfully degrade the blocking pool, which limits real-world exploitability. PatchesPatched in Zebra 4.4.2. The fix caps WorkaroundsNo specific workaround is needed. Existing backpressure mechanisms (load shedding, sequential per-peer message processing, connection limits) constrain the practical impact. ImpactUnder sustained load from multiple Sybil peers, oversized locator vectors can occupy blocking-pool threads and degrade state-read performance. The effect is bounded by connection limits and requires significant attacker bandwidth. CreditVulnerability identified by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52731
GHSA-qv2r-v3mx-f4pf
Jul 02, 2026
zebrad has full node denial of service via non-ASCII LongPollId in getblocktemplate
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe DetailsThe Under the Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace byte-index string slicing with character-aware parsing or validate that the Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-44499
GHSA-h9hm-m2xj-4rq9
May 08, 2026
Zebra has Permanent Block Discovery Halt via Gossip Queue Saturation and Syncer Poisoning
High
Network
Low
None
None
SummaryA composite denial-of-service vulnerability in Zebra's block discovery pipeline allows an unauthenticated remote attacker to permanently halt all new block discovery on a targeted node. The attack exploits three independent weaknesses in the gossip, syncer, and download subsystems — all exercisable from a single TCP connection — to create a monotonically growing block deficit that never self-heals. SeverityCritical — This is a Denial of Service vulnerability that requires no authentication, no special privileges, and only a single peer connection. The halt is permanent: the node will never recover without operator intervention. Affected VersionsAll Zebra versions prior to 4.4.0. DescriptionZebra discovers new blocks through two complementary paths: a gossip path (peers announce blocks via The gossip path was vulnerable because there was no per-connection rate limit on The syncer backup path could be degraded by responding with empty Combining these two vectors, an attacker could suppress both block discovery paths simultaneously from a single connection, causing the node to fall permanently behind the chain tip. ImpactDenial of Service
Fixed VersionsThis issue is fixed in Zebra 4.4.0. The fix drops connections that send empty responses to MitigationUsers should upgrade to Zebra 4.4.0 or later immediately. There are no known workarounds for this issue. Immediate upgrade is the only way to protect against this attack. CreditsZebra the researcher who reported this issue through the coordinated disclosure process. Fixed in
4.4.0
References Updated May 08, 2026 · Source: OSV.dev
GHSA-pvmv-cwg8-v6c8
May 08, 2026
Zebra v4.4.0 still accepts V5 SIGHASH_SINGLE without a corresponding output
Critical
Network
Low
None
None
Consensus Divergence in V5 Transparent SIGHASH_SINGLE With No Corresponding OutputSummaryZebra failed to enforce a ZIP-244 consensus rule for V5 transparent transactions: when an input is signed with A previous fix ( SeverityCritical - 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 Affected VersionsZebra 4.4.0. DescriptionVerification of transparent transactions inherits the Bitcoin Script verification code in C++. Since it is consensus-critical, this code is called from Zebra through a foreign function interface (FFI), with a Rust callback that computes the sighash for each input being verified. ZIP-244 §S.2a marks two situations as consensus failure for V5 transparent signatures:
An attacker could exploit this by:
Zebra would verify the transaction's transparent script and accept the transaction (and any block containing it), while ImpactConsensus Failure
Fixed VersionsThis issue is fixed in Zebra 4.4.1. MitigationUsers should upgrade to Zebra 4.4.1 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. CreditsZebra thanks @sangsoo-osec, @zmanian, and @fivelittleducks for finding and reporting the issue. Fixed in
4.4.1
References Updated May 22, 2026 · Source: OSV.dev
GHSA-cwfq-rfcr-8hmp
May 07, 2026
Zebra's Transparent SIGHASH_SINGLE Handling Diverges from zcashd for Corresponding Outputs
Critical
Network
Low
None
None
|
2.1.0
unknown
Dependencies (78)
+ 70 more
Changelog
Compare changes
|
|
2.0.1
unknown
26 CVEs
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev
CVE-2026-52829
GHSA-63wg-wjjj-7cp8
Jul 02, 2026
Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryAn address normalization mismatch between the handshake path and the mempool misbehavior path causes a deterministic assertion panic when a peer connects via IPv4 to a dual-stack IPv6 listener and then triggers a mempool misbehavior penalty. The handshake path canonicalizes IPv4-mapped IPv6 addresses to plain IPv4 when storing the peer in the address book via DetailsOn Linux with The handshake path uses After the 30-second misbehavior batch flush, The attacker needs only to complete a P2P handshake over IPv4 to a dual-stack listener and advertise an invalid mempool transaction (such as a coinbase transaction). The assertion fires after the 30-second misbehavior batch flush. PatchesPatched in Zebra 4.5.0. The fix canonicalizes the address in the misbehavior update path via a new WorkaroundsConfiguring ImpactA remote unauthenticated peer can deterministically crash any synced Zebra node running the default Linux dual-stack configuration with a single invalid mempool transaction advertisement, followed by a 30-second wait. The attack requires no mining capability, no RPC access, no funds, and no special privileges. The crash can be repeated after each restart, causing persistent downtime. Linux dual-stack sockets and mempool activation are the default production state, not special preconditions. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52734
GHSA-65jj-fmw8-468q
Jul 02, 2026
zebrad has unbounded memory leak in mempool download pipeline via timeout path cancel_handles retention
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryThe mempool download pipeline's Details
The only cleanup paths for For direct PatchesThe fix preserves the WorkaroundsThere is no configuration-level workaround. Restarting the node clears the accumulated entries. Operators running in memory-constrained environments (containers with cgroup limits) may see the process killed by the OOM killer before natural recovery. ImpactGradual, unbounded memory exhaustion of a Zebra node from unauthenticated P2P traffic. The leak is monotonic (entries are never freed under normal operation) but slow (~685 KB/s per connection worst case). An attacker must sustain traffic for hours to exhaust typical server memory. The node continues operating normally until memory pressure becomes critical, at which point the OS OOM killer terminates the process or the node degrades due to swap pressure. No consensus impact, no fund loss, no on-disk corruption. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52733
GHSA-2gf8-q9rr-jq3h
Jul 02, 2026
zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip
6.5
/ 10
Medium
Network
High
None
None
Unchanged
None
High
Low
Am I affectedYou are affected if:
All default configurations are affected. The corruption persists across restarts because it is written to RocksDB. SummaryWhen DetailsThe non-finalized state provides two methods for removing blocks: When a chain fork occurs and The Patcheszebra-state 7.0.0 and zebrad 4.5.0. The fix adds subtree root cleanup to WorkaroundsThere 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 ImpactPersistent corruption of Sapling and Orchard subtree root history in the RocksDB state database. The corruption survives node restarts. Downstream consumers that rely on CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52739
GHSA-hhm7-qrv5-h4r6
Jul 02, 2026
Zebra: Repeated Non-Finalized Shielded Transaction Aborts Zebra Before Duplicate-Nullifier Rejection
5.9
/ 10
Medium
Network
High
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
All default configurations are affected. Summary
The block should be rejected with a duplicate-nullifier contextual validation error. Instead, the ordering of index updates within DetailsIn
The shielded nullifier uniqueness check at step 3 would correctly reject the duplicate transaction. But the The block transaction verifier does not run the best-chain nullifier query for block transactions — that check is gated on mempool transactions only ( There are two attack models: Model A (two attacker blocks): The attacker mines two consecutive valid-work blocks: parent B1 containing a shielded transaction T, and child B2 repeating T. This requires controlling both blocks consecutively. Model B (one attacker block after an honest block): The attacker broadcasts a shielded transaction T into the mempool. When any honest miner includes T in their block B1, the attacker only needs to mine the next child block B2 containing the same T. This requires controlling only one block immediately after an honest block that included the attacker's transaction. The attacker can broadcast a suitable shielded transaction every block until one is included by an honest miner, then attempt to mine the follow-up. Both models require the child block to repeat the shielded-only V5 transaction while the parent is still in non-finalized state. Patcheszebra-state 7.0.0 and zebrad 4.5.0. Replace the
WorkaroundsThere is no configuration-level workaround. The assert is in the non-finalized state push path, which is exercised by all block processing past the checkpoint height. ImpactA malicious block producer can crash targeted Zebra nodes. There are two attack models: In the first model, the attacker mines two consecutive valid-work blocks where the child repeats a shielded transaction from the parent. At 10% hashrate, the attacker has approximately 11.5 opportunities per day; at 5%, approximately 2.9 per day; at 1%, approximately one every 8.7 days. In the second model, the attacker broadcasts a shielded transaction into the mempool and waits for any honest miner to include it. The attacker then only needs to mine the next block containing the same transaction. This is cheaper because the attacker does not need to mine the parent block. At 10% hashrate, the attacker has approximately 14.4 single-block opportunities per day; at 5%, approximately 7.2 per day; at 1%, approximately 1.4 per day. The crash is a process abort (not recoverable within the process). The node must be restarted. Repeated attacks can keep a node down for extended periods. This is a liveness issue, not a consensus divergence: zcashd cleanly rejects the invalid child block while Zebra aborts. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52738
GHSA-w834-cf6p-9m9w
Jul 02, 2026
Zebra: Finalized address balance credit-first overflow on consensus-valid blocks
Medium
Network
Low
None
None
Am I affectedYou are affected if:
SummaryThe finalized transparent address balance writer processes all newly-created outputs (credits) before processing spent outputs (debits) within the same block. A consensus-valid block containing a long chain of same-address transparent self-spends can cause the intermediate per-address balance during the credit pass to exceed Because the triggering block is consensus-valid (zcashd accepts it), the panic recurs on restart when the node re-encounters the same block. This creates a persistent chain halt that can only be resolved by a software patch. DetailsThe finalized state writer at The code panics on the intermediate overflow via An attacker with approximately 1,100–2,100 ZEC and mining capability can construct a block that permanently halts all Zebra nodes. The attacker recovers their capital (the self-spends return funds to the same address), so the net cost is the mining effort only. PatchesPatched in Zebra 4.4.2. The fix processes credits and debits together per transaction rather than all credits then all debits, matching zcashd's approach. WorkaroundsNo workaround is available. Upgrade to Zebra 4.4.2. ImpactA single consensus-valid mined block can permanently halt all Zebra nodes on the network. The halt persists across restarts. Recovery requires deploying a patched version. Downstream consumers (light wallets, exchanges, mining infrastructure) lose service for the duration of the halt. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52737
GHSA-gvjc-3w7c-92jx
Jul 02, 2026
Zebra has sync restart poisoning from single unauthenticated peer via above-lookahead block
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryA malicious peer can answer Zebra's outbound On mainnet, each successful cycle imposes a 67-second sync restart delay. All in-flight downloads from honest peers are cancelled on each restart. DetailsThe bug is the interaction of three layers:
The attacker needs only an unauthenticated P2P connection (post-handshake), a tiny payload (one two-hash Additionally, several other pre-consensus sync-layer errors had zero misbehaviour scores even when peer-attributed. Contextual validation failures ( PatchesPatched in Zebra 4.4.2. The fix:
WorkaroundsNo configuration-level workaround is available. The attack is mitigated by having a diverse honest peer set, but cannot be prevented while the vulnerable code is running. ImpactA single unauthenticated peer can repeatedly stall a syncing Zebra node by forcing 67-second global sync restart cycles. All unrelated in-flight downloads are cancelled on each restart. The node does not crash and no state is corrupted, but sync progress is significantly degraded for the duration of the attack. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52735
GHSA-gf9r-m956-97qx
Jul 02, 2026
zebrad has consensus divergence via P2SH sigop undercount in pure-Rust disabled-opcode parser
Critical
Network
Low
None
None
Am I affectedYou are affected if:
All default configurations are affected. No feature flags, non-default settings, or special build options are required. SummaryZebra's P2SH sigop counter uses a pure-Rust code path that short-circuits on disabled opcodes (such as An attacker can exploit this without mining capability. Broadcasting transactions that spend P2SH outputs with malicious redeem scripts is sufficient; any Zebra miner who includes those transactions in a block triggers a chain split between Zebra and zcashd validators. DetailsThe P2SH sigop counter at The Rust parser in zcashd's A redeem script of PatchesPatched in Zebra 4.4.2. The fix routes the P2SH sigop counter through the same C++ FFI already used by the legacy sigop counter. WorkaroundsThere is no configuration-level workaround. All Zebra nodes validating blocks on a network shared with zcashd are affected. Upgrade as soon as the patched version is available. ImpactA chain split between Zebra and zcashd validators. The attacker broadcasts spending transactions referencing P2SH outputs whose redeem scripts contain a disabled opcode followed by The attacker does not need mining capability, RPC access, or any special privileges. The cost is the transaction fees for the funding and spending transactions. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52736
GHSA-4m69-67m6-prqp
Jul 02, 2026
Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache
High
Network
Low
None
None
DescriptionAm I affectedYou are affected if:
All default configurations are affected. SummaryZebra records a block hash in DetailsZIP-244 defines The attack flow over P2P:
A secondary variant exists where chain pruning (via PatchesPatched in Zebra 4.4.2. The fix removes stale entries from WorkaroundsThere is no complete configuration-level workaround. Reducing the node's inbound peer count ( ImpactA remote unauthenticated P2P peer can permanently stall a targeted Zebra node at a specific block height. The node diverges from the network tip; downstream consumers (lightwalletd, wallets, explorers, mining infrastructure) relying on the node see a stalled chain. The attack requires winning a propagation race: delivering the poisoned block body before honest peers deliver the canonical block. A well-positioned attacker (low-latency connection to the target, observation of new blocks from other peers) can reliably win this race. In sustained form, the attacker repeats for each new block, keeping the target permanently behind. Recovery requires restarting the node (which clears the in-memory sent-hash cache) or waiting for a reorg at the affected height (rare on the canonical chain). CreditReported independently by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-h72h-ppcx-998p
Jul 02, 2026
Zebra has pre-handshake buffer capacity reservation based on attacker-claimed body length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe P2P codec's However, Zebra's existing mitigations further constrain the practical attack surface: per-IP connection limits ( DetailsAt No legitimate Zcash handshake message ( PatchesThe fix defers large buffer reservations until after the handshake completes, or caps the per-message reservation for pre-handshake messages to what WorkaroundsNo workaround is needed. The existing per-IP rate limiting, handshake timeout, and connection limits effectively mitigate the practical impact. ImpactMinimal. The reservation affects virtual address space only, not physical memory. Zebra's existing connection-management mitigations (per-IP limits, accept rate, handshake timeout) further constrain the attack. The code path is worth cleaning up for defense-in-depth but does not produce a measurable denial-of-service effect. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52732
GHSA-4fc2-h7jh-287c
Jul 02, 2026
zebrad has mempool transaction admission denial via single-peer inbound queue saturation
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryA single unauthenticated P2P peer can monopolize all 25 inbound mempool download/verification slots ( DetailsThe mempool download/verification pipeline at
The attacker sends Two additional slot-holding techniques have been independently demonstrated: invalid-prevout transactions that park in Patcheszebrad 4.5.0 The fix adds per-peer queue accounting to the mempool download pipeline. A single peer is limited to a fraction of WorkaroundsThere is no complete configuration-level workaround. Reducing ImpactMempool transaction admission is denied for all honest peers and local RPC clients while the attack is sustained. Block validation and chain synchronization continue normally. The attacker needs only one TCP connection and minimal bandwidth (~1 KB/s of fake CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
GHSA-c8w6-x74f-vmg3
Jul 02, 2026
zebrad vulnerable to full node denial of service via crafted Sapling receiver in z_listunifiedreceivers
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe Details
At The same crate already handles this correctly in Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-443g-gwgp-49x4
Jul 02, 2026
zebrad vulnerable to getblocks/getheaders locator CPU amplification via uncapped vector length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe A single maximally-sized DetailsThe A legitimate block locator is logarithmic in chain length (approximately 30 hashes for the current ~3M-block Zcash chain). Zebra's own send-side cap is The practical impact requires significant attacker bandwidth (approximately 2 MiB per request) and multiple Sybil peers to meaningfully degrade the blocking pool, which limits real-world exploitability. PatchesPatched in Zebra 4.4.2. The fix caps WorkaroundsNo specific workaround is needed. Existing backpressure mechanisms (load shedding, sequential per-peer message processing, connection limits) constrain the practical impact. ImpactUnder sustained load from multiple Sybil peers, oversized locator vectors can occupy blocking-pool threads and degrade state-read performance. The effect is bounded by connection limits and requires significant attacker bandwidth. CreditVulnerability identified by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52731
GHSA-qv2r-v3mx-f4pf
Jul 02, 2026
zebrad has full node denial of service via non-ASCII LongPollId in getblocktemplate
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe DetailsThe Under the Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace byte-index string slicing with character-aware parsing or validate that the Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-44499
GHSA-h9hm-m2xj-4rq9
May 08, 2026
Zebra has Permanent Block Discovery Halt via Gossip Queue Saturation and Syncer Poisoning
High
Network
Low
None
None
SummaryA composite denial-of-service vulnerability in Zebra's block discovery pipeline allows an unauthenticated remote attacker to permanently halt all new block discovery on a targeted node. The attack exploits three independent weaknesses in the gossip, syncer, and download subsystems — all exercisable from a single TCP connection — to create a monotonically growing block deficit that never self-heals. SeverityCritical — This is a Denial of Service vulnerability that requires no authentication, no special privileges, and only a single peer connection. The halt is permanent: the node will never recover without operator intervention. Affected VersionsAll Zebra versions prior to 4.4.0. DescriptionZebra discovers new blocks through two complementary paths: a gossip path (peers announce blocks via The gossip path was vulnerable because there was no per-connection rate limit on The syncer backup path could be degraded by responding with empty Combining these two vectors, an attacker could suppress both block discovery paths simultaneously from a single connection, causing the node to fall permanently behind the chain tip. ImpactDenial of Service
Fixed VersionsThis issue is fixed in Zebra 4.4.0. The fix drops connections that send empty responses to MitigationUsers should upgrade to Zebra 4.4.0 or later immediately. There are no known workarounds for this issue. Immediate upgrade is the only way to protect against this attack. CreditsZebra the researcher who reported this issue through the coordinated disclosure process. Fixed in
4.4.0
References Updated May 08, 2026 · Source: OSV.dev
GHSA-pvmv-cwg8-v6c8
May 08, 2026
Zebra v4.4.0 still accepts V5 SIGHASH_SINGLE without a corresponding output
Critical
Network
Low
None
None
Consensus Divergence in V5 Transparent SIGHASH_SINGLE With No Corresponding OutputSummaryZebra failed to enforce a ZIP-244 consensus rule for V5 transparent transactions: when an input is signed with A previous fix ( SeverityCritical - 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 Affected VersionsZebra 4.4.0. DescriptionVerification of transparent transactions inherits the Bitcoin Script verification code in C++. Since it is consensus-critical, this code is called from Zebra through a foreign function interface (FFI), with a Rust callback that computes the sighash for each input being verified. ZIP-244 §S.2a marks two situations as consensus failure for V5 transparent signatures:
An attacker could exploit this by:
Zebra would verify the transaction's transparent script and accept the transaction (and any block containing it), while ImpactConsensus Failure
Fixed VersionsThis issue is fixed in Zebra 4.4.1. MitigationUsers should upgrade to Zebra 4.4.1 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. CreditsZebra thanks @sangsoo-osec, @zmanian, and @fivelittleducks for finding and reporting the issue. Fixed in
4.4.1
References Updated May 22, 2026 · Source: OSV.dev
GHSA-cwfq-rfcr-8hmp
May 07, 2026
Zebra's Transparent SIGHASH_SINGLE Handling Diverges from zcashd for Corresponding Outputs
Critical
Network
Low
None
None
|
2.0.1
unknown
Dependencies (78)
+ 70 more
Changelog
Compare changes
|
|
1.9.0
unknown
26 CVEs
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev
CVE-2026-52829
GHSA-63wg-wjjj-7cp8
Jul 02, 2026
Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryAn address normalization mismatch between the handshake path and the mempool misbehavior path causes a deterministic assertion panic when a peer connects via IPv4 to a dual-stack IPv6 listener and then triggers a mempool misbehavior penalty. The handshake path canonicalizes IPv4-mapped IPv6 addresses to plain IPv4 when storing the peer in the address book via DetailsOn Linux with The handshake path uses After the 30-second misbehavior batch flush, The attacker needs only to complete a P2P handshake over IPv4 to a dual-stack listener and advertise an invalid mempool transaction (such as a coinbase transaction). The assertion fires after the 30-second misbehavior batch flush. PatchesPatched in Zebra 4.5.0. The fix canonicalizes the address in the misbehavior update path via a new WorkaroundsConfiguring ImpactA remote unauthenticated peer can deterministically crash any synced Zebra node running the default Linux dual-stack configuration with a single invalid mempool transaction advertisement, followed by a 30-second wait. The attack requires no mining capability, no RPC access, no funds, and no special privileges. The crash can be repeated after each restart, causing persistent downtime. Linux dual-stack sockets and mempool activation are the default production state, not special preconditions. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52734
GHSA-65jj-fmw8-468q
Jul 02, 2026
zebrad has unbounded memory leak in mempool download pipeline via timeout path cancel_handles retention
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryThe mempool download pipeline's Details
The only cleanup paths for For direct PatchesThe fix preserves the WorkaroundsThere is no configuration-level workaround. Restarting the node clears the accumulated entries. Operators running in memory-constrained environments (containers with cgroup limits) may see the process killed by the OOM killer before natural recovery. ImpactGradual, unbounded memory exhaustion of a Zebra node from unauthenticated P2P traffic. The leak is monotonic (entries are never freed under normal operation) but slow (~685 KB/s per connection worst case). An attacker must sustain traffic for hours to exhaust typical server memory. The node continues operating normally until memory pressure becomes critical, at which point the OS OOM killer terminates the process or the node degrades due to swap pressure. No consensus impact, no fund loss, no on-disk corruption. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52733
GHSA-2gf8-q9rr-jq3h
Jul 02, 2026
zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip
6.5
/ 10
Medium
Network
High
None
None
Unchanged
None
High
Low
Am I affectedYou are affected if:
All default configurations are affected. The corruption persists across restarts because it is written to RocksDB. SummaryWhen DetailsThe non-finalized state provides two methods for removing blocks: When a chain fork occurs and The Patcheszebra-state 7.0.0 and zebrad 4.5.0. The fix adds subtree root cleanup to WorkaroundsThere 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 ImpactPersistent corruption of Sapling and Orchard subtree root history in the RocksDB state database. The corruption survives node restarts. Downstream consumers that rely on CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52739
GHSA-hhm7-qrv5-h4r6
Jul 02, 2026
Zebra: Repeated Non-Finalized Shielded Transaction Aborts Zebra Before Duplicate-Nullifier Rejection
5.9
/ 10
Medium
Network
High
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
All default configurations are affected. Summary
The block should be rejected with a duplicate-nullifier contextual validation error. Instead, the ordering of index updates within DetailsIn
The shielded nullifier uniqueness check at step 3 would correctly reject the duplicate transaction. But the The block transaction verifier does not run the best-chain nullifier query for block transactions — that check is gated on mempool transactions only ( There are two attack models: Model A (two attacker blocks): The attacker mines two consecutive valid-work blocks: parent B1 containing a shielded transaction T, and child B2 repeating T. This requires controlling both blocks consecutively. Model B (one attacker block after an honest block): The attacker broadcasts a shielded transaction T into the mempool. When any honest miner includes T in their block B1, the attacker only needs to mine the next child block B2 containing the same T. This requires controlling only one block immediately after an honest block that included the attacker's transaction. The attacker can broadcast a suitable shielded transaction every block until one is included by an honest miner, then attempt to mine the follow-up. Both models require the child block to repeat the shielded-only V5 transaction while the parent is still in non-finalized state. Patcheszebra-state 7.0.0 and zebrad 4.5.0. Replace the
WorkaroundsThere is no configuration-level workaround. The assert is in the non-finalized state push path, which is exercised by all block processing past the checkpoint height. ImpactA malicious block producer can crash targeted Zebra nodes. There are two attack models: In the first model, the attacker mines two consecutive valid-work blocks where the child repeats a shielded transaction from the parent. At 10% hashrate, the attacker has approximately 11.5 opportunities per day; at 5%, approximately 2.9 per day; at 1%, approximately one every 8.7 days. In the second model, the attacker broadcasts a shielded transaction into the mempool and waits for any honest miner to include it. The attacker then only needs to mine the next block containing the same transaction. This is cheaper because the attacker does not need to mine the parent block. At 10% hashrate, the attacker has approximately 14.4 single-block opportunities per day; at 5%, approximately 7.2 per day; at 1%, approximately 1.4 per day. The crash is a process abort (not recoverable within the process). The node must be restarted. Repeated attacks can keep a node down for extended periods. This is a liveness issue, not a consensus divergence: zcashd cleanly rejects the invalid child block while Zebra aborts. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52738
GHSA-w834-cf6p-9m9w
Jul 02, 2026
Zebra: Finalized address balance credit-first overflow on consensus-valid blocks
Medium
Network
Low
None
None
Am I affectedYou are affected if:
SummaryThe finalized transparent address balance writer processes all newly-created outputs (credits) before processing spent outputs (debits) within the same block. A consensus-valid block containing a long chain of same-address transparent self-spends can cause the intermediate per-address balance during the credit pass to exceed Because the triggering block is consensus-valid (zcashd accepts it), the panic recurs on restart when the node re-encounters the same block. This creates a persistent chain halt that can only be resolved by a software patch. DetailsThe finalized state writer at The code panics on the intermediate overflow via An attacker with approximately 1,100–2,100 ZEC and mining capability can construct a block that permanently halts all Zebra nodes. The attacker recovers their capital (the self-spends return funds to the same address), so the net cost is the mining effort only. PatchesPatched in Zebra 4.4.2. The fix processes credits and debits together per transaction rather than all credits then all debits, matching zcashd's approach. WorkaroundsNo workaround is available. Upgrade to Zebra 4.4.2. ImpactA single consensus-valid mined block can permanently halt all Zebra nodes on the network. The halt persists across restarts. Recovery requires deploying a patched version. Downstream consumers (light wallets, exchanges, mining infrastructure) lose service for the duration of the halt. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52737
GHSA-gvjc-3w7c-92jx
Jul 02, 2026
Zebra has sync restart poisoning from single unauthenticated peer via above-lookahead block
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryA malicious peer can answer Zebra's outbound On mainnet, each successful cycle imposes a 67-second sync restart delay. All in-flight downloads from honest peers are cancelled on each restart. DetailsThe bug is the interaction of three layers:
The attacker needs only an unauthenticated P2P connection (post-handshake), a tiny payload (one two-hash Additionally, several other pre-consensus sync-layer errors had zero misbehaviour scores even when peer-attributed. Contextual validation failures ( PatchesPatched in Zebra 4.4.2. The fix:
WorkaroundsNo configuration-level workaround is available. The attack is mitigated by having a diverse honest peer set, but cannot be prevented while the vulnerable code is running. ImpactA single unauthenticated peer can repeatedly stall a syncing Zebra node by forcing 67-second global sync restart cycles. All unrelated in-flight downloads are cancelled on each restart. The node does not crash and no state is corrupted, but sync progress is significantly degraded for the duration of the attack. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52735
GHSA-gf9r-m956-97qx
Jul 02, 2026
zebrad has consensus divergence via P2SH sigop undercount in pure-Rust disabled-opcode parser
Critical
Network
Low
None
None
Am I affectedYou are affected if:
All default configurations are affected. No feature flags, non-default settings, or special build options are required. SummaryZebra's P2SH sigop counter uses a pure-Rust code path that short-circuits on disabled opcodes (such as An attacker can exploit this without mining capability. Broadcasting transactions that spend P2SH outputs with malicious redeem scripts is sufficient; any Zebra miner who includes those transactions in a block triggers a chain split between Zebra and zcashd validators. DetailsThe P2SH sigop counter at The Rust parser in zcashd's A redeem script of PatchesPatched in Zebra 4.4.2. The fix routes the P2SH sigop counter through the same C++ FFI already used by the legacy sigop counter. WorkaroundsThere is no configuration-level workaround. All Zebra nodes validating blocks on a network shared with zcashd are affected. Upgrade as soon as the patched version is available. ImpactA chain split between Zebra and zcashd validators. The attacker broadcasts spending transactions referencing P2SH outputs whose redeem scripts contain a disabled opcode followed by The attacker does not need mining capability, RPC access, or any special privileges. The cost is the transaction fees for the funding and spending transactions. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52736
GHSA-4m69-67m6-prqp
Jul 02, 2026
Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache
High
Network
Low
None
None
DescriptionAm I affectedYou are affected if:
All default configurations are affected. SummaryZebra records a block hash in DetailsZIP-244 defines The attack flow over P2P:
A secondary variant exists where chain pruning (via PatchesPatched in Zebra 4.4.2. The fix removes stale entries from WorkaroundsThere is no complete configuration-level workaround. Reducing the node's inbound peer count ( ImpactA remote unauthenticated P2P peer can permanently stall a targeted Zebra node at a specific block height. The node diverges from the network tip; downstream consumers (lightwalletd, wallets, explorers, mining infrastructure) relying on the node see a stalled chain. The attack requires winning a propagation race: delivering the poisoned block body before honest peers deliver the canonical block. A well-positioned attacker (low-latency connection to the target, observation of new blocks from other peers) can reliably win this race. In sustained form, the attacker repeats for each new block, keeping the target permanently behind. Recovery requires restarting the node (which clears the in-memory sent-hash cache) or waiting for a reorg at the affected height (rare on the canonical chain). CreditReported independently by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-h72h-ppcx-998p
Jul 02, 2026
Zebra has pre-handshake buffer capacity reservation based on attacker-claimed body length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe P2P codec's However, Zebra's existing mitigations further constrain the practical attack surface: per-IP connection limits ( DetailsAt No legitimate Zcash handshake message ( PatchesThe fix defers large buffer reservations until after the handshake completes, or caps the per-message reservation for pre-handshake messages to what WorkaroundsNo workaround is needed. The existing per-IP rate limiting, handshake timeout, and connection limits effectively mitigate the practical impact. ImpactMinimal. The reservation affects virtual address space only, not physical memory. Zebra's existing connection-management mitigations (per-IP limits, accept rate, handshake timeout) further constrain the attack. The code path is worth cleaning up for defense-in-depth but does not produce a measurable denial-of-service effect. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52732
GHSA-4fc2-h7jh-287c
Jul 02, 2026
zebrad has mempool transaction admission denial via single-peer inbound queue saturation
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryA single unauthenticated P2P peer can monopolize all 25 inbound mempool download/verification slots ( DetailsThe mempool download/verification pipeline at
The attacker sends Two additional slot-holding techniques have been independently demonstrated: invalid-prevout transactions that park in Patcheszebrad 4.5.0 The fix adds per-peer queue accounting to the mempool download pipeline. A single peer is limited to a fraction of WorkaroundsThere is no complete configuration-level workaround. Reducing ImpactMempool transaction admission is denied for all honest peers and local RPC clients while the attack is sustained. Block validation and chain synchronization continue normally. The attacker needs only one TCP connection and minimal bandwidth (~1 KB/s of fake CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
GHSA-c8w6-x74f-vmg3
Jul 02, 2026
zebrad vulnerable to full node denial of service via crafted Sapling receiver in z_listunifiedreceivers
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe Details
At The same crate already handles this correctly in Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-443g-gwgp-49x4
Jul 02, 2026
zebrad vulnerable to getblocks/getheaders locator CPU amplification via uncapped vector length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe A single maximally-sized DetailsThe A legitimate block locator is logarithmic in chain length (approximately 30 hashes for the current ~3M-block Zcash chain). Zebra's own send-side cap is The practical impact requires significant attacker bandwidth (approximately 2 MiB per request) and multiple Sybil peers to meaningfully degrade the blocking pool, which limits real-world exploitability. PatchesPatched in Zebra 4.4.2. The fix caps WorkaroundsNo specific workaround is needed. Existing backpressure mechanisms (load shedding, sequential per-peer message processing, connection limits) constrain the practical impact. ImpactUnder sustained load from multiple Sybil peers, oversized locator vectors can occupy blocking-pool threads and degrade state-read performance. The effect is bounded by connection limits and requires significant attacker bandwidth. CreditVulnerability identified by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52731
GHSA-qv2r-v3mx-f4pf
Jul 02, 2026
zebrad has full node denial of service via non-ASCII LongPollId in getblocktemplate
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe DetailsThe Under the Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace byte-index string slicing with character-aware parsing or validate that the Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-44499
GHSA-h9hm-m2xj-4rq9
May 08, 2026
Zebra has Permanent Block Discovery Halt via Gossip Queue Saturation and Syncer Poisoning
High
Network
Low
None
None
SummaryA composite denial-of-service vulnerability in Zebra's block discovery pipeline allows an unauthenticated remote attacker to permanently halt all new block discovery on a targeted node. The attack exploits three independent weaknesses in the gossip, syncer, and download subsystems — all exercisable from a single TCP connection — to create a monotonically growing block deficit that never self-heals. SeverityCritical — This is a Denial of Service vulnerability that requires no authentication, no special privileges, and only a single peer connection. The halt is permanent: the node will never recover without operator intervention. Affected VersionsAll Zebra versions prior to 4.4.0. DescriptionZebra discovers new blocks through two complementary paths: a gossip path (peers announce blocks via The gossip path was vulnerable because there was no per-connection rate limit on The syncer backup path could be degraded by responding with empty Combining these two vectors, an attacker could suppress both block discovery paths simultaneously from a single connection, causing the node to fall permanently behind the chain tip. ImpactDenial of Service
Fixed VersionsThis issue is fixed in Zebra 4.4.0. The fix drops connections that send empty responses to MitigationUsers should upgrade to Zebra 4.4.0 or later immediately. There are no known workarounds for this issue. Immediate upgrade is the only way to protect against this attack. CreditsZebra the researcher who reported this issue through the coordinated disclosure process. Fixed in
4.4.0
References Updated May 08, 2026 · Source: OSV.dev
GHSA-pvmv-cwg8-v6c8
May 08, 2026
Zebra v4.4.0 still accepts V5 SIGHASH_SINGLE without a corresponding output
Critical
Network
Low
None
None
Consensus Divergence in V5 Transparent SIGHASH_SINGLE With No Corresponding OutputSummaryZebra failed to enforce a ZIP-244 consensus rule for V5 transparent transactions: when an input is signed with A previous fix ( SeverityCritical - 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 Affected VersionsZebra 4.4.0. DescriptionVerification of transparent transactions inherits the Bitcoin Script verification code in C++. Since it is consensus-critical, this code is called from Zebra through a foreign function interface (FFI), with a Rust callback that computes the sighash for each input being verified. ZIP-244 §S.2a marks two situations as consensus failure for V5 transparent signatures:
An attacker could exploit this by:
Zebra would verify the transaction's transparent script and accept the transaction (and any block containing it), while ImpactConsensus Failure
Fixed VersionsThis issue is fixed in Zebra 4.4.1. MitigationUsers should upgrade to Zebra 4.4.1 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. CreditsZebra thanks @sangsoo-osec, @zmanian, and @fivelittleducks for finding and reporting the issue. Fixed in
4.4.1
References Updated May 22, 2026 · Source: OSV.dev
GHSA-cwfq-rfcr-8hmp
May 07, 2026
Zebra's Transparent SIGHASH_SINGLE Handling Diverges from zcashd for Corresponding Outputs
Critical
Network
Low
None
None
|
1.9.0
unknown
Dependencies (78)
+ 70 more
Changelog
Compare changes
|
|
1.8.0
unknown
26 CVEs
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev
CVE-2026-52829
GHSA-63wg-wjjj-7cp8
Jul 02, 2026
Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryAn address normalization mismatch between the handshake path and the mempool misbehavior path causes a deterministic assertion panic when a peer connects via IPv4 to a dual-stack IPv6 listener and then triggers a mempool misbehavior penalty. The handshake path canonicalizes IPv4-mapped IPv6 addresses to plain IPv4 when storing the peer in the address book via DetailsOn Linux with The handshake path uses After the 30-second misbehavior batch flush, The attacker needs only to complete a P2P handshake over IPv4 to a dual-stack listener and advertise an invalid mempool transaction (such as a coinbase transaction). The assertion fires after the 30-second misbehavior batch flush. PatchesPatched in Zebra 4.5.0. The fix canonicalizes the address in the misbehavior update path via a new WorkaroundsConfiguring ImpactA remote unauthenticated peer can deterministically crash any synced Zebra node running the default Linux dual-stack configuration with a single invalid mempool transaction advertisement, followed by a 30-second wait. The attack requires no mining capability, no RPC access, no funds, and no special privileges. The crash can be repeated after each restart, causing persistent downtime. Linux dual-stack sockets and mempool activation are the default production state, not special preconditions. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52734
GHSA-65jj-fmw8-468q
Jul 02, 2026
zebrad has unbounded memory leak in mempool download pipeline via timeout path cancel_handles retention
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryThe mempool download pipeline's Details
The only cleanup paths for For direct PatchesThe fix preserves the WorkaroundsThere is no configuration-level workaround. Restarting the node clears the accumulated entries. Operators running in memory-constrained environments (containers with cgroup limits) may see the process killed by the OOM killer before natural recovery. ImpactGradual, unbounded memory exhaustion of a Zebra node from unauthenticated P2P traffic. The leak is monotonic (entries are never freed under normal operation) but slow (~685 KB/s per connection worst case). An attacker must sustain traffic for hours to exhaust typical server memory. The node continues operating normally until memory pressure becomes critical, at which point the OS OOM killer terminates the process or the node degrades due to swap pressure. No consensus impact, no fund loss, no on-disk corruption. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52733
GHSA-2gf8-q9rr-jq3h
Jul 02, 2026
zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip
6.5
/ 10
Medium
Network
High
None
None
Unchanged
None
High
Low
Am I affectedYou are affected if:
All default configurations are affected. The corruption persists across restarts because it is written to RocksDB. SummaryWhen DetailsThe non-finalized state provides two methods for removing blocks: When a chain fork occurs and The Patcheszebra-state 7.0.0 and zebrad 4.5.0. The fix adds subtree root cleanup to WorkaroundsThere 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 ImpactPersistent corruption of Sapling and Orchard subtree root history in the RocksDB state database. The corruption survives node restarts. Downstream consumers that rely on CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52739
GHSA-hhm7-qrv5-h4r6
Jul 02, 2026
Zebra: Repeated Non-Finalized Shielded Transaction Aborts Zebra Before Duplicate-Nullifier Rejection
5.9
/ 10
Medium
Network
High
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
All default configurations are affected. Summary
The block should be rejected with a duplicate-nullifier contextual validation error. Instead, the ordering of index updates within DetailsIn
The shielded nullifier uniqueness check at step 3 would correctly reject the duplicate transaction. But the The block transaction verifier does not run the best-chain nullifier query for block transactions — that check is gated on mempool transactions only ( There are two attack models: Model A (two attacker blocks): The attacker mines two consecutive valid-work blocks: parent B1 containing a shielded transaction T, and child B2 repeating T. This requires controlling both blocks consecutively. Model B (one attacker block after an honest block): The attacker broadcasts a shielded transaction T into the mempool. When any honest miner includes T in their block B1, the attacker only needs to mine the next child block B2 containing the same T. This requires controlling only one block immediately after an honest block that included the attacker's transaction. The attacker can broadcast a suitable shielded transaction every block until one is included by an honest miner, then attempt to mine the follow-up. Both models require the child block to repeat the shielded-only V5 transaction while the parent is still in non-finalized state. Patcheszebra-state 7.0.0 and zebrad 4.5.0. Replace the
WorkaroundsThere is no configuration-level workaround. The assert is in the non-finalized state push path, which is exercised by all block processing past the checkpoint height. ImpactA malicious block producer can crash targeted Zebra nodes. There are two attack models: In the first model, the attacker mines two consecutive valid-work blocks where the child repeats a shielded transaction from the parent. At 10% hashrate, the attacker has approximately 11.5 opportunities per day; at 5%, approximately 2.9 per day; at 1%, approximately one every 8.7 days. In the second model, the attacker broadcasts a shielded transaction into the mempool and waits for any honest miner to include it. The attacker then only needs to mine the next block containing the same transaction. This is cheaper because the attacker does not need to mine the parent block. At 10% hashrate, the attacker has approximately 14.4 single-block opportunities per day; at 5%, approximately 7.2 per day; at 1%, approximately 1.4 per day. The crash is a process abort (not recoverable within the process). The node must be restarted. Repeated attacks can keep a node down for extended periods. This is a liveness issue, not a consensus divergence: zcashd cleanly rejects the invalid child block while Zebra aborts. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52738
GHSA-w834-cf6p-9m9w
Jul 02, 2026
Zebra: Finalized address balance credit-first overflow on consensus-valid blocks
Medium
Network
Low
None
None
Am I affectedYou are affected if:
SummaryThe finalized transparent address balance writer processes all newly-created outputs (credits) before processing spent outputs (debits) within the same block. A consensus-valid block containing a long chain of same-address transparent self-spends can cause the intermediate per-address balance during the credit pass to exceed Because the triggering block is consensus-valid (zcashd accepts it), the panic recurs on restart when the node re-encounters the same block. This creates a persistent chain halt that can only be resolved by a software patch. DetailsThe finalized state writer at The code panics on the intermediate overflow via An attacker with approximately 1,100–2,100 ZEC and mining capability can construct a block that permanently halts all Zebra nodes. The attacker recovers their capital (the self-spends return funds to the same address), so the net cost is the mining effort only. PatchesPatched in Zebra 4.4.2. The fix processes credits and debits together per transaction rather than all credits then all debits, matching zcashd's approach. WorkaroundsNo workaround is available. Upgrade to Zebra 4.4.2. ImpactA single consensus-valid mined block can permanently halt all Zebra nodes on the network. The halt persists across restarts. Recovery requires deploying a patched version. Downstream consumers (light wallets, exchanges, mining infrastructure) lose service for the duration of the halt. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52737
GHSA-gvjc-3w7c-92jx
Jul 02, 2026
Zebra has sync restart poisoning from single unauthenticated peer via above-lookahead block
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryA malicious peer can answer Zebra's outbound On mainnet, each successful cycle imposes a 67-second sync restart delay. All in-flight downloads from honest peers are cancelled on each restart. DetailsThe bug is the interaction of three layers:
The attacker needs only an unauthenticated P2P connection (post-handshake), a tiny payload (one two-hash Additionally, several other pre-consensus sync-layer errors had zero misbehaviour scores even when peer-attributed. Contextual validation failures ( PatchesPatched in Zebra 4.4.2. The fix:
WorkaroundsNo configuration-level workaround is available. The attack is mitigated by having a diverse honest peer set, but cannot be prevented while the vulnerable code is running. ImpactA single unauthenticated peer can repeatedly stall a syncing Zebra node by forcing 67-second global sync restart cycles. All unrelated in-flight downloads are cancelled on each restart. The node does not crash and no state is corrupted, but sync progress is significantly degraded for the duration of the attack. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52735
GHSA-gf9r-m956-97qx
Jul 02, 2026
zebrad has consensus divergence via P2SH sigop undercount in pure-Rust disabled-opcode parser
Critical
Network
Low
None
None
Am I affectedYou are affected if:
All default configurations are affected. No feature flags, non-default settings, or special build options are required. SummaryZebra's P2SH sigop counter uses a pure-Rust code path that short-circuits on disabled opcodes (such as An attacker can exploit this without mining capability. Broadcasting transactions that spend P2SH outputs with malicious redeem scripts is sufficient; any Zebra miner who includes those transactions in a block triggers a chain split between Zebra and zcashd validators. DetailsThe P2SH sigop counter at The Rust parser in zcashd's A redeem script of PatchesPatched in Zebra 4.4.2. The fix routes the P2SH sigop counter through the same C++ FFI already used by the legacy sigop counter. WorkaroundsThere is no configuration-level workaround. All Zebra nodes validating blocks on a network shared with zcashd are affected. Upgrade as soon as the patched version is available. ImpactA chain split between Zebra and zcashd validators. The attacker broadcasts spending transactions referencing P2SH outputs whose redeem scripts contain a disabled opcode followed by The attacker does not need mining capability, RPC access, or any special privileges. The cost is the transaction fees for the funding and spending transactions. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52736
GHSA-4m69-67m6-prqp
Jul 02, 2026
Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache
High
Network
Low
None
None
DescriptionAm I affectedYou are affected if:
All default configurations are affected. SummaryZebra records a block hash in DetailsZIP-244 defines The attack flow over P2P:
A secondary variant exists where chain pruning (via PatchesPatched in Zebra 4.4.2. The fix removes stale entries from WorkaroundsThere is no complete configuration-level workaround. Reducing the node's inbound peer count ( ImpactA remote unauthenticated P2P peer can permanently stall a targeted Zebra node at a specific block height. The node diverges from the network tip; downstream consumers (lightwalletd, wallets, explorers, mining infrastructure) relying on the node see a stalled chain. The attack requires winning a propagation race: delivering the poisoned block body before honest peers deliver the canonical block. A well-positioned attacker (low-latency connection to the target, observation of new blocks from other peers) can reliably win this race. In sustained form, the attacker repeats for each new block, keeping the target permanently behind. Recovery requires restarting the node (which clears the in-memory sent-hash cache) or waiting for a reorg at the affected height (rare on the canonical chain). CreditReported independently by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-h72h-ppcx-998p
Jul 02, 2026
Zebra has pre-handshake buffer capacity reservation based on attacker-claimed body length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe P2P codec's However, Zebra's existing mitigations further constrain the practical attack surface: per-IP connection limits ( DetailsAt No legitimate Zcash handshake message ( PatchesThe fix defers large buffer reservations until after the handshake completes, or caps the per-message reservation for pre-handshake messages to what WorkaroundsNo workaround is needed. The existing per-IP rate limiting, handshake timeout, and connection limits effectively mitigate the practical impact. ImpactMinimal. The reservation affects virtual address space only, not physical memory. Zebra's existing connection-management mitigations (per-IP limits, accept rate, handshake timeout) further constrain the attack. The code path is worth cleaning up for defense-in-depth but does not produce a measurable denial-of-service effect. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52732
GHSA-4fc2-h7jh-287c
Jul 02, 2026
zebrad has mempool transaction admission denial via single-peer inbound queue saturation
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryA single unauthenticated P2P peer can monopolize all 25 inbound mempool download/verification slots ( DetailsThe mempool download/verification pipeline at
The attacker sends Two additional slot-holding techniques have been independently demonstrated: invalid-prevout transactions that park in Patcheszebrad 4.5.0 The fix adds per-peer queue accounting to the mempool download pipeline. A single peer is limited to a fraction of WorkaroundsThere is no complete configuration-level workaround. Reducing ImpactMempool transaction admission is denied for all honest peers and local RPC clients while the attack is sustained. Block validation and chain synchronization continue normally. The attacker needs only one TCP connection and minimal bandwidth (~1 KB/s of fake CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
GHSA-c8w6-x74f-vmg3
Jul 02, 2026
zebrad vulnerable to full node denial of service via crafted Sapling receiver in z_listunifiedreceivers
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe Details
At The same crate already handles this correctly in Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-443g-gwgp-49x4
Jul 02, 2026
zebrad vulnerable to getblocks/getheaders locator CPU amplification via uncapped vector length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe A single maximally-sized DetailsThe A legitimate block locator is logarithmic in chain length (approximately 30 hashes for the current ~3M-block Zcash chain). Zebra's own send-side cap is The practical impact requires significant attacker bandwidth (approximately 2 MiB per request) and multiple Sybil peers to meaningfully degrade the blocking pool, which limits real-world exploitability. PatchesPatched in Zebra 4.4.2. The fix caps WorkaroundsNo specific workaround is needed. Existing backpressure mechanisms (load shedding, sequential per-peer message processing, connection limits) constrain the practical impact. ImpactUnder sustained load from multiple Sybil peers, oversized locator vectors can occupy blocking-pool threads and degrade state-read performance. The effect is bounded by connection limits and requires significant attacker bandwidth. CreditVulnerability identified by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52731
GHSA-qv2r-v3mx-f4pf
Jul 02, 2026
zebrad has full node denial of service via non-ASCII LongPollId in getblocktemplate
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe DetailsThe Under the Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace byte-index string slicing with character-aware parsing or validate that the Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-44499
GHSA-h9hm-m2xj-4rq9
May 08, 2026
Zebra has Permanent Block Discovery Halt via Gossip Queue Saturation and Syncer Poisoning
High
Network
Low
None
None
SummaryA composite denial-of-service vulnerability in Zebra's block discovery pipeline allows an unauthenticated remote attacker to permanently halt all new block discovery on a targeted node. The attack exploits three independent weaknesses in the gossip, syncer, and download subsystems — all exercisable from a single TCP connection — to create a monotonically growing block deficit that never self-heals. SeverityCritical — This is a Denial of Service vulnerability that requires no authentication, no special privileges, and only a single peer connection. The halt is permanent: the node will never recover without operator intervention. Affected VersionsAll Zebra versions prior to 4.4.0. DescriptionZebra discovers new blocks through two complementary paths: a gossip path (peers announce blocks via The gossip path was vulnerable because there was no per-connection rate limit on The syncer backup path could be degraded by responding with empty Combining these two vectors, an attacker could suppress both block discovery paths simultaneously from a single connection, causing the node to fall permanently behind the chain tip. ImpactDenial of Service
Fixed VersionsThis issue is fixed in Zebra 4.4.0. The fix drops connections that send empty responses to MitigationUsers should upgrade to Zebra 4.4.0 or later immediately. There are no known workarounds for this issue. Immediate upgrade is the only way to protect against this attack. CreditsZebra the researcher who reported this issue through the coordinated disclosure process. Fixed in
4.4.0
References Updated May 08, 2026 · Source: OSV.dev
GHSA-pvmv-cwg8-v6c8
May 08, 2026
Zebra v4.4.0 still accepts V5 SIGHASH_SINGLE without a corresponding output
Critical
Network
Low
None
None
Consensus Divergence in V5 Transparent SIGHASH_SINGLE With No Corresponding OutputSummaryZebra failed to enforce a ZIP-244 consensus rule for V5 transparent transactions: when an input is signed with A previous fix ( SeverityCritical - 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 Affected VersionsZebra 4.4.0. DescriptionVerification of transparent transactions inherits the Bitcoin Script verification code in C++. Since it is consensus-critical, this code is called from Zebra through a foreign function interface (FFI), with a Rust callback that computes the sighash for each input being verified. ZIP-244 §S.2a marks two situations as consensus failure for V5 transparent signatures:
An attacker could exploit this by:
Zebra would verify the transaction's transparent script and accept the transaction (and any block containing it), while ImpactConsensus Failure
Fixed VersionsThis issue is fixed in Zebra 4.4.1. MitigationUsers should upgrade to Zebra 4.4.1 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. CreditsZebra thanks @sangsoo-osec, @zmanian, and @fivelittleducks for finding and reporting the issue. Fixed in
4.4.1
References Updated May 22, 2026 · Source: OSV.dev
GHSA-cwfq-rfcr-8hmp
May 07, 2026
Zebra's Transparent SIGHASH_SINGLE Handling Diverges from zcashd for Corresponding Outputs
Critical
Network
Low
None
None
|
1.8.0
unknown
Dependencies (78)
+ 70 more
Changelog
Compare changes
|
|
1.7.0
unknown
26 CVEs
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev
CVE-2026-52829
GHSA-63wg-wjjj-7cp8
Jul 02, 2026
Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryAn address normalization mismatch between the handshake path and the mempool misbehavior path causes a deterministic assertion panic when a peer connects via IPv4 to a dual-stack IPv6 listener and then triggers a mempool misbehavior penalty. The handshake path canonicalizes IPv4-mapped IPv6 addresses to plain IPv4 when storing the peer in the address book via DetailsOn Linux with The handshake path uses After the 30-second misbehavior batch flush, The attacker needs only to complete a P2P handshake over IPv4 to a dual-stack listener and advertise an invalid mempool transaction (such as a coinbase transaction). The assertion fires after the 30-second misbehavior batch flush. PatchesPatched in Zebra 4.5.0. The fix canonicalizes the address in the misbehavior update path via a new WorkaroundsConfiguring ImpactA remote unauthenticated peer can deterministically crash any synced Zebra node running the default Linux dual-stack configuration with a single invalid mempool transaction advertisement, followed by a 30-second wait. The attack requires no mining capability, no RPC access, no funds, and no special privileges. The crash can be repeated after each restart, causing persistent downtime. Linux dual-stack sockets and mempool activation are the default production state, not special preconditions. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52734
GHSA-65jj-fmw8-468q
Jul 02, 2026
zebrad has unbounded memory leak in mempool download pipeline via timeout path cancel_handles retention
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryThe mempool download pipeline's Details
The only cleanup paths for For direct PatchesThe fix preserves the WorkaroundsThere is no configuration-level workaround. Restarting the node clears the accumulated entries. Operators running in memory-constrained environments (containers with cgroup limits) may see the process killed by the OOM killer before natural recovery. ImpactGradual, unbounded memory exhaustion of a Zebra node from unauthenticated P2P traffic. The leak is monotonic (entries are never freed under normal operation) but slow (~685 KB/s per connection worst case). An attacker must sustain traffic for hours to exhaust typical server memory. The node continues operating normally until memory pressure becomes critical, at which point the OS OOM killer terminates the process or the node degrades due to swap pressure. No consensus impact, no fund loss, no on-disk corruption. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52733
GHSA-2gf8-q9rr-jq3h
Jul 02, 2026
zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip
6.5
/ 10
Medium
Network
High
None
None
Unchanged
None
High
Low
Am I affectedYou are affected if:
All default configurations are affected. The corruption persists across restarts because it is written to RocksDB. SummaryWhen DetailsThe non-finalized state provides two methods for removing blocks: When a chain fork occurs and The Patcheszebra-state 7.0.0 and zebrad 4.5.0. The fix adds subtree root cleanup to WorkaroundsThere 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 ImpactPersistent corruption of Sapling and Orchard subtree root history in the RocksDB state database. The corruption survives node restarts. Downstream consumers that rely on CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52739
GHSA-hhm7-qrv5-h4r6
Jul 02, 2026
Zebra: Repeated Non-Finalized Shielded Transaction Aborts Zebra Before Duplicate-Nullifier Rejection
5.9
/ 10
Medium
Network
High
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
All default configurations are affected. Summary
The block should be rejected with a duplicate-nullifier contextual validation error. Instead, the ordering of index updates within DetailsIn
The shielded nullifier uniqueness check at step 3 would correctly reject the duplicate transaction. But the The block transaction verifier does not run the best-chain nullifier query for block transactions — that check is gated on mempool transactions only ( There are two attack models: Model A (two attacker blocks): The attacker mines two consecutive valid-work blocks: parent B1 containing a shielded transaction T, and child B2 repeating T. This requires controlling both blocks consecutively. Model B (one attacker block after an honest block): The attacker broadcasts a shielded transaction T into the mempool. When any honest miner includes T in their block B1, the attacker only needs to mine the next child block B2 containing the same T. This requires controlling only one block immediately after an honest block that included the attacker's transaction. The attacker can broadcast a suitable shielded transaction every block until one is included by an honest miner, then attempt to mine the follow-up. Both models require the child block to repeat the shielded-only V5 transaction while the parent is still in non-finalized state. Patcheszebra-state 7.0.0 and zebrad 4.5.0. Replace the
WorkaroundsThere is no configuration-level workaround. The assert is in the non-finalized state push path, which is exercised by all block processing past the checkpoint height. ImpactA malicious block producer can crash targeted Zebra nodes. There are two attack models: In the first model, the attacker mines two consecutive valid-work blocks where the child repeats a shielded transaction from the parent. At 10% hashrate, the attacker has approximately 11.5 opportunities per day; at 5%, approximately 2.9 per day; at 1%, approximately one every 8.7 days. In the second model, the attacker broadcasts a shielded transaction into the mempool and waits for any honest miner to include it. The attacker then only needs to mine the next block containing the same transaction. This is cheaper because the attacker does not need to mine the parent block. At 10% hashrate, the attacker has approximately 14.4 single-block opportunities per day; at 5%, approximately 7.2 per day; at 1%, approximately 1.4 per day. The crash is a process abort (not recoverable within the process). The node must be restarted. Repeated attacks can keep a node down for extended periods. This is a liveness issue, not a consensus divergence: zcashd cleanly rejects the invalid child block while Zebra aborts. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52738
GHSA-w834-cf6p-9m9w
Jul 02, 2026
Zebra: Finalized address balance credit-first overflow on consensus-valid blocks
Medium
Network
Low
None
None
Am I affectedYou are affected if:
SummaryThe finalized transparent address balance writer processes all newly-created outputs (credits) before processing spent outputs (debits) within the same block. A consensus-valid block containing a long chain of same-address transparent self-spends can cause the intermediate per-address balance during the credit pass to exceed Because the triggering block is consensus-valid (zcashd accepts it), the panic recurs on restart when the node re-encounters the same block. This creates a persistent chain halt that can only be resolved by a software patch. DetailsThe finalized state writer at The code panics on the intermediate overflow via An attacker with approximately 1,100–2,100 ZEC and mining capability can construct a block that permanently halts all Zebra nodes. The attacker recovers their capital (the self-spends return funds to the same address), so the net cost is the mining effort only. PatchesPatched in Zebra 4.4.2. The fix processes credits and debits together per transaction rather than all credits then all debits, matching zcashd's approach. WorkaroundsNo workaround is available. Upgrade to Zebra 4.4.2. ImpactA single consensus-valid mined block can permanently halt all Zebra nodes on the network. The halt persists across restarts. Recovery requires deploying a patched version. Downstream consumers (light wallets, exchanges, mining infrastructure) lose service for the duration of the halt. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52737
GHSA-gvjc-3w7c-92jx
Jul 02, 2026
Zebra has sync restart poisoning from single unauthenticated peer via above-lookahead block
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryA malicious peer can answer Zebra's outbound On mainnet, each successful cycle imposes a 67-second sync restart delay. All in-flight downloads from honest peers are cancelled on each restart. DetailsThe bug is the interaction of three layers:
The attacker needs only an unauthenticated P2P connection (post-handshake), a tiny payload (one two-hash Additionally, several other pre-consensus sync-layer errors had zero misbehaviour scores even when peer-attributed. Contextual validation failures ( PatchesPatched in Zebra 4.4.2. The fix:
WorkaroundsNo configuration-level workaround is available. The attack is mitigated by having a diverse honest peer set, but cannot be prevented while the vulnerable code is running. ImpactA single unauthenticated peer can repeatedly stall a syncing Zebra node by forcing 67-second global sync restart cycles. All unrelated in-flight downloads are cancelled on each restart. The node does not crash and no state is corrupted, but sync progress is significantly degraded for the duration of the attack. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52735
GHSA-gf9r-m956-97qx
Jul 02, 2026
zebrad has consensus divergence via P2SH sigop undercount in pure-Rust disabled-opcode parser
Critical
Network
Low
None
None
Am I affectedYou are affected if:
All default configurations are affected. No feature flags, non-default settings, or special build options are required. SummaryZebra's P2SH sigop counter uses a pure-Rust code path that short-circuits on disabled opcodes (such as An attacker can exploit this without mining capability. Broadcasting transactions that spend P2SH outputs with malicious redeem scripts is sufficient; any Zebra miner who includes those transactions in a block triggers a chain split between Zebra and zcashd validators. DetailsThe P2SH sigop counter at The Rust parser in zcashd's A redeem script of PatchesPatched in Zebra 4.4.2. The fix routes the P2SH sigop counter through the same C++ FFI already used by the legacy sigop counter. WorkaroundsThere is no configuration-level workaround. All Zebra nodes validating blocks on a network shared with zcashd are affected. Upgrade as soon as the patched version is available. ImpactA chain split between Zebra and zcashd validators. The attacker broadcasts spending transactions referencing P2SH outputs whose redeem scripts contain a disabled opcode followed by The attacker does not need mining capability, RPC access, or any special privileges. The cost is the transaction fees for the funding and spending transactions. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52736
GHSA-4m69-67m6-prqp
Jul 02, 2026
Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache
High
Network
Low
None
None
DescriptionAm I affectedYou are affected if:
All default configurations are affected. SummaryZebra records a block hash in DetailsZIP-244 defines The attack flow over P2P:
A secondary variant exists where chain pruning (via PatchesPatched in Zebra 4.4.2. The fix removes stale entries from WorkaroundsThere is no complete configuration-level workaround. Reducing the node's inbound peer count ( ImpactA remote unauthenticated P2P peer can permanently stall a targeted Zebra node at a specific block height. The node diverges from the network tip; downstream consumers (lightwalletd, wallets, explorers, mining infrastructure) relying on the node see a stalled chain. The attack requires winning a propagation race: delivering the poisoned block body before honest peers deliver the canonical block. A well-positioned attacker (low-latency connection to the target, observation of new blocks from other peers) can reliably win this race. In sustained form, the attacker repeats for each new block, keeping the target permanently behind. Recovery requires restarting the node (which clears the in-memory sent-hash cache) or waiting for a reorg at the affected height (rare on the canonical chain). CreditReported independently by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-h72h-ppcx-998p
Jul 02, 2026
Zebra has pre-handshake buffer capacity reservation based on attacker-claimed body length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe P2P codec's However, Zebra's existing mitigations further constrain the practical attack surface: per-IP connection limits ( DetailsAt No legitimate Zcash handshake message ( PatchesThe fix defers large buffer reservations until after the handshake completes, or caps the per-message reservation for pre-handshake messages to what WorkaroundsNo workaround is needed. The existing per-IP rate limiting, handshake timeout, and connection limits effectively mitigate the practical impact. ImpactMinimal. The reservation affects virtual address space only, not physical memory. Zebra's existing connection-management mitigations (per-IP limits, accept rate, handshake timeout) further constrain the attack. The code path is worth cleaning up for defense-in-depth but does not produce a measurable denial-of-service effect. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52732
GHSA-4fc2-h7jh-287c
Jul 02, 2026
zebrad has mempool transaction admission denial via single-peer inbound queue saturation
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryA single unauthenticated P2P peer can monopolize all 25 inbound mempool download/verification slots ( DetailsThe mempool download/verification pipeline at
The attacker sends Two additional slot-holding techniques have been independently demonstrated: invalid-prevout transactions that park in Patcheszebrad 4.5.0 The fix adds per-peer queue accounting to the mempool download pipeline. A single peer is limited to a fraction of WorkaroundsThere is no complete configuration-level workaround. Reducing ImpactMempool transaction admission is denied for all honest peers and local RPC clients while the attack is sustained. Block validation and chain synchronization continue normally. The attacker needs only one TCP connection and minimal bandwidth (~1 KB/s of fake CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
GHSA-c8w6-x74f-vmg3
Jul 02, 2026
zebrad vulnerable to full node denial of service via crafted Sapling receiver in z_listunifiedreceivers
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe Details
At The same crate already handles this correctly in Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-443g-gwgp-49x4
Jul 02, 2026
zebrad vulnerable to getblocks/getheaders locator CPU amplification via uncapped vector length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe A single maximally-sized DetailsThe A legitimate block locator is logarithmic in chain length (approximately 30 hashes for the current ~3M-block Zcash chain). Zebra's own send-side cap is The practical impact requires significant attacker bandwidth (approximately 2 MiB per request) and multiple Sybil peers to meaningfully degrade the blocking pool, which limits real-world exploitability. PatchesPatched in Zebra 4.4.2. The fix caps WorkaroundsNo specific workaround is needed. Existing backpressure mechanisms (load shedding, sequential per-peer message processing, connection limits) constrain the practical impact. ImpactUnder sustained load from multiple Sybil peers, oversized locator vectors can occupy blocking-pool threads and degrade state-read performance. The effect is bounded by connection limits and requires significant attacker bandwidth. CreditVulnerability identified by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52731
GHSA-qv2r-v3mx-f4pf
Jul 02, 2026
zebrad has full node denial of service via non-ASCII LongPollId in getblocktemplate
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe DetailsThe Under the Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace byte-index string slicing with character-aware parsing or validate that the Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-44499
GHSA-h9hm-m2xj-4rq9
May 08, 2026
Zebra has Permanent Block Discovery Halt via Gossip Queue Saturation and Syncer Poisoning
High
Network
Low
None
None
SummaryA composite denial-of-service vulnerability in Zebra's block discovery pipeline allows an unauthenticated remote attacker to permanently halt all new block discovery on a targeted node. The attack exploits three independent weaknesses in the gossip, syncer, and download subsystems — all exercisable from a single TCP connection — to create a monotonically growing block deficit that never self-heals. SeverityCritical — This is a Denial of Service vulnerability that requires no authentication, no special privileges, and only a single peer connection. The halt is permanent: the node will never recover without operator intervention. Affected VersionsAll Zebra versions prior to 4.4.0. DescriptionZebra discovers new blocks through two complementary paths: a gossip path (peers announce blocks via The gossip path was vulnerable because there was no per-connection rate limit on The syncer backup path could be degraded by responding with empty Combining these two vectors, an attacker could suppress both block discovery paths simultaneously from a single connection, causing the node to fall permanently behind the chain tip. ImpactDenial of Service
Fixed VersionsThis issue is fixed in Zebra 4.4.0. The fix drops connections that send empty responses to MitigationUsers should upgrade to Zebra 4.4.0 or later immediately. There are no known workarounds for this issue. Immediate upgrade is the only way to protect against this attack. CreditsZebra the researcher who reported this issue through the coordinated disclosure process. Fixed in
4.4.0
References Updated May 08, 2026 · Source: OSV.dev
GHSA-pvmv-cwg8-v6c8
May 08, 2026
Zebra v4.4.0 still accepts V5 SIGHASH_SINGLE without a corresponding output
Critical
Network
Low
None
None
Consensus Divergence in V5 Transparent SIGHASH_SINGLE With No Corresponding OutputSummaryZebra failed to enforce a ZIP-244 consensus rule for V5 transparent transactions: when an input is signed with A previous fix ( SeverityCritical - 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 Affected VersionsZebra 4.4.0. DescriptionVerification of transparent transactions inherits the Bitcoin Script verification code in C++. Since it is consensus-critical, this code is called from Zebra through a foreign function interface (FFI), with a Rust callback that computes the sighash for each input being verified. ZIP-244 §S.2a marks two situations as consensus failure for V5 transparent signatures:
An attacker could exploit this by:
Zebra would verify the transaction's transparent script and accept the transaction (and any block containing it), while ImpactConsensus Failure
Fixed VersionsThis issue is fixed in Zebra 4.4.1. MitigationUsers should upgrade to Zebra 4.4.1 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. CreditsZebra thanks @sangsoo-osec, @zmanian, and @fivelittleducks for finding and reporting the issue. Fixed in
4.4.1
References Updated May 22, 2026 · Source: OSV.dev
GHSA-cwfq-rfcr-8hmp
May 07, 2026
Zebra's Transparent SIGHASH_SINGLE Handling Diverges from zcashd for Corresponding Outputs
Critical
Network
Low
None
None
|
1.7.0
unknown
Dependencies (78)
+ 70 more
Changelog
Compare changes
|
|
1.6.1
unknown
26 CVEs
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev
CVE-2026-52829
GHSA-63wg-wjjj-7cp8
Jul 02, 2026
Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryAn address normalization mismatch between the handshake path and the mempool misbehavior path causes a deterministic assertion panic when a peer connects via IPv4 to a dual-stack IPv6 listener and then triggers a mempool misbehavior penalty. The handshake path canonicalizes IPv4-mapped IPv6 addresses to plain IPv4 when storing the peer in the address book via DetailsOn Linux with The handshake path uses After the 30-second misbehavior batch flush, The attacker needs only to complete a P2P handshake over IPv4 to a dual-stack listener and advertise an invalid mempool transaction (such as a coinbase transaction). The assertion fires after the 30-second misbehavior batch flush. PatchesPatched in Zebra 4.5.0. The fix canonicalizes the address in the misbehavior update path via a new WorkaroundsConfiguring ImpactA remote unauthenticated peer can deterministically crash any synced Zebra node running the default Linux dual-stack configuration with a single invalid mempool transaction advertisement, followed by a 30-second wait. The attack requires no mining capability, no RPC access, no funds, and no special privileges. The crash can be repeated after each restart, causing persistent downtime. Linux dual-stack sockets and mempool activation are the default production state, not special preconditions. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52734
GHSA-65jj-fmw8-468q
Jul 02, 2026
zebrad has unbounded memory leak in mempool download pipeline via timeout path cancel_handles retention
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryThe mempool download pipeline's Details
The only cleanup paths for For direct PatchesThe fix preserves the WorkaroundsThere is no configuration-level workaround. Restarting the node clears the accumulated entries. Operators running in memory-constrained environments (containers with cgroup limits) may see the process killed by the OOM killer before natural recovery. ImpactGradual, unbounded memory exhaustion of a Zebra node from unauthenticated P2P traffic. The leak is monotonic (entries are never freed under normal operation) but slow (~685 KB/s per connection worst case). An attacker must sustain traffic for hours to exhaust typical server memory. The node continues operating normally until memory pressure becomes critical, at which point the OS OOM killer terminates the process or the node degrades due to swap pressure. No consensus impact, no fund loss, no on-disk corruption. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52733
GHSA-2gf8-q9rr-jq3h
Jul 02, 2026
zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip
6.5
/ 10
Medium
Network
High
None
None
Unchanged
None
High
Low
Am I affectedYou are affected if:
All default configurations are affected. The corruption persists across restarts because it is written to RocksDB. SummaryWhen DetailsThe non-finalized state provides two methods for removing blocks: When a chain fork occurs and The Patcheszebra-state 7.0.0 and zebrad 4.5.0. The fix adds subtree root cleanup to WorkaroundsThere 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 ImpactPersistent corruption of Sapling and Orchard subtree root history in the RocksDB state database. The corruption survives node restarts. Downstream consumers that rely on CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52739
GHSA-hhm7-qrv5-h4r6
Jul 02, 2026
Zebra: Repeated Non-Finalized Shielded Transaction Aborts Zebra Before Duplicate-Nullifier Rejection
5.9
/ 10
Medium
Network
High
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
All default configurations are affected. Summary
The block should be rejected with a duplicate-nullifier contextual validation error. Instead, the ordering of index updates within DetailsIn
The shielded nullifier uniqueness check at step 3 would correctly reject the duplicate transaction. But the The block transaction verifier does not run the best-chain nullifier query for block transactions — that check is gated on mempool transactions only ( There are two attack models: Model A (two attacker blocks): The attacker mines two consecutive valid-work blocks: parent B1 containing a shielded transaction T, and child B2 repeating T. This requires controlling both blocks consecutively. Model B (one attacker block after an honest block): The attacker broadcasts a shielded transaction T into the mempool. When any honest miner includes T in their block B1, the attacker only needs to mine the next child block B2 containing the same T. This requires controlling only one block immediately after an honest block that included the attacker's transaction. The attacker can broadcast a suitable shielded transaction every block until one is included by an honest miner, then attempt to mine the follow-up. Both models require the child block to repeat the shielded-only V5 transaction while the parent is still in non-finalized state. Patcheszebra-state 7.0.0 and zebrad 4.5.0. Replace the
WorkaroundsThere is no configuration-level workaround. The assert is in the non-finalized state push path, which is exercised by all block processing past the checkpoint height. ImpactA malicious block producer can crash targeted Zebra nodes. There are two attack models: In the first model, the attacker mines two consecutive valid-work blocks where the child repeats a shielded transaction from the parent. At 10% hashrate, the attacker has approximately 11.5 opportunities per day; at 5%, approximately 2.9 per day; at 1%, approximately one every 8.7 days. In the second model, the attacker broadcasts a shielded transaction into the mempool and waits for any honest miner to include it. The attacker then only needs to mine the next block containing the same transaction. This is cheaper because the attacker does not need to mine the parent block. At 10% hashrate, the attacker has approximately 14.4 single-block opportunities per day; at 5%, approximately 7.2 per day; at 1%, approximately 1.4 per day. The crash is a process abort (not recoverable within the process). The node must be restarted. Repeated attacks can keep a node down for extended periods. This is a liveness issue, not a consensus divergence: zcashd cleanly rejects the invalid child block while Zebra aborts. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52738
GHSA-w834-cf6p-9m9w
Jul 02, 2026
Zebra: Finalized address balance credit-first overflow on consensus-valid blocks
Medium
Network
Low
None
None
Am I affectedYou are affected if:
SummaryThe finalized transparent address balance writer processes all newly-created outputs (credits) before processing spent outputs (debits) within the same block. A consensus-valid block containing a long chain of same-address transparent self-spends can cause the intermediate per-address balance during the credit pass to exceed Because the triggering block is consensus-valid (zcashd accepts it), the panic recurs on restart when the node re-encounters the same block. This creates a persistent chain halt that can only be resolved by a software patch. DetailsThe finalized state writer at The code panics on the intermediate overflow via An attacker with approximately 1,100–2,100 ZEC and mining capability can construct a block that permanently halts all Zebra nodes. The attacker recovers their capital (the self-spends return funds to the same address), so the net cost is the mining effort only. PatchesPatched in Zebra 4.4.2. The fix processes credits and debits together per transaction rather than all credits then all debits, matching zcashd's approach. WorkaroundsNo workaround is available. Upgrade to Zebra 4.4.2. ImpactA single consensus-valid mined block can permanently halt all Zebra nodes on the network. The halt persists across restarts. Recovery requires deploying a patched version. Downstream consumers (light wallets, exchanges, mining infrastructure) lose service for the duration of the halt. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52737
GHSA-gvjc-3w7c-92jx
Jul 02, 2026
Zebra has sync restart poisoning from single unauthenticated peer via above-lookahead block
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryA malicious peer can answer Zebra's outbound On mainnet, each successful cycle imposes a 67-second sync restart delay. All in-flight downloads from honest peers are cancelled on each restart. DetailsThe bug is the interaction of three layers:
The attacker needs only an unauthenticated P2P connection (post-handshake), a tiny payload (one two-hash Additionally, several other pre-consensus sync-layer errors had zero misbehaviour scores even when peer-attributed. Contextual validation failures ( PatchesPatched in Zebra 4.4.2. The fix:
WorkaroundsNo configuration-level workaround is available. The attack is mitigated by having a diverse honest peer set, but cannot be prevented while the vulnerable code is running. ImpactA single unauthenticated peer can repeatedly stall a syncing Zebra node by forcing 67-second global sync restart cycles. All unrelated in-flight downloads are cancelled on each restart. The node does not crash and no state is corrupted, but sync progress is significantly degraded for the duration of the attack. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52735
GHSA-gf9r-m956-97qx
Jul 02, 2026
zebrad has consensus divergence via P2SH sigop undercount in pure-Rust disabled-opcode parser
Critical
Network
Low
None
None
Am I affectedYou are affected if:
All default configurations are affected. No feature flags, non-default settings, or special build options are required. SummaryZebra's P2SH sigop counter uses a pure-Rust code path that short-circuits on disabled opcodes (such as An attacker can exploit this without mining capability. Broadcasting transactions that spend P2SH outputs with malicious redeem scripts is sufficient; any Zebra miner who includes those transactions in a block triggers a chain split between Zebra and zcashd validators. DetailsThe P2SH sigop counter at The Rust parser in zcashd's A redeem script of PatchesPatched in Zebra 4.4.2. The fix routes the P2SH sigop counter through the same C++ FFI already used by the legacy sigop counter. WorkaroundsThere is no configuration-level workaround. All Zebra nodes validating blocks on a network shared with zcashd are affected. Upgrade as soon as the patched version is available. ImpactA chain split between Zebra and zcashd validators. The attacker broadcasts spending transactions referencing P2SH outputs whose redeem scripts contain a disabled opcode followed by The attacker does not need mining capability, RPC access, or any special privileges. The cost is the transaction fees for the funding and spending transactions. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52736
GHSA-4m69-67m6-prqp
Jul 02, 2026
Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache
High
Network
Low
None
None
DescriptionAm I affectedYou are affected if:
All default configurations are affected. SummaryZebra records a block hash in DetailsZIP-244 defines The attack flow over P2P:
A secondary variant exists where chain pruning (via PatchesPatched in Zebra 4.4.2. The fix removes stale entries from WorkaroundsThere is no complete configuration-level workaround. Reducing the node's inbound peer count ( ImpactA remote unauthenticated P2P peer can permanently stall a targeted Zebra node at a specific block height. The node diverges from the network tip; downstream consumers (lightwalletd, wallets, explorers, mining infrastructure) relying on the node see a stalled chain. The attack requires winning a propagation race: delivering the poisoned block body before honest peers deliver the canonical block. A well-positioned attacker (low-latency connection to the target, observation of new blocks from other peers) can reliably win this race. In sustained form, the attacker repeats for each new block, keeping the target permanently behind. Recovery requires restarting the node (which clears the in-memory sent-hash cache) or waiting for a reorg at the affected height (rare on the canonical chain). CreditReported independently by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-h72h-ppcx-998p
Jul 02, 2026
Zebra has pre-handshake buffer capacity reservation based on attacker-claimed body length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe P2P codec's However, Zebra's existing mitigations further constrain the practical attack surface: per-IP connection limits ( DetailsAt No legitimate Zcash handshake message ( PatchesThe fix defers large buffer reservations until after the handshake completes, or caps the per-message reservation for pre-handshake messages to what WorkaroundsNo workaround is needed. The existing per-IP rate limiting, handshake timeout, and connection limits effectively mitigate the practical impact. ImpactMinimal. The reservation affects virtual address space only, not physical memory. Zebra's existing connection-management mitigations (per-IP limits, accept rate, handshake timeout) further constrain the attack. The code path is worth cleaning up for defense-in-depth but does not produce a measurable denial-of-service effect. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52732
GHSA-4fc2-h7jh-287c
Jul 02, 2026
zebrad has mempool transaction admission denial via single-peer inbound queue saturation
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryA single unauthenticated P2P peer can monopolize all 25 inbound mempool download/verification slots ( DetailsThe mempool download/verification pipeline at
The attacker sends Two additional slot-holding techniques have been independently demonstrated: invalid-prevout transactions that park in Patcheszebrad 4.5.0 The fix adds per-peer queue accounting to the mempool download pipeline. A single peer is limited to a fraction of WorkaroundsThere is no complete configuration-level workaround. Reducing ImpactMempool transaction admission is denied for all honest peers and local RPC clients while the attack is sustained. Block validation and chain synchronization continue normally. The attacker needs only one TCP connection and minimal bandwidth (~1 KB/s of fake CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
GHSA-c8w6-x74f-vmg3
Jul 02, 2026
zebrad vulnerable to full node denial of service via crafted Sapling receiver in z_listunifiedreceivers
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe Details
At The same crate already handles this correctly in Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-443g-gwgp-49x4
Jul 02, 2026
zebrad vulnerable to getblocks/getheaders locator CPU amplification via uncapped vector length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe A single maximally-sized DetailsThe A legitimate block locator is logarithmic in chain length (approximately 30 hashes for the current ~3M-block Zcash chain). Zebra's own send-side cap is The practical impact requires significant attacker bandwidth (approximately 2 MiB per request) and multiple Sybil peers to meaningfully degrade the blocking pool, which limits real-world exploitability. PatchesPatched in Zebra 4.4.2. The fix caps WorkaroundsNo specific workaround is needed. Existing backpressure mechanisms (load shedding, sequential per-peer message processing, connection limits) constrain the practical impact. ImpactUnder sustained load from multiple Sybil peers, oversized locator vectors can occupy blocking-pool threads and degrade state-read performance. The effect is bounded by connection limits and requires significant attacker bandwidth. CreditVulnerability identified by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52731
GHSA-qv2r-v3mx-f4pf
Jul 02, 2026
zebrad has full node denial of service via non-ASCII LongPollId in getblocktemplate
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe DetailsThe Under the Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace byte-index string slicing with character-aware parsing or validate that the Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-44499
GHSA-h9hm-m2xj-4rq9
May 08, 2026
Zebra has Permanent Block Discovery Halt via Gossip Queue Saturation and Syncer Poisoning
High
Network
Low
None
None
SummaryA composite denial-of-service vulnerability in Zebra's block discovery pipeline allows an unauthenticated remote attacker to permanently halt all new block discovery on a targeted node. The attack exploits three independent weaknesses in the gossip, syncer, and download subsystems — all exercisable from a single TCP connection — to create a monotonically growing block deficit that never self-heals. SeverityCritical — This is a Denial of Service vulnerability that requires no authentication, no special privileges, and only a single peer connection. The halt is permanent: the node will never recover without operator intervention. Affected VersionsAll Zebra versions prior to 4.4.0. DescriptionZebra discovers new blocks through two complementary paths: a gossip path (peers announce blocks via The gossip path was vulnerable because there was no per-connection rate limit on The syncer backup path could be degraded by responding with empty Combining these two vectors, an attacker could suppress both block discovery paths simultaneously from a single connection, causing the node to fall permanently behind the chain tip. ImpactDenial of Service
Fixed VersionsThis issue is fixed in Zebra 4.4.0. The fix drops connections that send empty responses to MitigationUsers should upgrade to Zebra 4.4.0 or later immediately. There are no known workarounds for this issue. Immediate upgrade is the only way to protect against this attack. CreditsZebra the researcher who reported this issue through the coordinated disclosure process. Fixed in
4.4.0
References Updated May 08, 2026 · Source: OSV.dev
GHSA-pvmv-cwg8-v6c8
May 08, 2026
Zebra v4.4.0 still accepts V5 SIGHASH_SINGLE without a corresponding output
Critical
Network
Low
None
None
Consensus Divergence in V5 Transparent SIGHASH_SINGLE With No Corresponding OutputSummaryZebra failed to enforce a ZIP-244 consensus rule for V5 transparent transactions: when an input is signed with A previous fix ( SeverityCritical - 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 Affected VersionsZebra 4.4.0. DescriptionVerification of transparent transactions inherits the Bitcoin Script verification code in C++. Since it is consensus-critical, this code is called from Zebra through a foreign function interface (FFI), with a Rust callback that computes the sighash for each input being verified. ZIP-244 §S.2a marks two situations as consensus failure for V5 transparent signatures:
An attacker could exploit this by:
Zebra would verify the transaction's transparent script and accept the transaction (and any block containing it), while ImpactConsensus Failure
Fixed VersionsThis issue is fixed in Zebra 4.4.1. MitigationUsers should upgrade to Zebra 4.4.1 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. CreditsZebra thanks @sangsoo-osec, @zmanian, and @fivelittleducks for finding and reporting the issue. Fixed in
4.4.1
References Updated May 22, 2026 · Source: OSV.dev
GHSA-cwfq-rfcr-8hmp
May 07, 2026
Zebra's Transparent SIGHASH_SINGLE Handling Diverges from zcashd for Corresponding Outputs
Critical
Network
Low
None
None
|
1.6.1
unknown
Dependencies (78)
+ 70 more
Changelog
Compare changes
|
|
1.6.0
unknown
26 CVEs
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev
CVE-2026-52829
GHSA-63wg-wjjj-7cp8
Jul 02, 2026
Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryAn address normalization mismatch between the handshake path and the mempool misbehavior path causes a deterministic assertion panic when a peer connects via IPv4 to a dual-stack IPv6 listener and then triggers a mempool misbehavior penalty. The handshake path canonicalizes IPv4-mapped IPv6 addresses to plain IPv4 when storing the peer in the address book via DetailsOn Linux with The handshake path uses After the 30-second misbehavior batch flush, The attacker needs only to complete a P2P handshake over IPv4 to a dual-stack listener and advertise an invalid mempool transaction (such as a coinbase transaction). The assertion fires after the 30-second misbehavior batch flush. PatchesPatched in Zebra 4.5.0. The fix canonicalizes the address in the misbehavior update path via a new WorkaroundsConfiguring ImpactA remote unauthenticated peer can deterministically crash any synced Zebra node running the default Linux dual-stack configuration with a single invalid mempool transaction advertisement, followed by a 30-second wait. The attack requires no mining capability, no RPC access, no funds, and no special privileges. The crash can be repeated after each restart, causing persistent downtime. Linux dual-stack sockets and mempool activation are the default production state, not special preconditions. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52734
GHSA-65jj-fmw8-468q
Jul 02, 2026
zebrad has unbounded memory leak in mempool download pipeline via timeout path cancel_handles retention
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryThe mempool download pipeline's Details
The only cleanup paths for For direct PatchesThe fix preserves the WorkaroundsThere is no configuration-level workaround. Restarting the node clears the accumulated entries. Operators running in memory-constrained environments (containers with cgroup limits) may see the process killed by the OOM killer before natural recovery. ImpactGradual, unbounded memory exhaustion of a Zebra node from unauthenticated P2P traffic. The leak is monotonic (entries are never freed under normal operation) but slow (~685 KB/s per connection worst case). An attacker must sustain traffic for hours to exhaust typical server memory. The node continues operating normally until memory pressure becomes critical, at which point the OS OOM killer terminates the process or the node degrades due to swap pressure. No consensus impact, no fund loss, no on-disk corruption. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52733
GHSA-2gf8-q9rr-jq3h
Jul 02, 2026
zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip
6.5
/ 10
Medium
Network
High
None
None
Unchanged
None
High
Low
Am I affectedYou are affected if:
All default configurations are affected. The corruption persists across restarts because it is written to RocksDB. SummaryWhen DetailsThe non-finalized state provides two methods for removing blocks: When a chain fork occurs and The Patcheszebra-state 7.0.0 and zebrad 4.5.0. The fix adds subtree root cleanup to WorkaroundsThere 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 ImpactPersistent corruption of Sapling and Orchard subtree root history in the RocksDB state database. The corruption survives node restarts. Downstream consumers that rely on CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52739
GHSA-hhm7-qrv5-h4r6
Jul 02, 2026
Zebra: Repeated Non-Finalized Shielded Transaction Aborts Zebra Before Duplicate-Nullifier Rejection
5.9
/ 10
Medium
Network
High
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
All default configurations are affected. Summary
The block should be rejected with a duplicate-nullifier contextual validation error. Instead, the ordering of index updates within DetailsIn
The shielded nullifier uniqueness check at step 3 would correctly reject the duplicate transaction. But the The block transaction verifier does not run the best-chain nullifier query for block transactions — that check is gated on mempool transactions only ( There are two attack models: Model A (two attacker blocks): The attacker mines two consecutive valid-work blocks: parent B1 containing a shielded transaction T, and child B2 repeating T. This requires controlling both blocks consecutively. Model B (one attacker block after an honest block): The attacker broadcasts a shielded transaction T into the mempool. When any honest miner includes T in their block B1, the attacker only needs to mine the next child block B2 containing the same T. This requires controlling only one block immediately after an honest block that included the attacker's transaction. The attacker can broadcast a suitable shielded transaction every block until one is included by an honest miner, then attempt to mine the follow-up. Both models require the child block to repeat the shielded-only V5 transaction while the parent is still in non-finalized state. Patcheszebra-state 7.0.0 and zebrad 4.5.0. Replace the
WorkaroundsThere is no configuration-level workaround. The assert is in the non-finalized state push path, which is exercised by all block processing past the checkpoint height. ImpactA malicious block producer can crash targeted Zebra nodes. There are two attack models: In the first model, the attacker mines two consecutive valid-work blocks where the child repeats a shielded transaction from the parent. At 10% hashrate, the attacker has approximately 11.5 opportunities per day; at 5%, approximately 2.9 per day; at 1%, approximately one every 8.7 days. In the second model, the attacker broadcasts a shielded transaction into the mempool and waits for any honest miner to include it. The attacker then only needs to mine the next block containing the same transaction. This is cheaper because the attacker does not need to mine the parent block. At 10% hashrate, the attacker has approximately 14.4 single-block opportunities per day; at 5%, approximately 7.2 per day; at 1%, approximately 1.4 per day. The crash is a process abort (not recoverable within the process). The node must be restarted. Repeated attacks can keep a node down for extended periods. This is a liveness issue, not a consensus divergence: zcashd cleanly rejects the invalid child block while Zebra aborts. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52738
GHSA-w834-cf6p-9m9w
Jul 02, 2026
Zebra: Finalized address balance credit-first overflow on consensus-valid blocks
Medium
Network
Low
None
None
Am I affectedYou are affected if:
SummaryThe finalized transparent address balance writer processes all newly-created outputs (credits) before processing spent outputs (debits) within the same block. A consensus-valid block containing a long chain of same-address transparent self-spends can cause the intermediate per-address balance during the credit pass to exceed Because the triggering block is consensus-valid (zcashd accepts it), the panic recurs on restart when the node re-encounters the same block. This creates a persistent chain halt that can only be resolved by a software patch. DetailsThe finalized state writer at The code panics on the intermediate overflow via An attacker with approximately 1,100–2,100 ZEC and mining capability can construct a block that permanently halts all Zebra nodes. The attacker recovers their capital (the self-spends return funds to the same address), so the net cost is the mining effort only. PatchesPatched in Zebra 4.4.2. The fix processes credits and debits together per transaction rather than all credits then all debits, matching zcashd's approach. WorkaroundsNo workaround is available. Upgrade to Zebra 4.4.2. ImpactA single consensus-valid mined block can permanently halt all Zebra nodes on the network. The halt persists across restarts. Recovery requires deploying a patched version. Downstream consumers (light wallets, exchanges, mining infrastructure) lose service for the duration of the halt. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52737
GHSA-gvjc-3w7c-92jx
Jul 02, 2026
Zebra has sync restart poisoning from single unauthenticated peer via above-lookahead block
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryA malicious peer can answer Zebra's outbound On mainnet, each successful cycle imposes a 67-second sync restart delay. All in-flight downloads from honest peers are cancelled on each restart. DetailsThe bug is the interaction of three layers:
The attacker needs only an unauthenticated P2P connection (post-handshake), a tiny payload (one two-hash Additionally, several other pre-consensus sync-layer errors had zero misbehaviour scores even when peer-attributed. Contextual validation failures ( PatchesPatched in Zebra 4.4.2. The fix:
WorkaroundsNo configuration-level workaround is available. The attack is mitigated by having a diverse honest peer set, but cannot be prevented while the vulnerable code is running. ImpactA single unauthenticated peer can repeatedly stall a syncing Zebra node by forcing 67-second global sync restart cycles. All unrelated in-flight downloads are cancelled on each restart. The node does not crash and no state is corrupted, but sync progress is significantly degraded for the duration of the attack. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52735
GHSA-gf9r-m956-97qx
Jul 02, 2026
zebrad has consensus divergence via P2SH sigop undercount in pure-Rust disabled-opcode parser
Critical
Network
Low
None
None
Am I affectedYou are affected if:
All default configurations are affected. No feature flags, non-default settings, or special build options are required. SummaryZebra's P2SH sigop counter uses a pure-Rust code path that short-circuits on disabled opcodes (such as An attacker can exploit this without mining capability. Broadcasting transactions that spend P2SH outputs with malicious redeem scripts is sufficient; any Zebra miner who includes those transactions in a block triggers a chain split between Zebra and zcashd validators. DetailsThe P2SH sigop counter at The Rust parser in zcashd's A redeem script of PatchesPatched in Zebra 4.4.2. The fix routes the P2SH sigop counter through the same C++ FFI already used by the legacy sigop counter. WorkaroundsThere is no configuration-level workaround. All Zebra nodes validating blocks on a network shared with zcashd are affected. Upgrade as soon as the patched version is available. ImpactA chain split between Zebra and zcashd validators. The attacker broadcasts spending transactions referencing P2SH outputs whose redeem scripts contain a disabled opcode followed by The attacker does not need mining capability, RPC access, or any special privileges. The cost is the transaction fees for the funding and spending transactions. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52736
GHSA-4m69-67m6-prqp
Jul 02, 2026
Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache
High
Network
Low
None
None
DescriptionAm I affectedYou are affected if:
All default configurations are affected. SummaryZebra records a block hash in DetailsZIP-244 defines The attack flow over P2P:
A secondary variant exists where chain pruning (via PatchesPatched in Zebra 4.4.2. The fix removes stale entries from WorkaroundsThere is no complete configuration-level workaround. Reducing the node's inbound peer count ( ImpactA remote unauthenticated P2P peer can permanently stall a targeted Zebra node at a specific block height. The node diverges from the network tip; downstream consumers (lightwalletd, wallets, explorers, mining infrastructure) relying on the node see a stalled chain. The attack requires winning a propagation race: delivering the poisoned block body before honest peers deliver the canonical block. A well-positioned attacker (low-latency connection to the target, observation of new blocks from other peers) can reliably win this race. In sustained form, the attacker repeats for each new block, keeping the target permanently behind. Recovery requires restarting the node (which clears the in-memory sent-hash cache) or waiting for a reorg at the affected height (rare on the canonical chain). CreditReported independently by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-h72h-ppcx-998p
Jul 02, 2026
Zebra has pre-handshake buffer capacity reservation based on attacker-claimed body length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe P2P codec's However, Zebra's existing mitigations further constrain the practical attack surface: per-IP connection limits ( DetailsAt No legitimate Zcash handshake message ( PatchesThe fix defers large buffer reservations until after the handshake completes, or caps the per-message reservation for pre-handshake messages to what WorkaroundsNo workaround is needed. The existing per-IP rate limiting, handshake timeout, and connection limits effectively mitigate the practical impact. ImpactMinimal. The reservation affects virtual address space only, not physical memory. Zebra's existing connection-management mitigations (per-IP limits, accept rate, handshake timeout) further constrain the attack. The code path is worth cleaning up for defense-in-depth but does not produce a measurable denial-of-service effect. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52732
GHSA-4fc2-h7jh-287c
Jul 02, 2026
zebrad has mempool transaction admission denial via single-peer inbound queue saturation
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryA single unauthenticated P2P peer can monopolize all 25 inbound mempool download/verification slots ( DetailsThe mempool download/verification pipeline at
The attacker sends Two additional slot-holding techniques have been independently demonstrated: invalid-prevout transactions that park in Patcheszebrad 4.5.0 The fix adds per-peer queue accounting to the mempool download pipeline. A single peer is limited to a fraction of WorkaroundsThere is no complete configuration-level workaround. Reducing ImpactMempool transaction admission is denied for all honest peers and local RPC clients while the attack is sustained. Block validation and chain synchronization continue normally. The attacker needs only one TCP connection and minimal bandwidth (~1 KB/s of fake CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
GHSA-c8w6-x74f-vmg3
Jul 02, 2026
zebrad vulnerable to full node denial of service via crafted Sapling receiver in z_listunifiedreceivers
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe Details
At The same crate already handles this correctly in Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-443g-gwgp-49x4
Jul 02, 2026
zebrad vulnerable to getblocks/getheaders locator CPU amplification via uncapped vector length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe A single maximally-sized DetailsThe A legitimate block locator is logarithmic in chain length (approximately 30 hashes for the current ~3M-block Zcash chain). Zebra's own send-side cap is The practical impact requires significant attacker bandwidth (approximately 2 MiB per request) and multiple Sybil peers to meaningfully degrade the blocking pool, which limits real-world exploitability. PatchesPatched in Zebra 4.4.2. The fix caps WorkaroundsNo specific workaround is needed. Existing backpressure mechanisms (load shedding, sequential per-peer message processing, connection limits) constrain the practical impact. ImpactUnder sustained load from multiple Sybil peers, oversized locator vectors can occupy blocking-pool threads and degrade state-read performance. The effect is bounded by connection limits and requires significant attacker bandwidth. CreditVulnerability identified by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52731
GHSA-qv2r-v3mx-f4pf
Jul 02, 2026
zebrad has full node denial of service via non-ASCII LongPollId in getblocktemplate
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe DetailsThe Under the Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace byte-index string slicing with character-aware parsing or validate that the Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-44499
GHSA-h9hm-m2xj-4rq9
May 08, 2026
Zebra has Permanent Block Discovery Halt via Gossip Queue Saturation and Syncer Poisoning
High
Network
Low
None
None
SummaryA composite denial-of-service vulnerability in Zebra's block discovery pipeline allows an unauthenticated remote attacker to permanently halt all new block discovery on a targeted node. The attack exploits three independent weaknesses in the gossip, syncer, and download subsystems — all exercisable from a single TCP connection — to create a monotonically growing block deficit that never self-heals. SeverityCritical — This is a Denial of Service vulnerability that requires no authentication, no special privileges, and only a single peer connection. The halt is permanent: the node will never recover without operator intervention. Affected VersionsAll Zebra versions prior to 4.4.0. DescriptionZebra discovers new blocks through two complementary paths: a gossip path (peers announce blocks via The gossip path was vulnerable because there was no per-connection rate limit on The syncer backup path could be degraded by responding with empty Combining these two vectors, an attacker could suppress both block discovery paths simultaneously from a single connection, causing the node to fall permanently behind the chain tip. ImpactDenial of Service
Fixed VersionsThis issue is fixed in Zebra 4.4.0. The fix drops connections that send empty responses to MitigationUsers should upgrade to Zebra 4.4.0 or later immediately. There are no known workarounds for this issue. Immediate upgrade is the only way to protect against this attack. CreditsZebra the researcher who reported this issue through the coordinated disclosure process. Fixed in
4.4.0
References Updated May 08, 2026 · Source: OSV.dev
GHSA-pvmv-cwg8-v6c8
May 08, 2026
Zebra v4.4.0 still accepts V5 SIGHASH_SINGLE without a corresponding output
Critical
Network
Low
None
None
Consensus Divergence in V5 Transparent SIGHASH_SINGLE With No Corresponding OutputSummaryZebra failed to enforce a ZIP-244 consensus rule for V5 transparent transactions: when an input is signed with A previous fix ( SeverityCritical - 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 Affected VersionsZebra 4.4.0. DescriptionVerification of transparent transactions inherits the Bitcoin Script verification code in C++. Since it is consensus-critical, this code is called from Zebra through a foreign function interface (FFI), with a Rust callback that computes the sighash for each input being verified. ZIP-244 §S.2a marks two situations as consensus failure for V5 transparent signatures:
An attacker could exploit this by:
Zebra would verify the transaction's transparent script and accept the transaction (and any block containing it), while ImpactConsensus Failure
Fixed VersionsThis issue is fixed in Zebra 4.4.1. MitigationUsers should upgrade to Zebra 4.4.1 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. CreditsZebra thanks @sangsoo-osec, @zmanian, and @fivelittleducks for finding and reporting the issue. Fixed in
4.4.1
References Updated May 22, 2026 · Source: OSV.dev
GHSA-cwfq-rfcr-8hmp
May 07, 2026
Zebra's Transparent SIGHASH_SINGLE Handling Diverges from zcashd for Corresponding Outputs
Critical
Network
Low
None
None
|
1.6.0
unknown
Dependencies (78)
+ 70 more
Changelog
Compare changes
|
|
1.5.2
unknown
26 CVEs
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev
CVE-2026-52829
GHSA-63wg-wjjj-7cp8
Jul 02, 2026
Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryAn address normalization mismatch between the handshake path and the mempool misbehavior path causes a deterministic assertion panic when a peer connects via IPv4 to a dual-stack IPv6 listener and then triggers a mempool misbehavior penalty. The handshake path canonicalizes IPv4-mapped IPv6 addresses to plain IPv4 when storing the peer in the address book via DetailsOn Linux with The handshake path uses After the 30-second misbehavior batch flush, The attacker needs only to complete a P2P handshake over IPv4 to a dual-stack listener and advertise an invalid mempool transaction (such as a coinbase transaction). The assertion fires after the 30-second misbehavior batch flush. PatchesPatched in Zebra 4.5.0. The fix canonicalizes the address in the misbehavior update path via a new WorkaroundsConfiguring ImpactA remote unauthenticated peer can deterministically crash any synced Zebra node running the default Linux dual-stack configuration with a single invalid mempool transaction advertisement, followed by a 30-second wait. The attack requires no mining capability, no RPC access, no funds, and no special privileges. The crash can be repeated after each restart, causing persistent downtime. Linux dual-stack sockets and mempool activation are the default production state, not special preconditions. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52734
GHSA-65jj-fmw8-468q
Jul 02, 2026
zebrad has unbounded memory leak in mempool download pipeline via timeout path cancel_handles retention
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryThe mempool download pipeline's Details
The only cleanup paths for For direct PatchesThe fix preserves the WorkaroundsThere is no configuration-level workaround. Restarting the node clears the accumulated entries. Operators running in memory-constrained environments (containers with cgroup limits) may see the process killed by the OOM killer before natural recovery. ImpactGradual, unbounded memory exhaustion of a Zebra node from unauthenticated P2P traffic. The leak is monotonic (entries are never freed under normal operation) but slow (~685 KB/s per connection worst case). An attacker must sustain traffic for hours to exhaust typical server memory. The node continues operating normally until memory pressure becomes critical, at which point the OS OOM killer terminates the process or the node degrades due to swap pressure. No consensus impact, no fund loss, no on-disk corruption. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52733
GHSA-2gf8-q9rr-jq3h
Jul 02, 2026
zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip
6.5
/ 10
Medium
Network
High
None
None
Unchanged
None
High
Low
Am I affectedYou are affected if:
All default configurations are affected. The corruption persists across restarts because it is written to RocksDB. SummaryWhen DetailsThe non-finalized state provides two methods for removing blocks: When a chain fork occurs and The Patcheszebra-state 7.0.0 and zebrad 4.5.0. The fix adds subtree root cleanup to WorkaroundsThere 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 ImpactPersistent corruption of Sapling and Orchard subtree root history in the RocksDB state database. The corruption survives node restarts. Downstream consumers that rely on CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52739
GHSA-hhm7-qrv5-h4r6
Jul 02, 2026
Zebra: Repeated Non-Finalized Shielded Transaction Aborts Zebra Before Duplicate-Nullifier Rejection
5.9
/ 10
Medium
Network
High
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
All default configurations are affected. Summary
The block should be rejected with a duplicate-nullifier contextual validation error. Instead, the ordering of index updates within DetailsIn
The shielded nullifier uniqueness check at step 3 would correctly reject the duplicate transaction. But the The block transaction verifier does not run the best-chain nullifier query for block transactions — that check is gated on mempool transactions only ( There are two attack models: Model A (two attacker blocks): The attacker mines two consecutive valid-work blocks: parent B1 containing a shielded transaction T, and child B2 repeating T. This requires controlling both blocks consecutively. Model B (one attacker block after an honest block): The attacker broadcasts a shielded transaction T into the mempool. When any honest miner includes T in their block B1, the attacker only needs to mine the next child block B2 containing the same T. This requires controlling only one block immediately after an honest block that included the attacker's transaction. The attacker can broadcast a suitable shielded transaction every block until one is included by an honest miner, then attempt to mine the follow-up. Both models require the child block to repeat the shielded-only V5 transaction while the parent is still in non-finalized state. Patcheszebra-state 7.0.0 and zebrad 4.5.0. Replace the
WorkaroundsThere is no configuration-level workaround. The assert is in the non-finalized state push path, which is exercised by all block processing past the checkpoint height. ImpactA malicious block producer can crash targeted Zebra nodes. There are two attack models: In the first model, the attacker mines two consecutive valid-work blocks where the child repeats a shielded transaction from the parent. At 10% hashrate, the attacker has approximately 11.5 opportunities per day; at 5%, approximately 2.9 per day; at 1%, approximately one every 8.7 days. In the second model, the attacker broadcasts a shielded transaction into the mempool and waits for any honest miner to include it. The attacker then only needs to mine the next block containing the same transaction. This is cheaper because the attacker does not need to mine the parent block. At 10% hashrate, the attacker has approximately 14.4 single-block opportunities per day; at 5%, approximately 7.2 per day; at 1%, approximately 1.4 per day. The crash is a process abort (not recoverable within the process). The node must be restarted. Repeated attacks can keep a node down for extended periods. This is a liveness issue, not a consensus divergence: zcashd cleanly rejects the invalid child block while Zebra aborts. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52738
GHSA-w834-cf6p-9m9w
Jul 02, 2026
Zebra: Finalized address balance credit-first overflow on consensus-valid blocks
Medium
Network
Low
None
None
Am I affectedYou are affected if:
SummaryThe finalized transparent address balance writer processes all newly-created outputs (credits) before processing spent outputs (debits) within the same block. A consensus-valid block containing a long chain of same-address transparent self-spends can cause the intermediate per-address balance during the credit pass to exceed Because the triggering block is consensus-valid (zcashd accepts it), the panic recurs on restart when the node re-encounters the same block. This creates a persistent chain halt that can only be resolved by a software patch. DetailsThe finalized state writer at The code panics on the intermediate overflow via An attacker with approximately 1,100–2,100 ZEC and mining capability can construct a block that permanently halts all Zebra nodes. The attacker recovers their capital (the self-spends return funds to the same address), so the net cost is the mining effort only. PatchesPatched in Zebra 4.4.2. The fix processes credits and debits together per transaction rather than all credits then all debits, matching zcashd's approach. WorkaroundsNo workaround is available. Upgrade to Zebra 4.4.2. ImpactA single consensus-valid mined block can permanently halt all Zebra nodes on the network. The halt persists across restarts. Recovery requires deploying a patched version. Downstream consumers (light wallets, exchanges, mining infrastructure) lose service for the duration of the halt. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52737
GHSA-gvjc-3w7c-92jx
Jul 02, 2026
Zebra has sync restart poisoning from single unauthenticated peer via above-lookahead block
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryA malicious peer can answer Zebra's outbound On mainnet, each successful cycle imposes a 67-second sync restart delay. All in-flight downloads from honest peers are cancelled on each restart. DetailsThe bug is the interaction of three layers:
The attacker needs only an unauthenticated P2P connection (post-handshake), a tiny payload (one two-hash Additionally, several other pre-consensus sync-layer errors had zero misbehaviour scores even when peer-attributed. Contextual validation failures ( PatchesPatched in Zebra 4.4.2. The fix:
WorkaroundsNo configuration-level workaround is available. The attack is mitigated by having a diverse honest peer set, but cannot be prevented while the vulnerable code is running. ImpactA single unauthenticated peer can repeatedly stall a syncing Zebra node by forcing 67-second global sync restart cycles. All unrelated in-flight downloads are cancelled on each restart. The node does not crash and no state is corrupted, but sync progress is significantly degraded for the duration of the attack. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52735
GHSA-gf9r-m956-97qx
Jul 02, 2026
zebrad has consensus divergence via P2SH sigop undercount in pure-Rust disabled-opcode parser
Critical
Network
Low
None
None
Am I affectedYou are affected if:
All default configurations are affected. No feature flags, non-default settings, or special build options are required. SummaryZebra's P2SH sigop counter uses a pure-Rust code path that short-circuits on disabled opcodes (such as An attacker can exploit this without mining capability. Broadcasting transactions that spend P2SH outputs with malicious redeem scripts is sufficient; any Zebra miner who includes those transactions in a block triggers a chain split between Zebra and zcashd validators. DetailsThe P2SH sigop counter at The Rust parser in zcashd's A redeem script of PatchesPatched in Zebra 4.4.2. The fix routes the P2SH sigop counter through the same C++ FFI already used by the legacy sigop counter. WorkaroundsThere is no configuration-level workaround. All Zebra nodes validating blocks on a network shared with zcashd are affected. Upgrade as soon as the patched version is available. ImpactA chain split between Zebra and zcashd validators. The attacker broadcasts spending transactions referencing P2SH outputs whose redeem scripts contain a disabled opcode followed by The attacker does not need mining capability, RPC access, or any special privileges. The cost is the transaction fees for the funding and spending transactions. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52736
GHSA-4m69-67m6-prqp
Jul 02, 2026
Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache
High
Network
Low
None
None
DescriptionAm I affectedYou are affected if:
All default configurations are affected. SummaryZebra records a block hash in DetailsZIP-244 defines The attack flow over P2P:
A secondary variant exists where chain pruning (via PatchesPatched in Zebra 4.4.2. The fix removes stale entries from WorkaroundsThere is no complete configuration-level workaround. Reducing the node's inbound peer count ( ImpactA remote unauthenticated P2P peer can permanently stall a targeted Zebra node at a specific block height. The node diverges from the network tip; downstream consumers (lightwalletd, wallets, explorers, mining infrastructure) relying on the node see a stalled chain. The attack requires winning a propagation race: delivering the poisoned block body before honest peers deliver the canonical block. A well-positioned attacker (low-latency connection to the target, observation of new blocks from other peers) can reliably win this race. In sustained form, the attacker repeats for each new block, keeping the target permanently behind. Recovery requires restarting the node (which clears the in-memory sent-hash cache) or waiting for a reorg at the affected height (rare on the canonical chain). CreditReported independently by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-h72h-ppcx-998p
Jul 02, 2026
Zebra has pre-handshake buffer capacity reservation based on attacker-claimed body length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe P2P codec's However, Zebra's existing mitigations further constrain the practical attack surface: per-IP connection limits ( DetailsAt No legitimate Zcash handshake message ( PatchesThe fix defers large buffer reservations until after the handshake completes, or caps the per-message reservation for pre-handshake messages to what WorkaroundsNo workaround is needed. The existing per-IP rate limiting, handshake timeout, and connection limits effectively mitigate the practical impact. ImpactMinimal. The reservation affects virtual address space only, not physical memory. Zebra's existing connection-management mitigations (per-IP limits, accept rate, handshake timeout) further constrain the attack. The code path is worth cleaning up for defense-in-depth but does not produce a measurable denial-of-service effect. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52732
GHSA-4fc2-h7jh-287c
Jul 02, 2026
zebrad has mempool transaction admission denial via single-peer inbound queue saturation
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryA single unauthenticated P2P peer can monopolize all 25 inbound mempool download/verification slots ( DetailsThe mempool download/verification pipeline at
The attacker sends Two additional slot-holding techniques have been independently demonstrated: invalid-prevout transactions that park in Patcheszebrad 4.5.0 The fix adds per-peer queue accounting to the mempool download pipeline. A single peer is limited to a fraction of WorkaroundsThere is no complete configuration-level workaround. Reducing ImpactMempool transaction admission is denied for all honest peers and local RPC clients while the attack is sustained. Block validation and chain synchronization continue normally. The attacker needs only one TCP connection and minimal bandwidth (~1 KB/s of fake CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
GHSA-c8w6-x74f-vmg3
Jul 02, 2026
zebrad vulnerable to full node denial of service via crafted Sapling receiver in z_listunifiedreceivers
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe Details
At The same crate already handles this correctly in Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-443g-gwgp-49x4
Jul 02, 2026
zebrad vulnerable to getblocks/getheaders locator CPU amplification via uncapped vector length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe A single maximally-sized DetailsThe A legitimate block locator is logarithmic in chain length (approximately 30 hashes for the current ~3M-block Zcash chain). Zebra's own send-side cap is The practical impact requires significant attacker bandwidth (approximately 2 MiB per request) and multiple Sybil peers to meaningfully degrade the blocking pool, which limits real-world exploitability. PatchesPatched in Zebra 4.4.2. The fix caps WorkaroundsNo specific workaround is needed. Existing backpressure mechanisms (load shedding, sequential per-peer message processing, connection limits) constrain the practical impact. ImpactUnder sustained load from multiple Sybil peers, oversized locator vectors can occupy blocking-pool threads and degrade state-read performance. The effect is bounded by connection limits and requires significant attacker bandwidth. CreditVulnerability identified by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52731
GHSA-qv2r-v3mx-f4pf
Jul 02, 2026
zebrad has full node denial of service via non-ASCII LongPollId in getblocktemplate
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe DetailsThe Under the Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace byte-index string slicing with character-aware parsing or validate that the Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-44499
GHSA-h9hm-m2xj-4rq9
May 08, 2026
Zebra has Permanent Block Discovery Halt via Gossip Queue Saturation and Syncer Poisoning
High
Network
Low
None
None
SummaryA composite denial-of-service vulnerability in Zebra's block discovery pipeline allows an unauthenticated remote attacker to permanently halt all new block discovery on a targeted node. The attack exploits three independent weaknesses in the gossip, syncer, and download subsystems — all exercisable from a single TCP connection — to create a monotonically growing block deficit that never self-heals. SeverityCritical — This is a Denial of Service vulnerability that requires no authentication, no special privileges, and only a single peer connection. The halt is permanent: the node will never recover without operator intervention. Affected VersionsAll Zebra versions prior to 4.4.0. DescriptionZebra discovers new blocks through two complementary paths: a gossip path (peers announce blocks via The gossip path was vulnerable because there was no per-connection rate limit on The syncer backup path could be degraded by responding with empty Combining these two vectors, an attacker could suppress both block discovery paths simultaneously from a single connection, causing the node to fall permanently behind the chain tip. ImpactDenial of Service
Fixed VersionsThis issue is fixed in Zebra 4.4.0. The fix drops connections that send empty responses to MitigationUsers should upgrade to Zebra 4.4.0 or later immediately. There are no known workarounds for this issue. Immediate upgrade is the only way to protect against this attack. CreditsZebra the researcher who reported this issue through the coordinated disclosure process. Fixed in
4.4.0
References Updated May 08, 2026 · Source: OSV.dev
GHSA-pvmv-cwg8-v6c8
May 08, 2026
Zebra v4.4.0 still accepts V5 SIGHASH_SINGLE without a corresponding output
Critical
Network
Low
None
None
Consensus Divergence in V5 Transparent SIGHASH_SINGLE With No Corresponding OutputSummaryZebra failed to enforce a ZIP-244 consensus rule for V5 transparent transactions: when an input is signed with A previous fix ( SeverityCritical - 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 Affected VersionsZebra 4.4.0. DescriptionVerification of transparent transactions inherits the Bitcoin Script verification code in C++. Since it is consensus-critical, this code is called from Zebra through a foreign function interface (FFI), with a Rust callback that computes the sighash for each input being verified. ZIP-244 §S.2a marks two situations as consensus failure for V5 transparent signatures:
An attacker could exploit this by:
Zebra would verify the transaction's transparent script and accept the transaction (and any block containing it), while ImpactConsensus Failure
Fixed VersionsThis issue is fixed in Zebra 4.4.1. MitigationUsers should upgrade to Zebra 4.4.1 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. CreditsZebra thanks @sangsoo-osec, @zmanian, and @fivelittleducks for finding and reporting the issue. Fixed in
4.4.1
References Updated May 22, 2026 · Source: OSV.dev
GHSA-cwfq-rfcr-8hmp
May 07, 2026
Zebra's Transparent SIGHASH_SINGLE Handling Diverges from zcashd for Corresponding Outputs
Critical
Network
Low
None
None
|
1.5.2
unknown
Dependencies (69)
+ 61 more
Changelog
Compare changes
|
|
1.5.0
unknown
26 CVEs
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev
CVE-2026-52829
GHSA-63wg-wjjj-7cp8
Jul 02, 2026
Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryAn address normalization mismatch between the handshake path and the mempool misbehavior path causes a deterministic assertion panic when a peer connects via IPv4 to a dual-stack IPv6 listener and then triggers a mempool misbehavior penalty. The handshake path canonicalizes IPv4-mapped IPv6 addresses to plain IPv4 when storing the peer in the address book via DetailsOn Linux with The handshake path uses After the 30-second misbehavior batch flush, The attacker needs only to complete a P2P handshake over IPv4 to a dual-stack listener and advertise an invalid mempool transaction (such as a coinbase transaction). The assertion fires after the 30-second misbehavior batch flush. PatchesPatched in Zebra 4.5.0. The fix canonicalizes the address in the misbehavior update path via a new WorkaroundsConfiguring ImpactA remote unauthenticated peer can deterministically crash any synced Zebra node running the default Linux dual-stack configuration with a single invalid mempool transaction advertisement, followed by a 30-second wait. The attack requires no mining capability, no RPC access, no funds, and no special privileges. The crash can be repeated after each restart, causing persistent downtime. Linux dual-stack sockets and mempool activation are the default production state, not special preconditions. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52734
GHSA-65jj-fmw8-468q
Jul 02, 2026
zebrad has unbounded memory leak in mempool download pipeline via timeout path cancel_handles retention
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryThe mempool download pipeline's Details
The only cleanup paths for For direct PatchesThe fix preserves the WorkaroundsThere is no configuration-level workaround. Restarting the node clears the accumulated entries. Operators running in memory-constrained environments (containers with cgroup limits) may see the process killed by the OOM killer before natural recovery. ImpactGradual, unbounded memory exhaustion of a Zebra node from unauthenticated P2P traffic. The leak is monotonic (entries are never freed under normal operation) but slow (~685 KB/s per connection worst case). An attacker must sustain traffic for hours to exhaust typical server memory. The node continues operating normally until memory pressure becomes critical, at which point the OS OOM killer terminates the process or the node degrades due to swap pressure. No consensus impact, no fund loss, no on-disk corruption. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52733
GHSA-2gf8-q9rr-jq3h
Jul 02, 2026
zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip
6.5
/ 10
Medium
Network
High
None
None
Unchanged
None
High
Low
Am I affectedYou are affected if:
All default configurations are affected. The corruption persists across restarts because it is written to RocksDB. SummaryWhen DetailsThe non-finalized state provides two methods for removing blocks: When a chain fork occurs and The Patcheszebra-state 7.0.0 and zebrad 4.5.0. The fix adds subtree root cleanup to WorkaroundsThere 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 ImpactPersistent corruption of Sapling and Orchard subtree root history in the RocksDB state database. The corruption survives node restarts. Downstream consumers that rely on CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52739
GHSA-hhm7-qrv5-h4r6
Jul 02, 2026
Zebra: Repeated Non-Finalized Shielded Transaction Aborts Zebra Before Duplicate-Nullifier Rejection
5.9
/ 10
Medium
Network
High
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
All default configurations are affected. Summary
The block should be rejected with a duplicate-nullifier contextual validation error. Instead, the ordering of index updates within DetailsIn
The shielded nullifier uniqueness check at step 3 would correctly reject the duplicate transaction. But the The block transaction verifier does not run the best-chain nullifier query for block transactions — that check is gated on mempool transactions only ( There are two attack models: Model A (two attacker blocks): The attacker mines two consecutive valid-work blocks: parent B1 containing a shielded transaction T, and child B2 repeating T. This requires controlling both blocks consecutively. Model B (one attacker block after an honest block): The attacker broadcasts a shielded transaction T into the mempool. When any honest miner includes T in their block B1, the attacker only needs to mine the next child block B2 containing the same T. This requires controlling only one block immediately after an honest block that included the attacker's transaction. The attacker can broadcast a suitable shielded transaction every block until one is included by an honest miner, then attempt to mine the follow-up. Both models require the child block to repeat the shielded-only V5 transaction while the parent is still in non-finalized state. Patcheszebra-state 7.0.0 and zebrad 4.5.0. Replace the
WorkaroundsThere is no configuration-level workaround. The assert is in the non-finalized state push path, which is exercised by all block processing past the checkpoint height. ImpactA malicious block producer can crash targeted Zebra nodes. There are two attack models: In the first model, the attacker mines two consecutive valid-work blocks where the child repeats a shielded transaction from the parent. At 10% hashrate, the attacker has approximately 11.5 opportunities per day; at 5%, approximately 2.9 per day; at 1%, approximately one every 8.7 days. In the second model, the attacker broadcasts a shielded transaction into the mempool and waits for any honest miner to include it. The attacker then only needs to mine the next block containing the same transaction. This is cheaper because the attacker does not need to mine the parent block. At 10% hashrate, the attacker has approximately 14.4 single-block opportunities per day; at 5%, approximately 7.2 per day; at 1%, approximately 1.4 per day. The crash is a process abort (not recoverable within the process). The node must be restarted. Repeated attacks can keep a node down for extended periods. This is a liveness issue, not a consensus divergence: zcashd cleanly rejects the invalid child block while Zebra aborts. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52738
GHSA-w834-cf6p-9m9w
Jul 02, 2026
Zebra: Finalized address balance credit-first overflow on consensus-valid blocks
Medium
Network
Low
None
None
Am I affectedYou are affected if:
SummaryThe finalized transparent address balance writer processes all newly-created outputs (credits) before processing spent outputs (debits) within the same block. A consensus-valid block containing a long chain of same-address transparent self-spends can cause the intermediate per-address balance during the credit pass to exceed Because the triggering block is consensus-valid (zcashd accepts it), the panic recurs on restart when the node re-encounters the same block. This creates a persistent chain halt that can only be resolved by a software patch. DetailsThe finalized state writer at The code panics on the intermediate overflow via An attacker with approximately 1,100–2,100 ZEC and mining capability can construct a block that permanently halts all Zebra nodes. The attacker recovers their capital (the self-spends return funds to the same address), so the net cost is the mining effort only. PatchesPatched in Zebra 4.4.2. The fix processes credits and debits together per transaction rather than all credits then all debits, matching zcashd's approach. WorkaroundsNo workaround is available. Upgrade to Zebra 4.4.2. ImpactA single consensus-valid mined block can permanently halt all Zebra nodes on the network. The halt persists across restarts. Recovery requires deploying a patched version. Downstream consumers (light wallets, exchanges, mining infrastructure) lose service for the duration of the halt. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52737
GHSA-gvjc-3w7c-92jx
Jul 02, 2026
Zebra has sync restart poisoning from single unauthenticated peer via above-lookahead block
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryA malicious peer can answer Zebra's outbound On mainnet, each successful cycle imposes a 67-second sync restart delay. All in-flight downloads from honest peers are cancelled on each restart. DetailsThe bug is the interaction of three layers:
The attacker needs only an unauthenticated P2P connection (post-handshake), a tiny payload (one two-hash Additionally, several other pre-consensus sync-layer errors had zero misbehaviour scores even when peer-attributed. Contextual validation failures ( PatchesPatched in Zebra 4.4.2. The fix:
WorkaroundsNo configuration-level workaround is available. The attack is mitigated by having a diverse honest peer set, but cannot be prevented while the vulnerable code is running. ImpactA single unauthenticated peer can repeatedly stall a syncing Zebra node by forcing 67-second global sync restart cycles. All unrelated in-flight downloads are cancelled on each restart. The node does not crash and no state is corrupted, but sync progress is significantly degraded for the duration of the attack. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52735
GHSA-gf9r-m956-97qx
Jul 02, 2026
zebrad has consensus divergence via P2SH sigop undercount in pure-Rust disabled-opcode parser
Critical
Network
Low
None
None
Am I affectedYou are affected if:
All default configurations are affected. No feature flags, non-default settings, or special build options are required. SummaryZebra's P2SH sigop counter uses a pure-Rust code path that short-circuits on disabled opcodes (such as An attacker can exploit this without mining capability. Broadcasting transactions that spend P2SH outputs with malicious redeem scripts is sufficient; any Zebra miner who includes those transactions in a block triggers a chain split between Zebra and zcashd validators. DetailsThe P2SH sigop counter at The Rust parser in zcashd's A redeem script of PatchesPatched in Zebra 4.4.2. The fix routes the P2SH sigop counter through the same C++ FFI already used by the legacy sigop counter. WorkaroundsThere is no configuration-level workaround. All Zebra nodes validating blocks on a network shared with zcashd are affected. Upgrade as soon as the patched version is available. ImpactA chain split between Zebra and zcashd validators. The attacker broadcasts spending transactions referencing P2SH outputs whose redeem scripts contain a disabled opcode followed by The attacker does not need mining capability, RPC access, or any special privileges. The cost is the transaction fees for the funding and spending transactions. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52736
GHSA-4m69-67m6-prqp
Jul 02, 2026
Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache
High
Network
Low
None
None
DescriptionAm I affectedYou are affected if:
All default configurations are affected. SummaryZebra records a block hash in DetailsZIP-244 defines The attack flow over P2P:
A secondary variant exists where chain pruning (via PatchesPatched in Zebra 4.4.2. The fix removes stale entries from WorkaroundsThere is no complete configuration-level workaround. Reducing the node's inbound peer count ( ImpactA remote unauthenticated P2P peer can permanently stall a targeted Zebra node at a specific block height. The node diverges from the network tip; downstream consumers (lightwalletd, wallets, explorers, mining infrastructure) relying on the node see a stalled chain. The attack requires winning a propagation race: delivering the poisoned block body before honest peers deliver the canonical block. A well-positioned attacker (low-latency connection to the target, observation of new blocks from other peers) can reliably win this race. In sustained form, the attacker repeats for each new block, keeping the target permanently behind. Recovery requires restarting the node (which clears the in-memory sent-hash cache) or waiting for a reorg at the affected height (rare on the canonical chain). CreditReported independently by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-h72h-ppcx-998p
Jul 02, 2026
Zebra has pre-handshake buffer capacity reservation based on attacker-claimed body length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe P2P codec's However, Zebra's existing mitigations further constrain the practical attack surface: per-IP connection limits ( DetailsAt No legitimate Zcash handshake message ( PatchesThe fix defers large buffer reservations until after the handshake completes, or caps the per-message reservation for pre-handshake messages to what WorkaroundsNo workaround is needed. The existing per-IP rate limiting, handshake timeout, and connection limits effectively mitigate the practical impact. ImpactMinimal. The reservation affects virtual address space only, not physical memory. Zebra's existing connection-management mitigations (per-IP limits, accept rate, handshake timeout) further constrain the attack. The code path is worth cleaning up for defense-in-depth but does not produce a measurable denial-of-service effect. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52732
GHSA-4fc2-h7jh-287c
Jul 02, 2026
zebrad has mempool transaction admission denial via single-peer inbound queue saturation
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryA single unauthenticated P2P peer can monopolize all 25 inbound mempool download/verification slots ( DetailsThe mempool download/verification pipeline at
The attacker sends Two additional slot-holding techniques have been independently demonstrated: invalid-prevout transactions that park in Patcheszebrad 4.5.0 The fix adds per-peer queue accounting to the mempool download pipeline. A single peer is limited to a fraction of WorkaroundsThere is no complete configuration-level workaround. Reducing ImpactMempool transaction admission is denied for all honest peers and local RPC clients while the attack is sustained. Block validation and chain synchronization continue normally. The attacker needs only one TCP connection and minimal bandwidth (~1 KB/s of fake CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
GHSA-c8w6-x74f-vmg3
Jul 02, 2026
zebrad vulnerable to full node denial of service via crafted Sapling receiver in z_listunifiedreceivers
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe Details
At The same crate already handles this correctly in Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-443g-gwgp-49x4
Jul 02, 2026
zebrad vulnerable to getblocks/getheaders locator CPU amplification via uncapped vector length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe A single maximally-sized DetailsThe A legitimate block locator is logarithmic in chain length (approximately 30 hashes for the current ~3M-block Zcash chain). Zebra's own send-side cap is The practical impact requires significant attacker bandwidth (approximately 2 MiB per request) and multiple Sybil peers to meaningfully degrade the blocking pool, which limits real-world exploitability. PatchesPatched in Zebra 4.4.2. The fix caps WorkaroundsNo specific workaround is needed. Existing backpressure mechanisms (load shedding, sequential per-peer message processing, connection limits) constrain the practical impact. ImpactUnder sustained load from multiple Sybil peers, oversized locator vectors can occupy blocking-pool threads and degrade state-read performance. The effect is bounded by connection limits and requires significant attacker bandwidth. CreditVulnerability identified by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52731
GHSA-qv2r-v3mx-f4pf
Jul 02, 2026
zebrad has full node denial of service via non-ASCII LongPollId in getblocktemplate
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe DetailsThe Under the Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace byte-index string slicing with character-aware parsing or validate that the Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-44499
GHSA-h9hm-m2xj-4rq9
May 08, 2026
Zebra has Permanent Block Discovery Halt via Gossip Queue Saturation and Syncer Poisoning
High
Network
Low
None
None
SummaryA composite denial-of-service vulnerability in Zebra's block discovery pipeline allows an unauthenticated remote attacker to permanently halt all new block discovery on a targeted node. The attack exploits three independent weaknesses in the gossip, syncer, and download subsystems — all exercisable from a single TCP connection — to create a monotonically growing block deficit that never self-heals. SeverityCritical — This is a Denial of Service vulnerability that requires no authentication, no special privileges, and only a single peer connection. The halt is permanent: the node will never recover without operator intervention. Affected VersionsAll Zebra versions prior to 4.4.0. DescriptionZebra discovers new blocks through two complementary paths: a gossip path (peers announce blocks via The gossip path was vulnerable because there was no per-connection rate limit on The syncer backup path could be degraded by responding with empty Combining these two vectors, an attacker could suppress both block discovery paths simultaneously from a single connection, causing the node to fall permanently behind the chain tip. ImpactDenial of Service
Fixed VersionsThis issue is fixed in Zebra 4.4.0. The fix drops connections that send empty responses to MitigationUsers should upgrade to Zebra 4.4.0 or later immediately. There are no known workarounds for this issue. Immediate upgrade is the only way to protect against this attack. CreditsZebra the researcher who reported this issue through the coordinated disclosure process. Fixed in
4.4.0
References Updated May 08, 2026 · Source: OSV.dev
GHSA-pvmv-cwg8-v6c8
May 08, 2026
Zebra v4.4.0 still accepts V5 SIGHASH_SINGLE without a corresponding output
Critical
Network
Low
None
None
Consensus Divergence in V5 Transparent SIGHASH_SINGLE With No Corresponding OutputSummaryZebra failed to enforce a ZIP-244 consensus rule for V5 transparent transactions: when an input is signed with A previous fix ( SeverityCritical - 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 Affected VersionsZebra 4.4.0. DescriptionVerification of transparent transactions inherits the Bitcoin Script verification code in C++. Since it is consensus-critical, this code is called from Zebra through a foreign function interface (FFI), with a Rust callback that computes the sighash for each input being verified. ZIP-244 §S.2a marks two situations as consensus failure for V5 transparent signatures:
An attacker could exploit this by:
Zebra would verify the transaction's transparent script and accept the transaction (and any block containing it), while ImpactConsensus Failure
Fixed VersionsThis issue is fixed in Zebra 4.4.1. MitigationUsers should upgrade to Zebra 4.4.1 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. CreditsZebra thanks @sangsoo-osec, @zmanian, and @fivelittleducks for finding and reporting the issue. Fixed in
4.4.1
References Updated May 22, 2026 · Source: OSV.dev
GHSA-cwfq-rfcr-8hmp
May 07, 2026
Zebra's Transparent SIGHASH_SINGLE Handling Diverges from zcashd for Corresponding Outputs
Critical
Network
Low
None
None
|
1.5.0
unknown
Dependencies (68)
+ 60 more
Changelog
Compare changes
|
|
1.4.0
unknown
26 CVEs
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev
CVE-2026-52829
GHSA-63wg-wjjj-7cp8
Jul 02, 2026
Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryAn address normalization mismatch between the handshake path and the mempool misbehavior path causes a deterministic assertion panic when a peer connects via IPv4 to a dual-stack IPv6 listener and then triggers a mempool misbehavior penalty. The handshake path canonicalizes IPv4-mapped IPv6 addresses to plain IPv4 when storing the peer in the address book via DetailsOn Linux with The handshake path uses After the 30-second misbehavior batch flush, The attacker needs only to complete a P2P handshake over IPv4 to a dual-stack listener and advertise an invalid mempool transaction (such as a coinbase transaction). The assertion fires after the 30-second misbehavior batch flush. PatchesPatched in Zebra 4.5.0. The fix canonicalizes the address in the misbehavior update path via a new WorkaroundsConfiguring ImpactA remote unauthenticated peer can deterministically crash any synced Zebra node running the default Linux dual-stack configuration with a single invalid mempool transaction advertisement, followed by a 30-second wait. The attack requires no mining capability, no RPC access, no funds, and no special privileges. The crash can be repeated after each restart, causing persistent downtime. Linux dual-stack sockets and mempool activation are the default production state, not special preconditions. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52734
GHSA-65jj-fmw8-468q
Jul 02, 2026
zebrad has unbounded memory leak in mempool download pipeline via timeout path cancel_handles retention
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryThe mempool download pipeline's Details
The only cleanup paths for For direct PatchesThe fix preserves the WorkaroundsThere is no configuration-level workaround. Restarting the node clears the accumulated entries. Operators running in memory-constrained environments (containers with cgroup limits) may see the process killed by the OOM killer before natural recovery. ImpactGradual, unbounded memory exhaustion of a Zebra node from unauthenticated P2P traffic. The leak is monotonic (entries are never freed under normal operation) but slow (~685 KB/s per connection worst case). An attacker must sustain traffic for hours to exhaust typical server memory. The node continues operating normally until memory pressure becomes critical, at which point the OS OOM killer terminates the process or the node degrades due to swap pressure. No consensus impact, no fund loss, no on-disk corruption. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52733
GHSA-2gf8-q9rr-jq3h
Jul 02, 2026
zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip
6.5
/ 10
Medium
Network
High
None
None
Unchanged
None
High
Low
Am I affectedYou are affected if:
All default configurations are affected. The corruption persists across restarts because it is written to RocksDB. SummaryWhen DetailsThe non-finalized state provides two methods for removing blocks: When a chain fork occurs and The Patcheszebra-state 7.0.0 and zebrad 4.5.0. The fix adds subtree root cleanup to WorkaroundsThere 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 ImpactPersistent corruption of Sapling and Orchard subtree root history in the RocksDB state database. The corruption survives node restarts. Downstream consumers that rely on CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52739
GHSA-hhm7-qrv5-h4r6
Jul 02, 2026
Zebra: Repeated Non-Finalized Shielded Transaction Aborts Zebra Before Duplicate-Nullifier Rejection
5.9
/ 10
Medium
Network
High
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
All default configurations are affected. Summary
The block should be rejected with a duplicate-nullifier contextual validation error. Instead, the ordering of index updates within DetailsIn
The shielded nullifier uniqueness check at step 3 would correctly reject the duplicate transaction. But the The block transaction verifier does not run the best-chain nullifier query for block transactions — that check is gated on mempool transactions only ( There are two attack models: Model A (two attacker blocks): The attacker mines two consecutive valid-work blocks: parent B1 containing a shielded transaction T, and child B2 repeating T. This requires controlling both blocks consecutively. Model B (one attacker block after an honest block): The attacker broadcasts a shielded transaction T into the mempool. When any honest miner includes T in their block B1, the attacker only needs to mine the next child block B2 containing the same T. This requires controlling only one block immediately after an honest block that included the attacker's transaction. The attacker can broadcast a suitable shielded transaction every block until one is included by an honest miner, then attempt to mine the follow-up. Both models require the child block to repeat the shielded-only V5 transaction while the parent is still in non-finalized state. Patcheszebra-state 7.0.0 and zebrad 4.5.0. Replace the
WorkaroundsThere is no configuration-level workaround. The assert is in the non-finalized state push path, which is exercised by all block processing past the checkpoint height. ImpactA malicious block producer can crash targeted Zebra nodes. There are two attack models: In the first model, the attacker mines two consecutive valid-work blocks where the child repeats a shielded transaction from the parent. At 10% hashrate, the attacker has approximately 11.5 opportunities per day; at 5%, approximately 2.9 per day; at 1%, approximately one every 8.7 days. In the second model, the attacker broadcasts a shielded transaction into the mempool and waits for any honest miner to include it. The attacker then only needs to mine the next block containing the same transaction. This is cheaper because the attacker does not need to mine the parent block. At 10% hashrate, the attacker has approximately 14.4 single-block opportunities per day; at 5%, approximately 7.2 per day; at 1%, approximately 1.4 per day. The crash is a process abort (not recoverable within the process). The node must be restarted. Repeated attacks can keep a node down for extended periods. This is a liveness issue, not a consensus divergence: zcashd cleanly rejects the invalid child block while Zebra aborts. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52738
GHSA-w834-cf6p-9m9w
Jul 02, 2026
Zebra: Finalized address balance credit-first overflow on consensus-valid blocks
Medium
Network
Low
None
None
Am I affectedYou are affected if:
SummaryThe finalized transparent address balance writer processes all newly-created outputs (credits) before processing spent outputs (debits) within the same block. A consensus-valid block containing a long chain of same-address transparent self-spends can cause the intermediate per-address balance during the credit pass to exceed Because the triggering block is consensus-valid (zcashd accepts it), the panic recurs on restart when the node re-encounters the same block. This creates a persistent chain halt that can only be resolved by a software patch. DetailsThe finalized state writer at The code panics on the intermediate overflow via An attacker with approximately 1,100–2,100 ZEC and mining capability can construct a block that permanently halts all Zebra nodes. The attacker recovers their capital (the self-spends return funds to the same address), so the net cost is the mining effort only. PatchesPatched in Zebra 4.4.2. The fix processes credits and debits together per transaction rather than all credits then all debits, matching zcashd's approach. WorkaroundsNo workaround is available. Upgrade to Zebra 4.4.2. ImpactA single consensus-valid mined block can permanently halt all Zebra nodes on the network. The halt persists across restarts. Recovery requires deploying a patched version. Downstream consumers (light wallets, exchanges, mining infrastructure) lose service for the duration of the halt. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52737
GHSA-gvjc-3w7c-92jx
Jul 02, 2026
Zebra has sync restart poisoning from single unauthenticated peer via above-lookahead block
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryA malicious peer can answer Zebra's outbound On mainnet, each successful cycle imposes a 67-second sync restart delay. All in-flight downloads from honest peers are cancelled on each restart. DetailsThe bug is the interaction of three layers:
The attacker needs only an unauthenticated P2P connection (post-handshake), a tiny payload (one two-hash Additionally, several other pre-consensus sync-layer errors had zero misbehaviour scores even when peer-attributed. Contextual validation failures ( PatchesPatched in Zebra 4.4.2. The fix:
WorkaroundsNo configuration-level workaround is available. The attack is mitigated by having a diverse honest peer set, but cannot be prevented while the vulnerable code is running. ImpactA single unauthenticated peer can repeatedly stall a syncing Zebra node by forcing 67-second global sync restart cycles. All unrelated in-flight downloads are cancelled on each restart. The node does not crash and no state is corrupted, but sync progress is significantly degraded for the duration of the attack. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52735
GHSA-gf9r-m956-97qx
Jul 02, 2026
zebrad has consensus divergence via P2SH sigop undercount in pure-Rust disabled-opcode parser
Critical
Network
Low
None
None
Am I affectedYou are affected if:
All default configurations are affected. No feature flags, non-default settings, or special build options are required. SummaryZebra's P2SH sigop counter uses a pure-Rust code path that short-circuits on disabled opcodes (such as An attacker can exploit this without mining capability. Broadcasting transactions that spend P2SH outputs with malicious redeem scripts is sufficient; any Zebra miner who includes those transactions in a block triggers a chain split between Zebra and zcashd validators. DetailsThe P2SH sigop counter at The Rust parser in zcashd's A redeem script of PatchesPatched in Zebra 4.4.2. The fix routes the P2SH sigop counter through the same C++ FFI already used by the legacy sigop counter. WorkaroundsThere is no configuration-level workaround. All Zebra nodes validating blocks on a network shared with zcashd are affected. Upgrade as soon as the patched version is available. ImpactA chain split between Zebra and zcashd validators. The attacker broadcasts spending transactions referencing P2SH outputs whose redeem scripts contain a disabled opcode followed by The attacker does not need mining capability, RPC access, or any special privileges. The cost is the transaction fees for the funding and spending transactions. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52736
GHSA-4m69-67m6-prqp
Jul 02, 2026
Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache
High
Network
Low
None
None
DescriptionAm I affectedYou are affected if:
All default configurations are affected. SummaryZebra records a block hash in DetailsZIP-244 defines The attack flow over P2P:
A secondary variant exists where chain pruning (via PatchesPatched in Zebra 4.4.2. The fix removes stale entries from WorkaroundsThere is no complete configuration-level workaround. Reducing the node's inbound peer count ( ImpactA remote unauthenticated P2P peer can permanently stall a targeted Zebra node at a specific block height. The node diverges from the network tip; downstream consumers (lightwalletd, wallets, explorers, mining infrastructure) relying on the node see a stalled chain. The attack requires winning a propagation race: delivering the poisoned block body before honest peers deliver the canonical block. A well-positioned attacker (low-latency connection to the target, observation of new blocks from other peers) can reliably win this race. In sustained form, the attacker repeats for each new block, keeping the target permanently behind. Recovery requires restarting the node (which clears the in-memory sent-hash cache) or waiting for a reorg at the affected height (rare on the canonical chain). CreditReported independently by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-h72h-ppcx-998p
Jul 02, 2026
Zebra has pre-handshake buffer capacity reservation based on attacker-claimed body length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe P2P codec's However, Zebra's existing mitigations further constrain the practical attack surface: per-IP connection limits ( DetailsAt No legitimate Zcash handshake message ( PatchesThe fix defers large buffer reservations until after the handshake completes, or caps the per-message reservation for pre-handshake messages to what WorkaroundsNo workaround is needed. The existing per-IP rate limiting, handshake timeout, and connection limits effectively mitigate the practical impact. ImpactMinimal. The reservation affects virtual address space only, not physical memory. Zebra's existing connection-management mitigations (per-IP limits, accept rate, handshake timeout) further constrain the attack. The code path is worth cleaning up for defense-in-depth but does not produce a measurable denial-of-service effect. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52732
GHSA-4fc2-h7jh-287c
Jul 02, 2026
zebrad has mempool transaction admission denial via single-peer inbound queue saturation
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryA single unauthenticated P2P peer can monopolize all 25 inbound mempool download/verification slots ( DetailsThe mempool download/verification pipeline at
The attacker sends Two additional slot-holding techniques have been independently demonstrated: invalid-prevout transactions that park in Patcheszebrad 4.5.0 The fix adds per-peer queue accounting to the mempool download pipeline. A single peer is limited to a fraction of WorkaroundsThere is no complete configuration-level workaround. Reducing ImpactMempool transaction admission is denied for all honest peers and local RPC clients while the attack is sustained. Block validation and chain synchronization continue normally. The attacker needs only one TCP connection and minimal bandwidth (~1 KB/s of fake CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
GHSA-c8w6-x74f-vmg3
Jul 02, 2026
zebrad vulnerable to full node denial of service via crafted Sapling receiver in z_listunifiedreceivers
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe Details
At The same crate already handles this correctly in Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-443g-gwgp-49x4
Jul 02, 2026
zebrad vulnerable to getblocks/getheaders locator CPU amplification via uncapped vector length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe A single maximally-sized DetailsThe A legitimate block locator is logarithmic in chain length (approximately 30 hashes for the current ~3M-block Zcash chain). Zebra's own send-side cap is The practical impact requires significant attacker bandwidth (approximately 2 MiB per request) and multiple Sybil peers to meaningfully degrade the blocking pool, which limits real-world exploitability. PatchesPatched in Zebra 4.4.2. The fix caps WorkaroundsNo specific workaround is needed. Existing backpressure mechanisms (load shedding, sequential per-peer message processing, connection limits) constrain the practical impact. ImpactUnder sustained load from multiple Sybil peers, oversized locator vectors can occupy blocking-pool threads and degrade state-read performance. The effect is bounded by connection limits and requires significant attacker bandwidth. CreditVulnerability identified by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52731
GHSA-qv2r-v3mx-f4pf
Jul 02, 2026
zebrad has full node denial of service via non-ASCII LongPollId in getblocktemplate
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe DetailsThe Under the Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace byte-index string slicing with character-aware parsing or validate that the Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-44499
GHSA-h9hm-m2xj-4rq9
May 08, 2026
Zebra has Permanent Block Discovery Halt via Gossip Queue Saturation and Syncer Poisoning
High
Network
Low
None
None
SummaryA composite denial-of-service vulnerability in Zebra's block discovery pipeline allows an unauthenticated remote attacker to permanently halt all new block discovery on a targeted node. The attack exploits three independent weaknesses in the gossip, syncer, and download subsystems — all exercisable from a single TCP connection — to create a monotonically growing block deficit that never self-heals. SeverityCritical — This is a Denial of Service vulnerability that requires no authentication, no special privileges, and only a single peer connection. The halt is permanent: the node will never recover without operator intervention. Affected VersionsAll Zebra versions prior to 4.4.0. DescriptionZebra discovers new blocks through two complementary paths: a gossip path (peers announce blocks via The gossip path was vulnerable because there was no per-connection rate limit on The syncer backup path could be degraded by responding with empty Combining these two vectors, an attacker could suppress both block discovery paths simultaneously from a single connection, causing the node to fall permanently behind the chain tip. ImpactDenial of Service
Fixed VersionsThis issue is fixed in Zebra 4.4.0. The fix drops connections that send empty responses to MitigationUsers should upgrade to Zebra 4.4.0 or later immediately. There are no known workarounds for this issue. Immediate upgrade is the only way to protect against this attack. CreditsZebra the researcher who reported this issue through the coordinated disclosure process. Fixed in
4.4.0
References Updated May 08, 2026 · Source: OSV.dev
GHSA-pvmv-cwg8-v6c8
May 08, 2026
Zebra v4.4.0 still accepts V5 SIGHASH_SINGLE without a corresponding output
Critical
Network
Low
None
None
Consensus Divergence in V5 Transparent SIGHASH_SINGLE With No Corresponding OutputSummaryZebra failed to enforce a ZIP-244 consensus rule for V5 transparent transactions: when an input is signed with A previous fix ( SeverityCritical - 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 Affected VersionsZebra 4.4.0. DescriptionVerification of transparent transactions inherits the Bitcoin Script verification code in C++. Since it is consensus-critical, this code is called from Zebra through a foreign function interface (FFI), with a Rust callback that computes the sighash for each input being verified. ZIP-244 §S.2a marks two situations as consensus failure for V5 transparent signatures:
An attacker could exploit this by:
Zebra would verify the transaction's transparent script and accept the transaction (and any block containing it), while ImpactConsensus Failure
Fixed VersionsThis issue is fixed in Zebra 4.4.1. MitigationUsers should upgrade to Zebra 4.4.1 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. CreditsZebra thanks @sangsoo-osec, @zmanian, and @fivelittleducks for finding and reporting the issue. Fixed in
4.4.1
References Updated May 22, 2026 · Source: OSV.dev
GHSA-cwfq-rfcr-8hmp
May 07, 2026
Zebra's Transparent SIGHASH_SINGLE Handling Diverges from zcashd for Corresponding Outputs
Critical
Network
Low
None
None
|
1.4.0
unknown
Dependencies (67)
+ 59 more
Changelog
Compare changes
|
|
1.3.0
unknown
26 CVEs
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev
CVE-2026-52829
GHSA-63wg-wjjj-7cp8
Jul 02, 2026
Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryAn address normalization mismatch between the handshake path and the mempool misbehavior path causes a deterministic assertion panic when a peer connects via IPv4 to a dual-stack IPv6 listener and then triggers a mempool misbehavior penalty. The handshake path canonicalizes IPv4-mapped IPv6 addresses to plain IPv4 when storing the peer in the address book via DetailsOn Linux with The handshake path uses After the 30-second misbehavior batch flush, The attacker needs only to complete a P2P handshake over IPv4 to a dual-stack listener and advertise an invalid mempool transaction (such as a coinbase transaction). The assertion fires after the 30-second misbehavior batch flush. PatchesPatched in Zebra 4.5.0. The fix canonicalizes the address in the misbehavior update path via a new WorkaroundsConfiguring ImpactA remote unauthenticated peer can deterministically crash any synced Zebra node running the default Linux dual-stack configuration with a single invalid mempool transaction advertisement, followed by a 30-second wait. The attack requires no mining capability, no RPC access, no funds, and no special privileges. The crash can be repeated after each restart, causing persistent downtime. Linux dual-stack sockets and mempool activation are the default production state, not special preconditions. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52734
GHSA-65jj-fmw8-468q
Jul 02, 2026
zebrad has unbounded memory leak in mempool download pipeline via timeout path cancel_handles retention
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryThe mempool download pipeline's Details
The only cleanup paths for For direct PatchesThe fix preserves the WorkaroundsThere is no configuration-level workaround. Restarting the node clears the accumulated entries. Operators running in memory-constrained environments (containers with cgroup limits) may see the process killed by the OOM killer before natural recovery. ImpactGradual, unbounded memory exhaustion of a Zebra node from unauthenticated P2P traffic. The leak is monotonic (entries are never freed under normal operation) but slow (~685 KB/s per connection worst case). An attacker must sustain traffic for hours to exhaust typical server memory. The node continues operating normally until memory pressure becomes critical, at which point the OS OOM killer terminates the process or the node degrades due to swap pressure. No consensus impact, no fund loss, no on-disk corruption. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52733
GHSA-2gf8-q9rr-jq3h
Jul 02, 2026
zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip
6.5
/ 10
Medium
Network
High
None
None
Unchanged
None
High
Low
Am I affectedYou are affected if:
All default configurations are affected. The corruption persists across restarts because it is written to RocksDB. SummaryWhen DetailsThe non-finalized state provides two methods for removing blocks: When a chain fork occurs and The Patcheszebra-state 7.0.0 and zebrad 4.5.0. The fix adds subtree root cleanup to WorkaroundsThere 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 ImpactPersistent corruption of Sapling and Orchard subtree root history in the RocksDB state database. The corruption survives node restarts. Downstream consumers that rely on CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52739
GHSA-hhm7-qrv5-h4r6
Jul 02, 2026
Zebra: Repeated Non-Finalized Shielded Transaction Aborts Zebra Before Duplicate-Nullifier Rejection
5.9
/ 10
Medium
Network
High
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
All default configurations are affected. Summary
The block should be rejected with a duplicate-nullifier contextual validation error. Instead, the ordering of index updates within DetailsIn
The shielded nullifier uniqueness check at step 3 would correctly reject the duplicate transaction. But the The block transaction verifier does not run the best-chain nullifier query for block transactions — that check is gated on mempool transactions only ( There are two attack models: Model A (two attacker blocks): The attacker mines two consecutive valid-work blocks: parent B1 containing a shielded transaction T, and child B2 repeating T. This requires controlling both blocks consecutively. Model B (one attacker block after an honest block): The attacker broadcasts a shielded transaction T into the mempool. When any honest miner includes T in their block B1, the attacker only needs to mine the next child block B2 containing the same T. This requires controlling only one block immediately after an honest block that included the attacker's transaction. The attacker can broadcast a suitable shielded transaction every block until one is included by an honest miner, then attempt to mine the follow-up. Both models require the child block to repeat the shielded-only V5 transaction while the parent is still in non-finalized state. Patcheszebra-state 7.0.0 and zebrad 4.5.0. Replace the
WorkaroundsThere is no configuration-level workaround. The assert is in the non-finalized state push path, which is exercised by all block processing past the checkpoint height. ImpactA malicious block producer can crash targeted Zebra nodes. There are two attack models: In the first model, the attacker mines two consecutive valid-work blocks where the child repeats a shielded transaction from the parent. At 10% hashrate, the attacker has approximately 11.5 opportunities per day; at 5%, approximately 2.9 per day; at 1%, approximately one every 8.7 days. In the second model, the attacker broadcasts a shielded transaction into the mempool and waits for any honest miner to include it. The attacker then only needs to mine the next block containing the same transaction. This is cheaper because the attacker does not need to mine the parent block. At 10% hashrate, the attacker has approximately 14.4 single-block opportunities per day; at 5%, approximately 7.2 per day; at 1%, approximately 1.4 per day. The crash is a process abort (not recoverable within the process). The node must be restarted. Repeated attacks can keep a node down for extended periods. This is a liveness issue, not a consensus divergence: zcashd cleanly rejects the invalid child block while Zebra aborts. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52738
GHSA-w834-cf6p-9m9w
Jul 02, 2026
Zebra: Finalized address balance credit-first overflow on consensus-valid blocks
Medium
Network
Low
None
None
Am I affectedYou are affected if:
SummaryThe finalized transparent address balance writer processes all newly-created outputs (credits) before processing spent outputs (debits) within the same block. A consensus-valid block containing a long chain of same-address transparent self-spends can cause the intermediate per-address balance during the credit pass to exceed Because the triggering block is consensus-valid (zcashd accepts it), the panic recurs on restart when the node re-encounters the same block. This creates a persistent chain halt that can only be resolved by a software patch. DetailsThe finalized state writer at The code panics on the intermediate overflow via An attacker with approximately 1,100–2,100 ZEC and mining capability can construct a block that permanently halts all Zebra nodes. The attacker recovers their capital (the self-spends return funds to the same address), so the net cost is the mining effort only. PatchesPatched in Zebra 4.4.2. The fix processes credits and debits together per transaction rather than all credits then all debits, matching zcashd's approach. WorkaroundsNo workaround is available. Upgrade to Zebra 4.4.2. ImpactA single consensus-valid mined block can permanently halt all Zebra nodes on the network. The halt persists across restarts. Recovery requires deploying a patched version. Downstream consumers (light wallets, exchanges, mining infrastructure) lose service for the duration of the halt. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52737
GHSA-gvjc-3w7c-92jx
Jul 02, 2026
Zebra has sync restart poisoning from single unauthenticated peer via above-lookahead block
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryA malicious peer can answer Zebra's outbound On mainnet, each successful cycle imposes a 67-second sync restart delay. All in-flight downloads from honest peers are cancelled on each restart. DetailsThe bug is the interaction of three layers:
The attacker needs only an unauthenticated P2P connection (post-handshake), a tiny payload (one two-hash Additionally, several other pre-consensus sync-layer errors had zero misbehaviour scores even when peer-attributed. Contextual validation failures ( PatchesPatched in Zebra 4.4.2. The fix:
WorkaroundsNo configuration-level workaround is available. The attack is mitigated by having a diverse honest peer set, but cannot be prevented while the vulnerable code is running. ImpactA single unauthenticated peer can repeatedly stall a syncing Zebra node by forcing 67-second global sync restart cycles. All unrelated in-flight downloads are cancelled on each restart. The node does not crash and no state is corrupted, but sync progress is significantly degraded for the duration of the attack. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52735
GHSA-gf9r-m956-97qx
Jul 02, 2026
zebrad has consensus divergence via P2SH sigop undercount in pure-Rust disabled-opcode parser
Critical
Network
Low
None
None
Am I affectedYou are affected if:
All default configurations are affected. No feature flags, non-default settings, or special build options are required. SummaryZebra's P2SH sigop counter uses a pure-Rust code path that short-circuits on disabled opcodes (such as An attacker can exploit this without mining capability. Broadcasting transactions that spend P2SH outputs with malicious redeem scripts is sufficient; any Zebra miner who includes those transactions in a block triggers a chain split between Zebra and zcashd validators. DetailsThe P2SH sigop counter at The Rust parser in zcashd's A redeem script of PatchesPatched in Zebra 4.4.2. The fix routes the P2SH sigop counter through the same C++ FFI already used by the legacy sigop counter. WorkaroundsThere is no configuration-level workaround. All Zebra nodes validating blocks on a network shared with zcashd are affected. Upgrade as soon as the patched version is available. ImpactA chain split between Zebra and zcashd validators. The attacker broadcasts spending transactions referencing P2SH outputs whose redeem scripts contain a disabled opcode followed by The attacker does not need mining capability, RPC access, or any special privileges. The cost is the transaction fees for the funding and spending transactions. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52736
GHSA-4m69-67m6-prqp
Jul 02, 2026
Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache
High
Network
Low
None
None
DescriptionAm I affectedYou are affected if:
All default configurations are affected. SummaryZebra records a block hash in DetailsZIP-244 defines The attack flow over P2P:
A secondary variant exists where chain pruning (via PatchesPatched in Zebra 4.4.2. The fix removes stale entries from WorkaroundsThere is no complete configuration-level workaround. Reducing the node's inbound peer count ( ImpactA remote unauthenticated P2P peer can permanently stall a targeted Zebra node at a specific block height. The node diverges from the network tip; downstream consumers (lightwalletd, wallets, explorers, mining infrastructure) relying on the node see a stalled chain. The attack requires winning a propagation race: delivering the poisoned block body before honest peers deliver the canonical block. A well-positioned attacker (low-latency connection to the target, observation of new blocks from other peers) can reliably win this race. In sustained form, the attacker repeats for each new block, keeping the target permanently behind. Recovery requires restarting the node (which clears the in-memory sent-hash cache) or waiting for a reorg at the affected height (rare on the canonical chain). CreditReported independently by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-h72h-ppcx-998p
Jul 02, 2026
Zebra has pre-handshake buffer capacity reservation based on attacker-claimed body length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe P2P codec's However, Zebra's existing mitigations further constrain the practical attack surface: per-IP connection limits ( DetailsAt No legitimate Zcash handshake message ( PatchesThe fix defers large buffer reservations until after the handshake completes, or caps the per-message reservation for pre-handshake messages to what WorkaroundsNo workaround is needed. The existing per-IP rate limiting, handshake timeout, and connection limits effectively mitigate the practical impact. ImpactMinimal. The reservation affects virtual address space only, not physical memory. Zebra's existing connection-management mitigations (per-IP limits, accept rate, handshake timeout) further constrain the attack. The code path is worth cleaning up for defense-in-depth but does not produce a measurable denial-of-service effect. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52732
GHSA-4fc2-h7jh-287c
Jul 02, 2026
zebrad has mempool transaction admission denial via single-peer inbound queue saturation
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryA single unauthenticated P2P peer can monopolize all 25 inbound mempool download/verification slots ( DetailsThe mempool download/verification pipeline at
The attacker sends Two additional slot-holding techniques have been independently demonstrated: invalid-prevout transactions that park in Patcheszebrad 4.5.0 The fix adds per-peer queue accounting to the mempool download pipeline. A single peer is limited to a fraction of WorkaroundsThere is no complete configuration-level workaround. Reducing ImpactMempool transaction admission is denied for all honest peers and local RPC clients while the attack is sustained. Block validation and chain synchronization continue normally. The attacker needs only one TCP connection and minimal bandwidth (~1 KB/s of fake CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
GHSA-c8w6-x74f-vmg3
Jul 02, 2026
zebrad vulnerable to full node denial of service via crafted Sapling receiver in z_listunifiedreceivers
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe Details
At The same crate already handles this correctly in Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-443g-gwgp-49x4
Jul 02, 2026
zebrad vulnerable to getblocks/getheaders locator CPU amplification via uncapped vector length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe A single maximally-sized DetailsThe A legitimate block locator is logarithmic in chain length (approximately 30 hashes for the current ~3M-block Zcash chain). Zebra's own send-side cap is The practical impact requires significant attacker bandwidth (approximately 2 MiB per request) and multiple Sybil peers to meaningfully degrade the blocking pool, which limits real-world exploitability. PatchesPatched in Zebra 4.4.2. The fix caps WorkaroundsNo specific workaround is needed. Existing backpressure mechanisms (load shedding, sequential per-peer message processing, connection limits) constrain the practical impact. ImpactUnder sustained load from multiple Sybil peers, oversized locator vectors can occupy blocking-pool threads and degrade state-read performance. The effect is bounded by connection limits and requires significant attacker bandwidth. CreditVulnerability identified by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52731
GHSA-qv2r-v3mx-f4pf
Jul 02, 2026
zebrad has full node denial of service via non-ASCII LongPollId in getblocktemplate
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe DetailsThe Under the Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace byte-index string slicing with character-aware parsing or validate that the Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-44499
GHSA-h9hm-m2xj-4rq9
May 08, 2026
Zebra has Permanent Block Discovery Halt via Gossip Queue Saturation and Syncer Poisoning
High
Network
Low
None
None
SummaryA composite denial-of-service vulnerability in Zebra's block discovery pipeline allows an unauthenticated remote attacker to permanently halt all new block discovery on a targeted node. The attack exploits three independent weaknesses in the gossip, syncer, and download subsystems — all exercisable from a single TCP connection — to create a monotonically growing block deficit that never self-heals. SeverityCritical — This is a Denial of Service vulnerability that requires no authentication, no special privileges, and only a single peer connection. The halt is permanent: the node will never recover without operator intervention. Affected VersionsAll Zebra versions prior to 4.4.0. DescriptionZebra discovers new blocks through two complementary paths: a gossip path (peers announce blocks via The gossip path was vulnerable because there was no per-connection rate limit on The syncer backup path could be degraded by responding with empty Combining these two vectors, an attacker could suppress both block discovery paths simultaneously from a single connection, causing the node to fall permanently behind the chain tip. ImpactDenial of Service
Fixed VersionsThis issue is fixed in Zebra 4.4.0. The fix drops connections that send empty responses to MitigationUsers should upgrade to Zebra 4.4.0 or later immediately. There are no known workarounds for this issue. Immediate upgrade is the only way to protect against this attack. CreditsZebra the researcher who reported this issue through the coordinated disclosure process. Fixed in
4.4.0
References Updated May 08, 2026 · Source: OSV.dev
GHSA-pvmv-cwg8-v6c8
May 08, 2026
Zebra v4.4.0 still accepts V5 SIGHASH_SINGLE without a corresponding output
Critical
Network
Low
None
None
Consensus Divergence in V5 Transparent SIGHASH_SINGLE With No Corresponding OutputSummaryZebra failed to enforce a ZIP-244 consensus rule for V5 transparent transactions: when an input is signed with A previous fix ( SeverityCritical - 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 Affected VersionsZebra 4.4.0. DescriptionVerification of transparent transactions inherits the Bitcoin Script verification code in C++. Since it is consensus-critical, this code is called from Zebra through a foreign function interface (FFI), with a Rust callback that computes the sighash for each input being verified. ZIP-244 §S.2a marks two situations as consensus failure for V5 transparent signatures:
An attacker could exploit this by:
Zebra would verify the transaction's transparent script and accept the transaction (and any block containing it), while ImpactConsensus Failure
Fixed VersionsThis issue is fixed in Zebra 4.4.1. MitigationUsers should upgrade to Zebra 4.4.1 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. CreditsZebra thanks @sangsoo-osec, @zmanian, and @fivelittleducks for finding and reporting the issue. Fixed in
4.4.1
References Updated May 22, 2026 · Source: OSV.dev
GHSA-cwfq-rfcr-8hmp
May 07, 2026
Zebra's Transparent SIGHASH_SINGLE Handling Diverges from zcashd for Corresponding Outputs
Critical
Network
Low
None
None
|
1.3.0
unknown
Dependencies (66)
+ 58 more
Changelog
Compare changes
|
|
1.2.0
unknown
26 CVEs
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev
CVE-2026-52829
GHSA-63wg-wjjj-7cp8
Jul 02, 2026
Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryAn address normalization mismatch between the handshake path and the mempool misbehavior path causes a deterministic assertion panic when a peer connects via IPv4 to a dual-stack IPv6 listener and then triggers a mempool misbehavior penalty. The handshake path canonicalizes IPv4-mapped IPv6 addresses to plain IPv4 when storing the peer in the address book via DetailsOn Linux with The handshake path uses After the 30-second misbehavior batch flush, The attacker needs only to complete a P2P handshake over IPv4 to a dual-stack listener and advertise an invalid mempool transaction (such as a coinbase transaction). The assertion fires after the 30-second misbehavior batch flush. PatchesPatched in Zebra 4.5.0. The fix canonicalizes the address in the misbehavior update path via a new WorkaroundsConfiguring ImpactA remote unauthenticated peer can deterministically crash any synced Zebra node running the default Linux dual-stack configuration with a single invalid mempool transaction advertisement, followed by a 30-second wait. The attack requires no mining capability, no RPC access, no funds, and no special privileges. The crash can be repeated after each restart, causing persistent downtime. Linux dual-stack sockets and mempool activation are the default production state, not special preconditions. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52734
GHSA-65jj-fmw8-468q
Jul 02, 2026
zebrad has unbounded memory leak in mempool download pipeline via timeout path cancel_handles retention
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryThe mempool download pipeline's Details
The only cleanup paths for For direct PatchesThe fix preserves the WorkaroundsThere is no configuration-level workaround. Restarting the node clears the accumulated entries. Operators running in memory-constrained environments (containers with cgroup limits) may see the process killed by the OOM killer before natural recovery. ImpactGradual, unbounded memory exhaustion of a Zebra node from unauthenticated P2P traffic. The leak is monotonic (entries are never freed under normal operation) but slow (~685 KB/s per connection worst case). An attacker must sustain traffic for hours to exhaust typical server memory. The node continues operating normally until memory pressure becomes critical, at which point the OS OOM killer terminates the process or the node degrades due to swap pressure. No consensus impact, no fund loss, no on-disk corruption. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52733
GHSA-2gf8-q9rr-jq3h
Jul 02, 2026
zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip
6.5
/ 10
Medium
Network
High
None
None
Unchanged
None
High
Low
Am I affectedYou are affected if:
All default configurations are affected. The corruption persists across restarts because it is written to RocksDB. SummaryWhen DetailsThe non-finalized state provides two methods for removing blocks: When a chain fork occurs and The Patcheszebra-state 7.0.0 and zebrad 4.5.0. The fix adds subtree root cleanup to WorkaroundsThere 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 ImpactPersistent corruption of Sapling and Orchard subtree root history in the RocksDB state database. The corruption survives node restarts. Downstream consumers that rely on CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52739
GHSA-hhm7-qrv5-h4r6
Jul 02, 2026
Zebra: Repeated Non-Finalized Shielded Transaction Aborts Zebra Before Duplicate-Nullifier Rejection
5.9
/ 10
Medium
Network
High
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
All default configurations are affected. Summary
The block should be rejected with a duplicate-nullifier contextual validation error. Instead, the ordering of index updates within DetailsIn
The shielded nullifier uniqueness check at step 3 would correctly reject the duplicate transaction. But the The block transaction verifier does not run the best-chain nullifier query for block transactions — that check is gated on mempool transactions only ( There are two attack models: Model A (two attacker blocks): The attacker mines two consecutive valid-work blocks: parent B1 containing a shielded transaction T, and child B2 repeating T. This requires controlling both blocks consecutively. Model B (one attacker block after an honest block): The attacker broadcasts a shielded transaction T into the mempool. When any honest miner includes T in their block B1, the attacker only needs to mine the next child block B2 containing the same T. This requires controlling only one block immediately after an honest block that included the attacker's transaction. The attacker can broadcast a suitable shielded transaction every block until one is included by an honest miner, then attempt to mine the follow-up. Both models require the child block to repeat the shielded-only V5 transaction while the parent is still in non-finalized state. Patcheszebra-state 7.0.0 and zebrad 4.5.0. Replace the
WorkaroundsThere is no configuration-level workaround. The assert is in the non-finalized state push path, which is exercised by all block processing past the checkpoint height. ImpactA malicious block producer can crash targeted Zebra nodes. There are two attack models: In the first model, the attacker mines two consecutive valid-work blocks where the child repeats a shielded transaction from the parent. At 10% hashrate, the attacker has approximately 11.5 opportunities per day; at 5%, approximately 2.9 per day; at 1%, approximately one every 8.7 days. In the second model, the attacker broadcasts a shielded transaction into the mempool and waits for any honest miner to include it. The attacker then only needs to mine the next block containing the same transaction. This is cheaper because the attacker does not need to mine the parent block. At 10% hashrate, the attacker has approximately 14.4 single-block opportunities per day; at 5%, approximately 7.2 per day; at 1%, approximately 1.4 per day. The crash is a process abort (not recoverable within the process). The node must be restarted. Repeated attacks can keep a node down for extended periods. This is a liveness issue, not a consensus divergence: zcashd cleanly rejects the invalid child block while Zebra aborts. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52738
GHSA-w834-cf6p-9m9w
Jul 02, 2026
Zebra: Finalized address balance credit-first overflow on consensus-valid blocks
Medium
Network
Low
None
None
Am I affectedYou are affected if:
SummaryThe finalized transparent address balance writer processes all newly-created outputs (credits) before processing spent outputs (debits) within the same block. A consensus-valid block containing a long chain of same-address transparent self-spends can cause the intermediate per-address balance during the credit pass to exceed Because the triggering block is consensus-valid (zcashd accepts it), the panic recurs on restart when the node re-encounters the same block. This creates a persistent chain halt that can only be resolved by a software patch. DetailsThe finalized state writer at The code panics on the intermediate overflow via An attacker with approximately 1,100–2,100 ZEC and mining capability can construct a block that permanently halts all Zebra nodes. The attacker recovers their capital (the self-spends return funds to the same address), so the net cost is the mining effort only. PatchesPatched in Zebra 4.4.2. The fix processes credits and debits together per transaction rather than all credits then all debits, matching zcashd's approach. WorkaroundsNo workaround is available. Upgrade to Zebra 4.4.2. ImpactA single consensus-valid mined block can permanently halt all Zebra nodes on the network. The halt persists across restarts. Recovery requires deploying a patched version. Downstream consumers (light wallets, exchanges, mining infrastructure) lose service for the duration of the halt. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52737
GHSA-gvjc-3w7c-92jx
Jul 02, 2026
Zebra has sync restart poisoning from single unauthenticated peer via above-lookahead block
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryA malicious peer can answer Zebra's outbound On mainnet, each successful cycle imposes a 67-second sync restart delay. All in-flight downloads from honest peers are cancelled on each restart. DetailsThe bug is the interaction of three layers:
The attacker needs only an unauthenticated P2P connection (post-handshake), a tiny payload (one two-hash Additionally, several other pre-consensus sync-layer errors had zero misbehaviour scores even when peer-attributed. Contextual validation failures ( PatchesPatched in Zebra 4.4.2. The fix:
WorkaroundsNo configuration-level workaround is available. The attack is mitigated by having a diverse honest peer set, but cannot be prevented while the vulnerable code is running. ImpactA single unauthenticated peer can repeatedly stall a syncing Zebra node by forcing 67-second global sync restart cycles. All unrelated in-flight downloads are cancelled on each restart. The node does not crash and no state is corrupted, but sync progress is significantly degraded for the duration of the attack. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52735
GHSA-gf9r-m956-97qx
Jul 02, 2026
zebrad has consensus divergence via P2SH sigop undercount in pure-Rust disabled-opcode parser
Critical
Network
Low
None
None
Am I affectedYou are affected if:
All default configurations are affected. No feature flags, non-default settings, or special build options are required. SummaryZebra's P2SH sigop counter uses a pure-Rust code path that short-circuits on disabled opcodes (such as An attacker can exploit this without mining capability. Broadcasting transactions that spend P2SH outputs with malicious redeem scripts is sufficient; any Zebra miner who includes those transactions in a block triggers a chain split between Zebra and zcashd validators. DetailsThe P2SH sigop counter at The Rust parser in zcashd's A redeem script of PatchesPatched in Zebra 4.4.2. The fix routes the P2SH sigop counter through the same C++ FFI already used by the legacy sigop counter. WorkaroundsThere is no configuration-level workaround. All Zebra nodes validating blocks on a network shared with zcashd are affected. Upgrade as soon as the patched version is available. ImpactA chain split between Zebra and zcashd validators. The attacker broadcasts spending transactions referencing P2SH outputs whose redeem scripts contain a disabled opcode followed by The attacker does not need mining capability, RPC access, or any special privileges. The cost is the transaction fees for the funding and spending transactions. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52736
GHSA-4m69-67m6-prqp
Jul 02, 2026
Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache
High
Network
Low
None
None
DescriptionAm I affectedYou are affected if:
All default configurations are affected. SummaryZebra records a block hash in DetailsZIP-244 defines The attack flow over P2P:
A secondary variant exists where chain pruning (via PatchesPatched in Zebra 4.4.2. The fix removes stale entries from WorkaroundsThere is no complete configuration-level workaround. Reducing the node's inbound peer count ( ImpactA remote unauthenticated P2P peer can permanently stall a targeted Zebra node at a specific block height. The node diverges from the network tip; downstream consumers (lightwalletd, wallets, explorers, mining infrastructure) relying on the node see a stalled chain. The attack requires winning a propagation race: delivering the poisoned block body before honest peers deliver the canonical block. A well-positioned attacker (low-latency connection to the target, observation of new blocks from other peers) can reliably win this race. In sustained form, the attacker repeats for each new block, keeping the target permanently behind. Recovery requires restarting the node (which clears the in-memory sent-hash cache) or waiting for a reorg at the affected height (rare on the canonical chain). CreditReported independently by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-h72h-ppcx-998p
Jul 02, 2026
Zebra has pre-handshake buffer capacity reservation based on attacker-claimed body length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe P2P codec's However, Zebra's existing mitigations further constrain the practical attack surface: per-IP connection limits ( DetailsAt No legitimate Zcash handshake message ( PatchesThe fix defers large buffer reservations until after the handshake completes, or caps the per-message reservation for pre-handshake messages to what WorkaroundsNo workaround is needed. The existing per-IP rate limiting, handshake timeout, and connection limits effectively mitigate the practical impact. ImpactMinimal. The reservation affects virtual address space only, not physical memory. Zebra's existing connection-management mitigations (per-IP limits, accept rate, handshake timeout) further constrain the attack. The code path is worth cleaning up for defense-in-depth but does not produce a measurable denial-of-service effect. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52732
GHSA-4fc2-h7jh-287c
Jul 02, 2026
zebrad has mempool transaction admission denial via single-peer inbound queue saturation
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryA single unauthenticated P2P peer can monopolize all 25 inbound mempool download/verification slots ( DetailsThe mempool download/verification pipeline at
The attacker sends Two additional slot-holding techniques have been independently demonstrated: invalid-prevout transactions that park in Patcheszebrad 4.5.0 The fix adds per-peer queue accounting to the mempool download pipeline. A single peer is limited to a fraction of WorkaroundsThere is no complete configuration-level workaround. Reducing ImpactMempool transaction admission is denied for all honest peers and local RPC clients while the attack is sustained. Block validation and chain synchronization continue normally. The attacker needs only one TCP connection and minimal bandwidth (~1 KB/s of fake CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
GHSA-c8w6-x74f-vmg3
Jul 02, 2026
zebrad vulnerable to full node denial of service via crafted Sapling receiver in z_listunifiedreceivers
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe Details
At The same crate already handles this correctly in Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-443g-gwgp-49x4
Jul 02, 2026
zebrad vulnerable to getblocks/getheaders locator CPU amplification via uncapped vector length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe A single maximally-sized DetailsThe A legitimate block locator is logarithmic in chain length (approximately 30 hashes for the current ~3M-block Zcash chain). Zebra's own send-side cap is The practical impact requires significant attacker bandwidth (approximately 2 MiB per request) and multiple Sybil peers to meaningfully degrade the blocking pool, which limits real-world exploitability. PatchesPatched in Zebra 4.4.2. The fix caps WorkaroundsNo specific workaround is needed. Existing backpressure mechanisms (load shedding, sequential per-peer message processing, connection limits) constrain the practical impact. ImpactUnder sustained load from multiple Sybil peers, oversized locator vectors can occupy blocking-pool threads and degrade state-read performance. The effect is bounded by connection limits and requires significant attacker bandwidth. CreditVulnerability identified by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52731
GHSA-qv2r-v3mx-f4pf
Jul 02, 2026
zebrad has full node denial of service via non-ASCII LongPollId in getblocktemplate
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe DetailsThe Under the Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace byte-index string slicing with character-aware parsing or validate that the Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-44499
GHSA-h9hm-m2xj-4rq9
May 08, 2026
Zebra has Permanent Block Discovery Halt via Gossip Queue Saturation and Syncer Poisoning
High
Network
Low
None
None
SummaryA composite denial-of-service vulnerability in Zebra's block discovery pipeline allows an unauthenticated remote attacker to permanently halt all new block discovery on a targeted node. The attack exploits three independent weaknesses in the gossip, syncer, and download subsystems — all exercisable from a single TCP connection — to create a monotonically growing block deficit that never self-heals. SeverityCritical — This is a Denial of Service vulnerability that requires no authentication, no special privileges, and only a single peer connection. The halt is permanent: the node will never recover without operator intervention. Affected VersionsAll Zebra versions prior to 4.4.0. DescriptionZebra discovers new blocks through two complementary paths: a gossip path (peers announce blocks via The gossip path was vulnerable because there was no per-connection rate limit on The syncer backup path could be degraded by responding with empty Combining these two vectors, an attacker could suppress both block discovery paths simultaneously from a single connection, causing the node to fall permanently behind the chain tip. ImpactDenial of Service
Fixed VersionsThis issue is fixed in Zebra 4.4.0. The fix drops connections that send empty responses to MitigationUsers should upgrade to Zebra 4.4.0 or later immediately. There are no known workarounds for this issue. Immediate upgrade is the only way to protect against this attack. CreditsZebra the researcher who reported this issue through the coordinated disclosure process. Fixed in
4.4.0
References Updated May 08, 2026 · Source: OSV.dev
GHSA-pvmv-cwg8-v6c8
May 08, 2026
Zebra v4.4.0 still accepts V5 SIGHASH_SINGLE without a corresponding output
Critical
Network
Low
None
None
Consensus Divergence in V5 Transparent SIGHASH_SINGLE With No Corresponding OutputSummaryZebra failed to enforce a ZIP-244 consensus rule for V5 transparent transactions: when an input is signed with A previous fix ( SeverityCritical - 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 Affected VersionsZebra 4.4.0. DescriptionVerification of transparent transactions inherits the Bitcoin Script verification code in C++. Since it is consensus-critical, this code is called from Zebra through a foreign function interface (FFI), with a Rust callback that computes the sighash for each input being verified. ZIP-244 §S.2a marks two situations as consensus failure for V5 transparent signatures:
An attacker could exploit this by:
Zebra would verify the transaction's transparent script and accept the transaction (and any block containing it), while ImpactConsensus Failure
Fixed VersionsThis issue is fixed in Zebra 4.4.1. MitigationUsers should upgrade to Zebra 4.4.1 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. CreditsZebra thanks @sangsoo-osec, @zmanian, and @fivelittleducks for finding and reporting the issue. Fixed in
4.4.1
References Updated May 22, 2026 · Source: OSV.dev
GHSA-cwfq-rfcr-8hmp
May 07, 2026
Zebra's Transparent SIGHASH_SINGLE Handling Diverges from zcashd for Corresponding Outputs
Critical
Network
Low
None
None
|
1.2.0
unknown
Dependencies (64)
+ 56 more
Changelog
Compare changes
|
|
1.1.0
unknown
26 CVEs
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev
CVE-2026-52829
GHSA-63wg-wjjj-7cp8
Jul 02, 2026
Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryAn address normalization mismatch between the handshake path and the mempool misbehavior path causes a deterministic assertion panic when a peer connects via IPv4 to a dual-stack IPv6 listener and then triggers a mempool misbehavior penalty. The handshake path canonicalizes IPv4-mapped IPv6 addresses to plain IPv4 when storing the peer in the address book via DetailsOn Linux with The handshake path uses After the 30-second misbehavior batch flush, The attacker needs only to complete a P2P handshake over IPv4 to a dual-stack listener and advertise an invalid mempool transaction (such as a coinbase transaction). The assertion fires after the 30-second misbehavior batch flush. PatchesPatched in Zebra 4.5.0. The fix canonicalizes the address in the misbehavior update path via a new WorkaroundsConfiguring ImpactA remote unauthenticated peer can deterministically crash any synced Zebra node running the default Linux dual-stack configuration with a single invalid mempool transaction advertisement, followed by a 30-second wait. The attack requires no mining capability, no RPC access, no funds, and no special privileges. The crash can be repeated after each restart, causing persistent downtime. Linux dual-stack sockets and mempool activation are the default production state, not special preconditions. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52734
GHSA-65jj-fmw8-468q
Jul 02, 2026
zebrad has unbounded memory leak in mempool download pipeline via timeout path cancel_handles retention
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryThe mempool download pipeline's Details
The only cleanup paths for For direct PatchesThe fix preserves the WorkaroundsThere is no configuration-level workaround. Restarting the node clears the accumulated entries. Operators running in memory-constrained environments (containers with cgroup limits) may see the process killed by the OOM killer before natural recovery. ImpactGradual, unbounded memory exhaustion of a Zebra node from unauthenticated P2P traffic. The leak is monotonic (entries are never freed under normal operation) but slow (~685 KB/s per connection worst case). An attacker must sustain traffic for hours to exhaust typical server memory. The node continues operating normally until memory pressure becomes critical, at which point the OS OOM killer terminates the process or the node degrades due to swap pressure. No consensus impact, no fund loss, no on-disk corruption. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52733
GHSA-2gf8-q9rr-jq3h
Jul 02, 2026
zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip
6.5
/ 10
Medium
Network
High
None
None
Unchanged
None
High
Low
Am I affectedYou are affected if:
All default configurations are affected. The corruption persists across restarts because it is written to RocksDB. SummaryWhen DetailsThe non-finalized state provides two methods for removing blocks: When a chain fork occurs and The Patcheszebra-state 7.0.0 and zebrad 4.5.0. The fix adds subtree root cleanup to WorkaroundsThere 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 ImpactPersistent corruption of Sapling and Orchard subtree root history in the RocksDB state database. The corruption survives node restarts. Downstream consumers that rely on CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52739
GHSA-hhm7-qrv5-h4r6
Jul 02, 2026
Zebra: Repeated Non-Finalized Shielded Transaction Aborts Zebra Before Duplicate-Nullifier Rejection
5.9
/ 10
Medium
Network
High
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
All default configurations are affected. Summary
The block should be rejected with a duplicate-nullifier contextual validation error. Instead, the ordering of index updates within DetailsIn
The shielded nullifier uniqueness check at step 3 would correctly reject the duplicate transaction. But the The block transaction verifier does not run the best-chain nullifier query for block transactions — that check is gated on mempool transactions only ( There are two attack models: Model A (two attacker blocks): The attacker mines two consecutive valid-work blocks: parent B1 containing a shielded transaction T, and child B2 repeating T. This requires controlling both blocks consecutively. Model B (one attacker block after an honest block): The attacker broadcasts a shielded transaction T into the mempool. When any honest miner includes T in their block B1, the attacker only needs to mine the next child block B2 containing the same T. This requires controlling only one block immediately after an honest block that included the attacker's transaction. The attacker can broadcast a suitable shielded transaction every block until one is included by an honest miner, then attempt to mine the follow-up. Both models require the child block to repeat the shielded-only V5 transaction while the parent is still in non-finalized state. Patcheszebra-state 7.0.0 and zebrad 4.5.0. Replace the
WorkaroundsThere is no configuration-level workaround. The assert is in the non-finalized state push path, which is exercised by all block processing past the checkpoint height. ImpactA malicious block producer can crash targeted Zebra nodes. There are two attack models: In the first model, the attacker mines two consecutive valid-work blocks where the child repeats a shielded transaction from the parent. At 10% hashrate, the attacker has approximately 11.5 opportunities per day; at 5%, approximately 2.9 per day; at 1%, approximately one every 8.7 days. In the second model, the attacker broadcasts a shielded transaction into the mempool and waits for any honest miner to include it. The attacker then only needs to mine the next block containing the same transaction. This is cheaper because the attacker does not need to mine the parent block. At 10% hashrate, the attacker has approximately 14.4 single-block opportunities per day; at 5%, approximately 7.2 per day; at 1%, approximately 1.4 per day. The crash is a process abort (not recoverable within the process). The node must be restarted. Repeated attacks can keep a node down for extended periods. This is a liveness issue, not a consensus divergence: zcashd cleanly rejects the invalid child block while Zebra aborts. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52738
GHSA-w834-cf6p-9m9w
Jul 02, 2026
Zebra: Finalized address balance credit-first overflow on consensus-valid blocks
Medium
Network
Low
None
None
Am I affectedYou are affected if:
SummaryThe finalized transparent address balance writer processes all newly-created outputs (credits) before processing spent outputs (debits) within the same block. A consensus-valid block containing a long chain of same-address transparent self-spends can cause the intermediate per-address balance during the credit pass to exceed Because the triggering block is consensus-valid (zcashd accepts it), the panic recurs on restart when the node re-encounters the same block. This creates a persistent chain halt that can only be resolved by a software patch. DetailsThe finalized state writer at The code panics on the intermediate overflow via An attacker with approximately 1,100–2,100 ZEC and mining capability can construct a block that permanently halts all Zebra nodes. The attacker recovers their capital (the self-spends return funds to the same address), so the net cost is the mining effort only. PatchesPatched in Zebra 4.4.2. The fix processes credits and debits together per transaction rather than all credits then all debits, matching zcashd's approach. WorkaroundsNo workaround is available. Upgrade to Zebra 4.4.2. ImpactA single consensus-valid mined block can permanently halt all Zebra nodes on the network. The halt persists across restarts. Recovery requires deploying a patched version. Downstream consumers (light wallets, exchanges, mining infrastructure) lose service for the duration of the halt. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52737
GHSA-gvjc-3w7c-92jx
Jul 02, 2026
Zebra has sync restart poisoning from single unauthenticated peer via above-lookahead block
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryA malicious peer can answer Zebra's outbound On mainnet, each successful cycle imposes a 67-second sync restart delay. All in-flight downloads from honest peers are cancelled on each restart. DetailsThe bug is the interaction of three layers:
The attacker needs only an unauthenticated P2P connection (post-handshake), a tiny payload (one two-hash Additionally, several other pre-consensus sync-layer errors had zero misbehaviour scores even when peer-attributed. Contextual validation failures ( PatchesPatched in Zebra 4.4.2. The fix:
WorkaroundsNo configuration-level workaround is available. The attack is mitigated by having a diverse honest peer set, but cannot be prevented while the vulnerable code is running. ImpactA single unauthenticated peer can repeatedly stall a syncing Zebra node by forcing 67-second global sync restart cycles. All unrelated in-flight downloads are cancelled on each restart. The node does not crash and no state is corrupted, but sync progress is significantly degraded for the duration of the attack. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52735
GHSA-gf9r-m956-97qx
Jul 02, 2026
zebrad has consensus divergence via P2SH sigop undercount in pure-Rust disabled-opcode parser
Critical
Network
Low
None
None
Am I affectedYou are affected if:
All default configurations are affected. No feature flags, non-default settings, or special build options are required. SummaryZebra's P2SH sigop counter uses a pure-Rust code path that short-circuits on disabled opcodes (such as An attacker can exploit this without mining capability. Broadcasting transactions that spend P2SH outputs with malicious redeem scripts is sufficient; any Zebra miner who includes those transactions in a block triggers a chain split between Zebra and zcashd validators. DetailsThe P2SH sigop counter at The Rust parser in zcashd's A redeem script of PatchesPatched in Zebra 4.4.2. The fix routes the P2SH sigop counter through the same C++ FFI already used by the legacy sigop counter. WorkaroundsThere is no configuration-level workaround. All Zebra nodes validating blocks on a network shared with zcashd are affected. Upgrade as soon as the patched version is available. ImpactA chain split between Zebra and zcashd validators. The attacker broadcasts spending transactions referencing P2SH outputs whose redeem scripts contain a disabled opcode followed by The attacker does not need mining capability, RPC access, or any special privileges. The cost is the transaction fees for the funding and spending transactions. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52736
GHSA-4m69-67m6-prqp
Jul 02, 2026
Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache
High
Network
Low
None
None
DescriptionAm I affectedYou are affected if:
All default configurations are affected. SummaryZebra records a block hash in DetailsZIP-244 defines The attack flow over P2P:
A secondary variant exists where chain pruning (via PatchesPatched in Zebra 4.4.2. The fix removes stale entries from WorkaroundsThere is no complete configuration-level workaround. Reducing the node's inbound peer count ( ImpactA remote unauthenticated P2P peer can permanently stall a targeted Zebra node at a specific block height. The node diverges from the network tip; downstream consumers (lightwalletd, wallets, explorers, mining infrastructure) relying on the node see a stalled chain. The attack requires winning a propagation race: delivering the poisoned block body before honest peers deliver the canonical block. A well-positioned attacker (low-latency connection to the target, observation of new blocks from other peers) can reliably win this race. In sustained form, the attacker repeats for each new block, keeping the target permanently behind. Recovery requires restarting the node (which clears the in-memory sent-hash cache) or waiting for a reorg at the affected height (rare on the canonical chain). CreditReported independently by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-h72h-ppcx-998p
Jul 02, 2026
Zebra has pre-handshake buffer capacity reservation based on attacker-claimed body length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe P2P codec's However, Zebra's existing mitigations further constrain the practical attack surface: per-IP connection limits ( DetailsAt No legitimate Zcash handshake message ( PatchesThe fix defers large buffer reservations until after the handshake completes, or caps the per-message reservation for pre-handshake messages to what WorkaroundsNo workaround is needed. The existing per-IP rate limiting, handshake timeout, and connection limits effectively mitigate the practical impact. ImpactMinimal. The reservation affects virtual address space only, not physical memory. Zebra's existing connection-management mitigations (per-IP limits, accept rate, handshake timeout) further constrain the attack. The code path is worth cleaning up for defense-in-depth but does not produce a measurable denial-of-service effect. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52732
GHSA-4fc2-h7jh-287c
Jul 02, 2026
zebrad has mempool transaction admission denial via single-peer inbound queue saturation
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryA single unauthenticated P2P peer can monopolize all 25 inbound mempool download/verification slots ( DetailsThe mempool download/verification pipeline at
The attacker sends Two additional slot-holding techniques have been independently demonstrated: invalid-prevout transactions that park in Patcheszebrad 4.5.0 The fix adds per-peer queue accounting to the mempool download pipeline. A single peer is limited to a fraction of WorkaroundsThere is no complete configuration-level workaround. Reducing ImpactMempool transaction admission is denied for all honest peers and local RPC clients while the attack is sustained. Block validation and chain synchronization continue normally. The attacker needs only one TCP connection and minimal bandwidth (~1 KB/s of fake CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
GHSA-c8w6-x74f-vmg3
Jul 02, 2026
zebrad vulnerable to full node denial of service via crafted Sapling receiver in z_listunifiedreceivers
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe Details
At The same crate already handles this correctly in Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-443g-gwgp-49x4
Jul 02, 2026
zebrad vulnerable to getblocks/getheaders locator CPU amplification via uncapped vector length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe A single maximally-sized DetailsThe A legitimate block locator is logarithmic in chain length (approximately 30 hashes for the current ~3M-block Zcash chain). Zebra's own send-side cap is The practical impact requires significant attacker bandwidth (approximately 2 MiB per request) and multiple Sybil peers to meaningfully degrade the blocking pool, which limits real-world exploitability. PatchesPatched in Zebra 4.4.2. The fix caps WorkaroundsNo specific workaround is needed. Existing backpressure mechanisms (load shedding, sequential per-peer message processing, connection limits) constrain the practical impact. ImpactUnder sustained load from multiple Sybil peers, oversized locator vectors can occupy blocking-pool threads and degrade state-read performance. The effect is bounded by connection limits and requires significant attacker bandwidth. CreditVulnerability identified by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52731
GHSA-qv2r-v3mx-f4pf
Jul 02, 2026
zebrad has full node denial of service via non-ASCII LongPollId in getblocktemplate
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe DetailsThe Under the Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace byte-index string slicing with character-aware parsing or validate that the Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-44499
GHSA-h9hm-m2xj-4rq9
May 08, 2026
Zebra has Permanent Block Discovery Halt via Gossip Queue Saturation and Syncer Poisoning
High
Network
Low
None
None
SummaryA composite denial-of-service vulnerability in Zebra's block discovery pipeline allows an unauthenticated remote attacker to permanently halt all new block discovery on a targeted node. The attack exploits three independent weaknesses in the gossip, syncer, and download subsystems — all exercisable from a single TCP connection — to create a monotonically growing block deficit that never self-heals. SeverityCritical — This is a Denial of Service vulnerability that requires no authentication, no special privileges, and only a single peer connection. The halt is permanent: the node will never recover without operator intervention. Affected VersionsAll Zebra versions prior to 4.4.0. DescriptionZebra discovers new blocks through two complementary paths: a gossip path (peers announce blocks via The gossip path was vulnerable because there was no per-connection rate limit on The syncer backup path could be degraded by responding with empty Combining these two vectors, an attacker could suppress both block discovery paths simultaneously from a single connection, causing the node to fall permanently behind the chain tip. ImpactDenial of Service
Fixed VersionsThis issue is fixed in Zebra 4.4.0. The fix drops connections that send empty responses to MitigationUsers should upgrade to Zebra 4.4.0 or later immediately. There are no known workarounds for this issue. Immediate upgrade is the only way to protect against this attack. CreditsZebra the researcher who reported this issue through the coordinated disclosure process. Fixed in
4.4.0
References Updated May 08, 2026 · Source: OSV.dev
GHSA-pvmv-cwg8-v6c8
May 08, 2026
Zebra v4.4.0 still accepts V5 SIGHASH_SINGLE without a corresponding output
Critical
Network
Low
None
None
Consensus Divergence in V5 Transparent SIGHASH_SINGLE With No Corresponding OutputSummaryZebra failed to enforce a ZIP-244 consensus rule for V5 transparent transactions: when an input is signed with A previous fix ( SeverityCritical - 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 Affected VersionsZebra 4.4.0. DescriptionVerification of transparent transactions inherits the Bitcoin Script verification code in C++. Since it is consensus-critical, this code is called from Zebra through a foreign function interface (FFI), with a Rust callback that computes the sighash for each input being verified. ZIP-244 §S.2a marks two situations as consensus failure for V5 transparent signatures:
An attacker could exploit this by:
Zebra would verify the transaction's transparent script and accept the transaction (and any block containing it), while ImpactConsensus Failure
Fixed VersionsThis issue is fixed in Zebra 4.4.1. MitigationUsers should upgrade to Zebra 4.4.1 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. CreditsZebra thanks @sangsoo-osec, @zmanian, and @fivelittleducks for finding and reporting the issue. Fixed in
4.4.1
References Updated May 22, 2026 · Source: OSV.dev
GHSA-cwfq-rfcr-8hmp
May 07, 2026
Zebra's Transparent SIGHASH_SINGLE Handling Diverges from zcashd for Corresponding Outputs
Critical
Network
Low
None
None
|
1.1.0
unknown
Dependencies (64)
+ 56 more
Changelog
Compare changes
|
|
1.0.1
unknown
26 CVEs
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev
CVE-2026-52829
GHSA-63wg-wjjj-7cp8
Jul 02, 2026
Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryAn address normalization mismatch between the handshake path and the mempool misbehavior path causes a deterministic assertion panic when a peer connects via IPv4 to a dual-stack IPv6 listener and then triggers a mempool misbehavior penalty. The handshake path canonicalizes IPv4-mapped IPv6 addresses to plain IPv4 when storing the peer in the address book via DetailsOn Linux with The handshake path uses After the 30-second misbehavior batch flush, The attacker needs only to complete a P2P handshake over IPv4 to a dual-stack listener and advertise an invalid mempool transaction (such as a coinbase transaction). The assertion fires after the 30-second misbehavior batch flush. PatchesPatched in Zebra 4.5.0. The fix canonicalizes the address in the misbehavior update path via a new WorkaroundsConfiguring ImpactA remote unauthenticated peer can deterministically crash any synced Zebra node running the default Linux dual-stack configuration with a single invalid mempool transaction advertisement, followed by a 30-second wait. The attack requires no mining capability, no RPC access, no funds, and no special privileges. The crash can be repeated after each restart, causing persistent downtime. Linux dual-stack sockets and mempool activation are the default production state, not special preconditions. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52734
GHSA-65jj-fmw8-468q
Jul 02, 2026
zebrad has unbounded memory leak in mempool download pipeline via timeout path cancel_handles retention
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryThe mempool download pipeline's Details
The only cleanup paths for For direct PatchesThe fix preserves the WorkaroundsThere is no configuration-level workaround. Restarting the node clears the accumulated entries. Operators running in memory-constrained environments (containers with cgroup limits) may see the process killed by the OOM killer before natural recovery. ImpactGradual, unbounded memory exhaustion of a Zebra node from unauthenticated P2P traffic. The leak is monotonic (entries are never freed under normal operation) but slow (~685 KB/s per connection worst case). An attacker must sustain traffic for hours to exhaust typical server memory. The node continues operating normally until memory pressure becomes critical, at which point the OS OOM killer terminates the process or the node degrades due to swap pressure. No consensus impact, no fund loss, no on-disk corruption. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52733
GHSA-2gf8-q9rr-jq3h
Jul 02, 2026
zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip
6.5
/ 10
Medium
Network
High
None
None
Unchanged
None
High
Low
Am I affectedYou are affected if:
All default configurations are affected. The corruption persists across restarts because it is written to RocksDB. SummaryWhen DetailsThe non-finalized state provides two methods for removing blocks: When a chain fork occurs and The Patcheszebra-state 7.0.0 and zebrad 4.5.0. The fix adds subtree root cleanup to WorkaroundsThere 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 ImpactPersistent corruption of Sapling and Orchard subtree root history in the RocksDB state database. The corruption survives node restarts. Downstream consumers that rely on CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52739
GHSA-hhm7-qrv5-h4r6
Jul 02, 2026
Zebra: Repeated Non-Finalized Shielded Transaction Aborts Zebra Before Duplicate-Nullifier Rejection
5.9
/ 10
Medium
Network
High
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
All default configurations are affected. Summary
The block should be rejected with a duplicate-nullifier contextual validation error. Instead, the ordering of index updates within DetailsIn
The shielded nullifier uniqueness check at step 3 would correctly reject the duplicate transaction. But the The block transaction verifier does not run the best-chain nullifier query for block transactions — that check is gated on mempool transactions only ( There are two attack models: Model A (two attacker blocks): The attacker mines two consecutive valid-work blocks: parent B1 containing a shielded transaction T, and child B2 repeating T. This requires controlling both blocks consecutively. Model B (one attacker block after an honest block): The attacker broadcasts a shielded transaction T into the mempool. When any honest miner includes T in their block B1, the attacker only needs to mine the next child block B2 containing the same T. This requires controlling only one block immediately after an honest block that included the attacker's transaction. The attacker can broadcast a suitable shielded transaction every block until one is included by an honest miner, then attempt to mine the follow-up. Both models require the child block to repeat the shielded-only V5 transaction while the parent is still in non-finalized state. Patcheszebra-state 7.0.0 and zebrad 4.5.0. Replace the
WorkaroundsThere is no configuration-level workaround. The assert is in the non-finalized state push path, which is exercised by all block processing past the checkpoint height. ImpactA malicious block producer can crash targeted Zebra nodes. There are two attack models: In the first model, the attacker mines two consecutive valid-work blocks where the child repeats a shielded transaction from the parent. At 10% hashrate, the attacker has approximately 11.5 opportunities per day; at 5%, approximately 2.9 per day; at 1%, approximately one every 8.7 days. In the second model, the attacker broadcasts a shielded transaction into the mempool and waits for any honest miner to include it. The attacker then only needs to mine the next block containing the same transaction. This is cheaper because the attacker does not need to mine the parent block. At 10% hashrate, the attacker has approximately 14.4 single-block opportunities per day; at 5%, approximately 7.2 per day; at 1%, approximately 1.4 per day. The crash is a process abort (not recoverable within the process). The node must be restarted. Repeated attacks can keep a node down for extended periods. This is a liveness issue, not a consensus divergence: zcashd cleanly rejects the invalid child block while Zebra aborts. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52738
GHSA-w834-cf6p-9m9w
Jul 02, 2026
Zebra: Finalized address balance credit-first overflow on consensus-valid blocks
Medium
Network
Low
None
None
Am I affectedYou are affected if:
SummaryThe finalized transparent address balance writer processes all newly-created outputs (credits) before processing spent outputs (debits) within the same block. A consensus-valid block containing a long chain of same-address transparent self-spends can cause the intermediate per-address balance during the credit pass to exceed Because the triggering block is consensus-valid (zcashd accepts it), the panic recurs on restart when the node re-encounters the same block. This creates a persistent chain halt that can only be resolved by a software patch. DetailsThe finalized state writer at The code panics on the intermediate overflow via An attacker with approximately 1,100–2,100 ZEC and mining capability can construct a block that permanently halts all Zebra nodes. The attacker recovers their capital (the self-spends return funds to the same address), so the net cost is the mining effort only. PatchesPatched in Zebra 4.4.2. The fix processes credits and debits together per transaction rather than all credits then all debits, matching zcashd's approach. WorkaroundsNo workaround is available. Upgrade to Zebra 4.4.2. ImpactA single consensus-valid mined block can permanently halt all Zebra nodes on the network. The halt persists across restarts. Recovery requires deploying a patched version. Downstream consumers (light wallets, exchanges, mining infrastructure) lose service for the duration of the halt. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52737
GHSA-gvjc-3w7c-92jx
Jul 02, 2026
Zebra has sync restart poisoning from single unauthenticated peer via above-lookahead block
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryA malicious peer can answer Zebra's outbound On mainnet, each successful cycle imposes a 67-second sync restart delay. All in-flight downloads from honest peers are cancelled on each restart. DetailsThe bug is the interaction of three layers:
The attacker needs only an unauthenticated P2P connection (post-handshake), a tiny payload (one two-hash Additionally, several other pre-consensus sync-layer errors had zero misbehaviour scores even when peer-attributed. Contextual validation failures ( PatchesPatched in Zebra 4.4.2. The fix:
WorkaroundsNo configuration-level workaround is available. The attack is mitigated by having a diverse honest peer set, but cannot be prevented while the vulnerable code is running. ImpactA single unauthenticated peer can repeatedly stall a syncing Zebra node by forcing 67-second global sync restart cycles. All unrelated in-flight downloads are cancelled on each restart. The node does not crash and no state is corrupted, but sync progress is significantly degraded for the duration of the attack. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52735
GHSA-gf9r-m956-97qx
Jul 02, 2026
zebrad has consensus divergence via P2SH sigop undercount in pure-Rust disabled-opcode parser
Critical
Network
Low
None
None
Am I affectedYou are affected if:
All default configurations are affected. No feature flags, non-default settings, or special build options are required. SummaryZebra's P2SH sigop counter uses a pure-Rust code path that short-circuits on disabled opcodes (such as An attacker can exploit this without mining capability. Broadcasting transactions that spend P2SH outputs with malicious redeem scripts is sufficient; any Zebra miner who includes those transactions in a block triggers a chain split between Zebra and zcashd validators. DetailsThe P2SH sigop counter at The Rust parser in zcashd's A redeem script of PatchesPatched in Zebra 4.4.2. The fix routes the P2SH sigop counter through the same C++ FFI already used by the legacy sigop counter. WorkaroundsThere is no configuration-level workaround. All Zebra nodes validating blocks on a network shared with zcashd are affected. Upgrade as soon as the patched version is available. ImpactA chain split between Zebra and zcashd validators. The attacker broadcasts spending transactions referencing P2SH outputs whose redeem scripts contain a disabled opcode followed by The attacker does not need mining capability, RPC access, or any special privileges. The cost is the transaction fees for the funding and spending transactions. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52736
GHSA-4m69-67m6-prqp
Jul 02, 2026
Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache
High
Network
Low
None
None
DescriptionAm I affectedYou are affected if:
All default configurations are affected. SummaryZebra records a block hash in DetailsZIP-244 defines The attack flow over P2P:
A secondary variant exists where chain pruning (via PatchesPatched in Zebra 4.4.2. The fix removes stale entries from WorkaroundsThere is no complete configuration-level workaround. Reducing the node's inbound peer count ( ImpactA remote unauthenticated P2P peer can permanently stall a targeted Zebra node at a specific block height. The node diverges from the network tip; downstream consumers (lightwalletd, wallets, explorers, mining infrastructure) relying on the node see a stalled chain. The attack requires winning a propagation race: delivering the poisoned block body before honest peers deliver the canonical block. A well-positioned attacker (low-latency connection to the target, observation of new blocks from other peers) can reliably win this race. In sustained form, the attacker repeats for each new block, keeping the target permanently behind. Recovery requires restarting the node (which clears the in-memory sent-hash cache) or waiting for a reorg at the affected height (rare on the canonical chain). CreditReported independently by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-h72h-ppcx-998p
Jul 02, 2026
Zebra has pre-handshake buffer capacity reservation based on attacker-claimed body length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe P2P codec's However, Zebra's existing mitigations further constrain the practical attack surface: per-IP connection limits ( DetailsAt No legitimate Zcash handshake message ( PatchesThe fix defers large buffer reservations until after the handshake completes, or caps the per-message reservation for pre-handshake messages to what WorkaroundsNo workaround is needed. The existing per-IP rate limiting, handshake timeout, and connection limits effectively mitigate the practical impact. ImpactMinimal. The reservation affects virtual address space only, not physical memory. Zebra's existing connection-management mitigations (per-IP limits, accept rate, handshake timeout) further constrain the attack. The code path is worth cleaning up for defense-in-depth but does not produce a measurable denial-of-service effect. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52732
GHSA-4fc2-h7jh-287c
Jul 02, 2026
zebrad has mempool transaction admission denial via single-peer inbound queue saturation
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryA single unauthenticated P2P peer can monopolize all 25 inbound mempool download/verification slots ( DetailsThe mempool download/verification pipeline at
The attacker sends Two additional slot-holding techniques have been independently demonstrated: invalid-prevout transactions that park in Patcheszebrad 4.5.0 The fix adds per-peer queue accounting to the mempool download pipeline. A single peer is limited to a fraction of WorkaroundsThere is no complete configuration-level workaround. Reducing ImpactMempool transaction admission is denied for all honest peers and local RPC clients while the attack is sustained. Block validation and chain synchronization continue normally. The attacker needs only one TCP connection and minimal bandwidth (~1 KB/s of fake CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
GHSA-c8w6-x74f-vmg3
Jul 02, 2026
zebrad vulnerable to full node denial of service via crafted Sapling receiver in z_listunifiedreceivers
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe Details
At The same crate already handles this correctly in Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-443g-gwgp-49x4
Jul 02, 2026
zebrad vulnerable to getblocks/getheaders locator CPU amplification via uncapped vector length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe A single maximally-sized DetailsThe A legitimate block locator is logarithmic in chain length (approximately 30 hashes for the current ~3M-block Zcash chain). Zebra's own send-side cap is The practical impact requires significant attacker bandwidth (approximately 2 MiB per request) and multiple Sybil peers to meaningfully degrade the blocking pool, which limits real-world exploitability. PatchesPatched in Zebra 4.4.2. The fix caps WorkaroundsNo specific workaround is needed. Existing backpressure mechanisms (load shedding, sequential per-peer message processing, connection limits) constrain the practical impact. ImpactUnder sustained load from multiple Sybil peers, oversized locator vectors can occupy blocking-pool threads and degrade state-read performance. The effect is bounded by connection limits and requires significant attacker bandwidth. CreditVulnerability identified by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52731
GHSA-qv2r-v3mx-f4pf
Jul 02, 2026
zebrad has full node denial of service via non-ASCII LongPollId in getblocktemplate
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe DetailsThe Under the Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace byte-index string slicing with character-aware parsing or validate that the Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-44499
GHSA-h9hm-m2xj-4rq9
May 08, 2026
Zebra has Permanent Block Discovery Halt via Gossip Queue Saturation and Syncer Poisoning
High
Network
Low
None
None
SummaryA composite denial-of-service vulnerability in Zebra's block discovery pipeline allows an unauthenticated remote attacker to permanently halt all new block discovery on a targeted node. The attack exploits three independent weaknesses in the gossip, syncer, and download subsystems — all exercisable from a single TCP connection — to create a monotonically growing block deficit that never self-heals. SeverityCritical — This is a Denial of Service vulnerability that requires no authentication, no special privileges, and only a single peer connection. The halt is permanent: the node will never recover without operator intervention. Affected VersionsAll Zebra versions prior to 4.4.0. DescriptionZebra discovers new blocks through two complementary paths: a gossip path (peers announce blocks via The gossip path was vulnerable because there was no per-connection rate limit on The syncer backup path could be degraded by responding with empty Combining these two vectors, an attacker could suppress both block discovery paths simultaneously from a single connection, causing the node to fall permanently behind the chain tip. ImpactDenial of Service
Fixed VersionsThis issue is fixed in Zebra 4.4.0. The fix drops connections that send empty responses to MitigationUsers should upgrade to Zebra 4.4.0 or later immediately. There are no known workarounds for this issue. Immediate upgrade is the only way to protect against this attack. CreditsZebra the researcher who reported this issue through the coordinated disclosure process. Fixed in
4.4.0
References Updated May 08, 2026 · Source: OSV.dev
GHSA-pvmv-cwg8-v6c8
May 08, 2026
Zebra v4.4.0 still accepts V5 SIGHASH_SINGLE without a corresponding output
Critical
Network
Low
None
None
Consensus Divergence in V5 Transparent SIGHASH_SINGLE With No Corresponding OutputSummaryZebra failed to enforce a ZIP-244 consensus rule for V5 transparent transactions: when an input is signed with A previous fix ( SeverityCritical - 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 Affected VersionsZebra 4.4.0. DescriptionVerification of transparent transactions inherits the Bitcoin Script verification code in C++. Since it is consensus-critical, this code is called from Zebra through a foreign function interface (FFI), with a Rust callback that computes the sighash for each input being verified. ZIP-244 §S.2a marks two situations as consensus failure for V5 transparent signatures:
An attacker could exploit this by:
Zebra would verify the transaction's transparent script and accept the transaction (and any block containing it), while ImpactConsensus Failure
Fixed VersionsThis issue is fixed in Zebra 4.4.1. MitigationUsers should upgrade to Zebra 4.4.1 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. CreditsZebra thanks @sangsoo-osec, @zmanian, and @fivelittleducks for finding and reporting the issue. Fixed in
4.4.1
References Updated May 22, 2026 · Source: OSV.dev
GHSA-cwfq-rfcr-8hmp
May 07, 2026
Zebra's Transparent SIGHASH_SINGLE Handling Diverges from zcashd for Corresponding Outputs
Critical
Network
Low
None
None
|
1.0.1
unknown
Dependencies (64)
+ 56 more
Changelog
Compare changes
|
|
1.0.0
unknown
26 CVEs
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev
CVE-2026-52829
GHSA-63wg-wjjj-7cp8
Jul 02, 2026
Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryAn address normalization mismatch between the handshake path and the mempool misbehavior path causes a deterministic assertion panic when a peer connects via IPv4 to a dual-stack IPv6 listener and then triggers a mempool misbehavior penalty. The handshake path canonicalizes IPv4-mapped IPv6 addresses to plain IPv4 when storing the peer in the address book via DetailsOn Linux with The handshake path uses After the 30-second misbehavior batch flush, The attacker needs only to complete a P2P handshake over IPv4 to a dual-stack listener and advertise an invalid mempool transaction (such as a coinbase transaction). The assertion fires after the 30-second misbehavior batch flush. PatchesPatched in Zebra 4.5.0. The fix canonicalizes the address in the misbehavior update path via a new WorkaroundsConfiguring ImpactA remote unauthenticated peer can deterministically crash any synced Zebra node running the default Linux dual-stack configuration with a single invalid mempool transaction advertisement, followed by a 30-second wait. The attack requires no mining capability, no RPC access, no funds, and no special privileges. The crash can be repeated after each restart, causing persistent downtime. Linux dual-stack sockets and mempool activation are the default production state, not special preconditions. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52734
GHSA-65jj-fmw8-468q
Jul 02, 2026
zebrad has unbounded memory leak in mempool download pipeline via timeout path cancel_handles retention
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryThe mempool download pipeline's Details
The only cleanup paths for For direct PatchesThe fix preserves the WorkaroundsThere is no configuration-level workaround. Restarting the node clears the accumulated entries. Operators running in memory-constrained environments (containers with cgroup limits) may see the process killed by the OOM killer before natural recovery. ImpactGradual, unbounded memory exhaustion of a Zebra node from unauthenticated P2P traffic. The leak is monotonic (entries are never freed under normal operation) but slow (~685 KB/s per connection worst case). An attacker must sustain traffic for hours to exhaust typical server memory. The node continues operating normally until memory pressure becomes critical, at which point the OS OOM killer terminates the process or the node degrades due to swap pressure. No consensus impact, no fund loss, no on-disk corruption. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52733
GHSA-2gf8-q9rr-jq3h
Jul 02, 2026
zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip
6.5
/ 10
Medium
Network
High
None
None
Unchanged
None
High
Low
Am I affectedYou are affected if:
All default configurations are affected. The corruption persists across restarts because it is written to RocksDB. SummaryWhen DetailsThe non-finalized state provides two methods for removing blocks: When a chain fork occurs and The Patcheszebra-state 7.0.0 and zebrad 4.5.0. The fix adds subtree root cleanup to WorkaroundsThere 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 ImpactPersistent corruption of Sapling and Orchard subtree root history in the RocksDB state database. The corruption survives node restarts. Downstream consumers that rely on CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52739
GHSA-hhm7-qrv5-h4r6
Jul 02, 2026
Zebra: Repeated Non-Finalized Shielded Transaction Aborts Zebra Before Duplicate-Nullifier Rejection
5.9
/ 10
Medium
Network
High
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
All default configurations are affected. Summary
The block should be rejected with a duplicate-nullifier contextual validation error. Instead, the ordering of index updates within DetailsIn
The shielded nullifier uniqueness check at step 3 would correctly reject the duplicate transaction. But the The block transaction verifier does not run the best-chain nullifier query for block transactions — that check is gated on mempool transactions only ( There are two attack models: Model A (two attacker blocks): The attacker mines two consecutive valid-work blocks: parent B1 containing a shielded transaction T, and child B2 repeating T. This requires controlling both blocks consecutively. Model B (one attacker block after an honest block): The attacker broadcasts a shielded transaction T into the mempool. When any honest miner includes T in their block B1, the attacker only needs to mine the next child block B2 containing the same T. This requires controlling only one block immediately after an honest block that included the attacker's transaction. The attacker can broadcast a suitable shielded transaction every block until one is included by an honest miner, then attempt to mine the follow-up. Both models require the child block to repeat the shielded-only V5 transaction while the parent is still in non-finalized state. Patcheszebra-state 7.0.0 and zebrad 4.5.0. Replace the
WorkaroundsThere is no configuration-level workaround. The assert is in the non-finalized state push path, which is exercised by all block processing past the checkpoint height. ImpactA malicious block producer can crash targeted Zebra nodes. There are two attack models: In the first model, the attacker mines two consecutive valid-work blocks where the child repeats a shielded transaction from the parent. At 10% hashrate, the attacker has approximately 11.5 opportunities per day; at 5%, approximately 2.9 per day; at 1%, approximately one every 8.7 days. In the second model, the attacker broadcasts a shielded transaction into the mempool and waits for any honest miner to include it. The attacker then only needs to mine the next block containing the same transaction. This is cheaper because the attacker does not need to mine the parent block. At 10% hashrate, the attacker has approximately 14.4 single-block opportunities per day; at 5%, approximately 7.2 per day; at 1%, approximately 1.4 per day. The crash is a process abort (not recoverable within the process). The node must be restarted. Repeated attacks can keep a node down for extended periods. This is a liveness issue, not a consensus divergence: zcashd cleanly rejects the invalid child block while Zebra aborts. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52738
GHSA-w834-cf6p-9m9w
Jul 02, 2026
Zebra: Finalized address balance credit-first overflow on consensus-valid blocks
Medium
Network
Low
None
None
Am I affectedYou are affected if:
SummaryThe finalized transparent address balance writer processes all newly-created outputs (credits) before processing spent outputs (debits) within the same block. A consensus-valid block containing a long chain of same-address transparent self-spends can cause the intermediate per-address balance during the credit pass to exceed Because the triggering block is consensus-valid (zcashd accepts it), the panic recurs on restart when the node re-encounters the same block. This creates a persistent chain halt that can only be resolved by a software patch. DetailsThe finalized state writer at The code panics on the intermediate overflow via An attacker with approximately 1,100–2,100 ZEC and mining capability can construct a block that permanently halts all Zebra nodes. The attacker recovers their capital (the self-spends return funds to the same address), so the net cost is the mining effort only. PatchesPatched in Zebra 4.4.2. The fix processes credits and debits together per transaction rather than all credits then all debits, matching zcashd's approach. WorkaroundsNo workaround is available. Upgrade to Zebra 4.4.2. ImpactA single consensus-valid mined block can permanently halt all Zebra nodes on the network. The halt persists across restarts. Recovery requires deploying a patched version. Downstream consumers (light wallets, exchanges, mining infrastructure) lose service for the duration of the halt. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52737
GHSA-gvjc-3w7c-92jx
Jul 02, 2026
Zebra has sync restart poisoning from single unauthenticated peer via above-lookahead block
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryA malicious peer can answer Zebra's outbound On mainnet, each successful cycle imposes a 67-second sync restart delay. All in-flight downloads from honest peers are cancelled on each restart. DetailsThe bug is the interaction of three layers:
The attacker needs only an unauthenticated P2P connection (post-handshake), a tiny payload (one two-hash Additionally, several other pre-consensus sync-layer errors had zero misbehaviour scores even when peer-attributed. Contextual validation failures ( PatchesPatched in Zebra 4.4.2. The fix:
WorkaroundsNo configuration-level workaround is available. The attack is mitigated by having a diverse honest peer set, but cannot be prevented while the vulnerable code is running. ImpactA single unauthenticated peer can repeatedly stall a syncing Zebra node by forcing 67-second global sync restart cycles. All unrelated in-flight downloads are cancelled on each restart. The node does not crash and no state is corrupted, but sync progress is significantly degraded for the duration of the attack. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52735
GHSA-gf9r-m956-97qx
Jul 02, 2026
zebrad has consensus divergence via P2SH sigop undercount in pure-Rust disabled-opcode parser
Critical
Network
Low
None
None
Am I affectedYou are affected if:
All default configurations are affected. No feature flags, non-default settings, or special build options are required. SummaryZebra's P2SH sigop counter uses a pure-Rust code path that short-circuits on disabled opcodes (such as An attacker can exploit this without mining capability. Broadcasting transactions that spend P2SH outputs with malicious redeem scripts is sufficient; any Zebra miner who includes those transactions in a block triggers a chain split between Zebra and zcashd validators. DetailsThe P2SH sigop counter at The Rust parser in zcashd's A redeem script of PatchesPatched in Zebra 4.4.2. The fix routes the P2SH sigop counter through the same C++ FFI already used by the legacy sigop counter. WorkaroundsThere is no configuration-level workaround. All Zebra nodes validating blocks on a network shared with zcashd are affected. Upgrade as soon as the patched version is available. ImpactA chain split between Zebra and zcashd validators. The attacker broadcasts spending transactions referencing P2SH outputs whose redeem scripts contain a disabled opcode followed by The attacker does not need mining capability, RPC access, or any special privileges. The cost is the transaction fees for the funding and spending transactions. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52736
GHSA-4m69-67m6-prqp
Jul 02, 2026
Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache
High
Network
Low
None
None
DescriptionAm I affectedYou are affected if:
All default configurations are affected. SummaryZebra records a block hash in DetailsZIP-244 defines The attack flow over P2P:
A secondary variant exists where chain pruning (via PatchesPatched in Zebra 4.4.2. The fix removes stale entries from WorkaroundsThere is no complete configuration-level workaround. Reducing the node's inbound peer count ( ImpactA remote unauthenticated P2P peer can permanently stall a targeted Zebra node at a specific block height. The node diverges from the network tip; downstream consumers (lightwalletd, wallets, explorers, mining infrastructure) relying on the node see a stalled chain. The attack requires winning a propagation race: delivering the poisoned block body before honest peers deliver the canonical block. A well-positioned attacker (low-latency connection to the target, observation of new blocks from other peers) can reliably win this race. In sustained form, the attacker repeats for each new block, keeping the target permanently behind. Recovery requires restarting the node (which clears the in-memory sent-hash cache) or waiting for a reorg at the affected height (rare on the canonical chain). CreditReported independently by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-h72h-ppcx-998p
Jul 02, 2026
Zebra has pre-handshake buffer capacity reservation based on attacker-claimed body length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe P2P codec's However, Zebra's existing mitigations further constrain the practical attack surface: per-IP connection limits ( DetailsAt No legitimate Zcash handshake message ( PatchesThe fix defers large buffer reservations until after the handshake completes, or caps the per-message reservation for pre-handshake messages to what WorkaroundsNo workaround is needed. The existing per-IP rate limiting, handshake timeout, and connection limits effectively mitigate the practical impact. ImpactMinimal. The reservation affects virtual address space only, not physical memory. Zebra's existing connection-management mitigations (per-IP limits, accept rate, handshake timeout) further constrain the attack. The code path is worth cleaning up for defense-in-depth but does not produce a measurable denial-of-service effect. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52732
GHSA-4fc2-h7jh-287c
Jul 02, 2026
zebrad has mempool transaction admission denial via single-peer inbound queue saturation
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryA single unauthenticated P2P peer can monopolize all 25 inbound mempool download/verification slots ( DetailsThe mempool download/verification pipeline at
The attacker sends Two additional slot-holding techniques have been independently demonstrated: invalid-prevout transactions that park in Patcheszebrad 4.5.0 The fix adds per-peer queue accounting to the mempool download pipeline. A single peer is limited to a fraction of WorkaroundsThere is no complete configuration-level workaround. Reducing ImpactMempool transaction admission is denied for all honest peers and local RPC clients while the attack is sustained. Block validation and chain synchronization continue normally. The attacker needs only one TCP connection and minimal bandwidth (~1 KB/s of fake CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
GHSA-c8w6-x74f-vmg3
Jul 02, 2026
zebrad vulnerable to full node denial of service via crafted Sapling receiver in z_listunifiedreceivers
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe Details
At The same crate already handles this correctly in Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-443g-gwgp-49x4
Jul 02, 2026
zebrad vulnerable to getblocks/getheaders locator CPU amplification via uncapped vector length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe A single maximally-sized DetailsThe A legitimate block locator is logarithmic in chain length (approximately 30 hashes for the current ~3M-block Zcash chain). Zebra's own send-side cap is The practical impact requires significant attacker bandwidth (approximately 2 MiB per request) and multiple Sybil peers to meaningfully degrade the blocking pool, which limits real-world exploitability. PatchesPatched in Zebra 4.4.2. The fix caps WorkaroundsNo specific workaround is needed. Existing backpressure mechanisms (load shedding, sequential per-peer message processing, connection limits) constrain the practical impact. ImpactUnder sustained load from multiple Sybil peers, oversized locator vectors can occupy blocking-pool threads and degrade state-read performance. The effect is bounded by connection limits and requires significant attacker bandwidth. CreditVulnerability identified by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52731
GHSA-qv2r-v3mx-f4pf
Jul 02, 2026
zebrad has full node denial of service via non-ASCII LongPollId in getblocktemplate
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe DetailsThe Under the Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace byte-index string slicing with character-aware parsing or validate that the Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-44499
GHSA-h9hm-m2xj-4rq9
May 08, 2026
Zebra has Permanent Block Discovery Halt via Gossip Queue Saturation and Syncer Poisoning
High
Network
Low
None
None
SummaryA composite denial-of-service vulnerability in Zebra's block discovery pipeline allows an unauthenticated remote attacker to permanently halt all new block discovery on a targeted node. The attack exploits three independent weaknesses in the gossip, syncer, and download subsystems — all exercisable from a single TCP connection — to create a monotonically growing block deficit that never self-heals. SeverityCritical — This is a Denial of Service vulnerability that requires no authentication, no special privileges, and only a single peer connection. The halt is permanent: the node will never recover without operator intervention. Affected VersionsAll Zebra versions prior to 4.4.0. DescriptionZebra discovers new blocks through two complementary paths: a gossip path (peers announce blocks via The gossip path was vulnerable because there was no per-connection rate limit on The syncer backup path could be degraded by responding with empty Combining these two vectors, an attacker could suppress both block discovery paths simultaneously from a single connection, causing the node to fall permanently behind the chain tip. ImpactDenial of Service
Fixed VersionsThis issue is fixed in Zebra 4.4.0. The fix drops connections that send empty responses to MitigationUsers should upgrade to Zebra 4.4.0 or later immediately. There are no known workarounds for this issue. Immediate upgrade is the only way to protect against this attack. CreditsZebra the researcher who reported this issue through the coordinated disclosure process. Fixed in
4.4.0
References Updated May 08, 2026 · Source: OSV.dev
GHSA-pvmv-cwg8-v6c8
May 08, 2026
Zebra v4.4.0 still accepts V5 SIGHASH_SINGLE without a corresponding output
Critical
Network
Low
None
None
Consensus Divergence in V5 Transparent SIGHASH_SINGLE With No Corresponding OutputSummaryZebra failed to enforce a ZIP-244 consensus rule for V5 transparent transactions: when an input is signed with A previous fix ( SeverityCritical - 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 Affected VersionsZebra 4.4.0. DescriptionVerification of transparent transactions inherits the Bitcoin Script verification code in C++. Since it is consensus-critical, this code is called from Zebra through a foreign function interface (FFI), with a Rust callback that computes the sighash for each input being verified. ZIP-244 §S.2a marks two situations as consensus failure for V5 transparent signatures:
An attacker could exploit this by:
Zebra would verify the transaction's transparent script and accept the transaction (and any block containing it), while ImpactConsensus Failure
Fixed VersionsThis issue is fixed in Zebra 4.4.1. MitigationUsers should upgrade to Zebra 4.4.1 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. CreditsZebra thanks @sangsoo-osec, @zmanian, and @fivelittleducks for finding and reporting the issue. Fixed in
4.4.1
References Updated May 22, 2026 · Source: OSV.dev
GHSA-cwfq-rfcr-8hmp
May 07, 2026
Zebra's Transparent SIGHASH_SINGLE Handling Diverges from zcashd for Corresponding Outputs
Critical
Network
Low
None
None
|
1.0.0
unknown
Dependencies (64)
+ 56 more
Changelog
Compare changes
|
|
1.0.0-rc.9
unknown
26 CVEs
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev
CVE-2026-52829
GHSA-63wg-wjjj-7cp8
Jul 02, 2026
Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryAn address normalization mismatch between the handshake path and the mempool misbehavior path causes a deterministic assertion panic when a peer connects via IPv4 to a dual-stack IPv6 listener and then triggers a mempool misbehavior penalty. The handshake path canonicalizes IPv4-mapped IPv6 addresses to plain IPv4 when storing the peer in the address book via DetailsOn Linux with The handshake path uses After the 30-second misbehavior batch flush, The attacker needs only to complete a P2P handshake over IPv4 to a dual-stack listener and advertise an invalid mempool transaction (such as a coinbase transaction). The assertion fires after the 30-second misbehavior batch flush. PatchesPatched in Zebra 4.5.0. The fix canonicalizes the address in the misbehavior update path via a new WorkaroundsConfiguring ImpactA remote unauthenticated peer can deterministically crash any synced Zebra node running the default Linux dual-stack configuration with a single invalid mempool transaction advertisement, followed by a 30-second wait. The attack requires no mining capability, no RPC access, no funds, and no special privileges. The crash can be repeated after each restart, causing persistent downtime. Linux dual-stack sockets and mempool activation are the default production state, not special preconditions. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52734
GHSA-65jj-fmw8-468q
Jul 02, 2026
zebrad has unbounded memory leak in mempool download pipeline via timeout path cancel_handles retention
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryThe mempool download pipeline's Details
The only cleanup paths for For direct PatchesThe fix preserves the WorkaroundsThere is no configuration-level workaround. Restarting the node clears the accumulated entries. Operators running in memory-constrained environments (containers with cgroup limits) may see the process killed by the OOM killer before natural recovery. ImpactGradual, unbounded memory exhaustion of a Zebra node from unauthenticated P2P traffic. The leak is monotonic (entries are never freed under normal operation) but slow (~685 KB/s per connection worst case). An attacker must sustain traffic for hours to exhaust typical server memory. The node continues operating normally until memory pressure becomes critical, at which point the OS OOM killer terminates the process or the node degrades due to swap pressure. No consensus impact, no fund loss, no on-disk corruption. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52733
GHSA-2gf8-q9rr-jq3h
Jul 02, 2026
zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip
6.5
/ 10
Medium
Network
High
None
None
Unchanged
None
High
Low
Am I affectedYou are affected if:
All default configurations are affected. The corruption persists across restarts because it is written to RocksDB. SummaryWhen DetailsThe non-finalized state provides two methods for removing blocks: When a chain fork occurs and The Patcheszebra-state 7.0.0 and zebrad 4.5.0. The fix adds subtree root cleanup to WorkaroundsThere 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 ImpactPersistent corruption of Sapling and Orchard subtree root history in the RocksDB state database. The corruption survives node restarts. Downstream consumers that rely on CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52739
GHSA-hhm7-qrv5-h4r6
Jul 02, 2026
Zebra: Repeated Non-Finalized Shielded Transaction Aborts Zebra Before Duplicate-Nullifier Rejection
5.9
/ 10
Medium
Network
High
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
All default configurations are affected. Summary
The block should be rejected with a duplicate-nullifier contextual validation error. Instead, the ordering of index updates within DetailsIn
The shielded nullifier uniqueness check at step 3 would correctly reject the duplicate transaction. But the The block transaction verifier does not run the best-chain nullifier query for block transactions — that check is gated on mempool transactions only ( There are two attack models: Model A (two attacker blocks): The attacker mines two consecutive valid-work blocks: parent B1 containing a shielded transaction T, and child B2 repeating T. This requires controlling both blocks consecutively. Model B (one attacker block after an honest block): The attacker broadcasts a shielded transaction T into the mempool. When any honest miner includes T in their block B1, the attacker only needs to mine the next child block B2 containing the same T. This requires controlling only one block immediately after an honest block that included the attacker's transaction. The attacker can broadcast a suitable shielded transaction every block until one is included by an honest miner, then attempt to mine the follow-up. Both models require the child block to repeat the shielded-only V5 transaction while the parent is still in non-finalized state. Patcheszebra-state 7.0.0 and zebrad 4.5.0. Replace the
WorkaroundsThere is no configuration-level workaround. The assert is in the non-finalized state push path, which is exercised by all block processing past the checkpoint height. ImpactA malicious block producer can crash targeted Zebra nodes. There are two attack models: In the first model, the attacker mines two consecutive valid-work blocks where the child repeats a shielded transaction from the parent. At 10% hashrate, the attacker has approximately 11.5 opportunities per day; at 5%, approximately 2.9 per day; at 1%, approximately one every 8.7 days. In the second model, the attacker broadcasts a shielded transaction into the mempool and waits for any honest miner to include it. The attacker then only needs to mine the next block containing the same transaction. This is cheaper because the attacker does not need to mine the parent block. At 10% hashrate, the attacker has approximately 14.4 single-block opportunities per day; at 5%, approximately 7.2 per day; at 1%, approximately 1.4 per day. The crash is a process abort (not recoverable within the process). The node must be restarted. Repeated attacks can keep a node down for extended periods. This is a liveness issue, not a consensus divergence: zcashd cleanly rejects the invalid child block while Zebra aborts. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52738
GHSA-w834-cf6p-9m9w
Jul 02, 2026
Zebra: Finalized address balance credit-first overflow on consensus-valid blocks
Medium
Network
Low
None
None
Am I affectedYou are affected if:
SummaryThe finalized transparent address balance writer processes all newly-created outputs (credits) before processing spent outputs (debits) within the same block. A consensus-valid block containing a long chain of same-address transparent self-spends can cause the intermediate per-address balance during the credit pass to exceed Because the triggering block is consensus-valid (zcashd accepts it), the panic recurs on restart when the node re-encounters the same block. This creates a persistent chain halt that can only be resolved by a software patch. DetailsThe finalized state writer at The code panics on the intermediate overflow via An attacker with approximately 1,100–2,100 ZEC and mining capability can construct a block that permanently halts all Zebra nodes. The attacker recovers their capital (the self-spends return funds to the same address), so the net cost is the mining effort only. PatchesPatched in Zebra 4.4.2. The fix processes credits and debits together per transaction rather than all credits then all debits, matching zcashd's approach. WorkaroundsNo workaround is available. Upgrade to Zebra 4.4.2. ImpactA single consensus-valid mined block can permanently halt all Zebra nodes on the network. The halt persists across restarts. Recovery requires deploying a patched version. Downstream consumers (light wallets, exchanges, mining infrastructure) lose service for the duration of the halt. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52737
GHSA-gvjc-3w7c-92jx
Jul 02, 2026
Zebra has sync restart poisoning from single unauthenticated peer via above-lookahead block
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryA malicious peer can answer Zebra's outbound On mainnet, each successful cycle imposes a 67-second sync restart delay. All in-flight downloads from honest peers are cancelled on each restart. DetailsThe bug is the interaction of three layers:
The attacker needs only an unauthenticated P2P connection (post-handshake), a tiny payload (one two-hash Additionally, several other pre-consensus sync-layer errors had zero misbehaviour scores even when peer-attributed. Contextual validation failures ( PatchesPatched in Zebra 4.4.2. The fix:
WorkaroundsNo configuration-level workaround is available. The attack is mitigated by having a diverse honest peer set, but cannot be prevented while the vulnerable code is running. ImpactA single unauthenticated peer can repeatedly stall a syncing Zebra node by forcing 67-second global sync restart cycles. All unrelated in-flight downloads are cancelled on each restart. The node does not crash and no state is corrupted, but sync progress is significantly degraded for the duration of the attack. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52735
GHSA-gf9r-m956-97qx
Jul 02, 2026
zebrad has consensus divergence via P2SH sigop undercount in pure-Rust disabled-opcode parser
Critical
Network
Low
None
None
Am I affectedYou are affected if:
All default configurations are affected. No feature flags, non-default settings, or special build options are required. SummaryZebra's P2SH sigop counter uses a pure-Rust code path that short-circuits on disabled opcodes (such as An attacker can exploit this without mining capability. Broadcasting transactions that spend P2SH outputs with malicious redeem scripts is sufficient; any Zebra miner who includes those transactions in a block triggers a chain split between Zebra and zcashd validators. DetailsThe P2SH sigop counter at The Rust parser in zcashd's A redeem script of PatchesPatched in Zebra 4.4.2. The fix routes the P2SH sigop counter through the same C++ FFI already used by the legacy sigop counter. WorkaroundsThere is no configuration-level workaround. All Zebra nodes validating blocks on a network shared with zcashd are affected. Upgrade as soon as the patched version is available. ImpactA chain split between Zebra and zcashd validators. The attacker broadcasts spending transactions referencing P2SH outputs whose redeem scripts contain a disabled opcode followed by The attacker does not need mining capability, RPC access, or any special privileges. The cost is the transaction fees for the funding and spending transactions. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52736
GHSA-4m69-67m6-prqp
Jul 02, 2026
Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache
High
Network
Low
None
None
DescriptionAm I affectedYou are affected if:
All default configurations are affected. SummaryZebra records a block hash in DetailsZIP-244 defines The attack flow over P2P:
A secondary variant exists where chain pruning (via PatchesPatched in Zebra 4.4.2. The fix removes stale entries from WorkaroundsThere is no complete configuration-level workaround. Reducing the node's inbound peer count ( ImpactA remote unauthenticated P2P peer can permanently stall a targeted Zebra node at a specific block height. The node diverges from the network tip; downstream consumers (lightwalletd, wallets, explorers, mining infrastructure) relying on the node see a stalled chain. The attack requires winning a propagation race: delivering the poisoned block body before honest peers deliver the canonical block. A well-positioned attacker (low-latency connection to the target, observation of new blocks from other peers) can reliably win this race. In sustained form, the attacker repeats for each new block, keeping the target permanently behind. Recovery requires restarting the node (which clears the in-memory sent-hash cache) or waiting for a reorg at the affected height (rare on the canonical chain). CreditReported independently by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-h72h-ppcx-998p
Jul 02, 2026
Zebra has pre-handshake buffer capacity reservation based on attacker-claimed body length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe P2P codec's However, Zebra's existing mitigations further constrain the practical attack surface: per-IP connection limits ( DetailsAt No legitimate Zcash handshake message ( PatchesThe fix defers large buffer reservations until after the handshake completes, or caps the per-message reservation for pre-handshake messages to what WorkaroundsNo workaround is needed. The existing per-IP rate limiting, handshake timeout, and connection limits effectively mitigate the practical impact. ImpactMinimal. The reservation affects virtual address space only, not physical memory. Zebra's existing connection-management mitigations (per-IP limits, accept rate, handshake timeout) further constrain the attack. The code path is worth cleaning up for defense-in-depth but does not produce a measurable denial-of-service effect. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52732
GHSA-4fc2-h7jh-287c
Jul 02, 2026
zebrad has mempool transaction admission denial via single-peer inbound queue saturation
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryA single unauthenticated P2P peer can monopolize all 25 inbound mempool download/verification slots ( DetailsThe mempool download/verification pipeline at
The attacker sends Two additional slot-holding techniques have been independently demonstrated: invalid-prevout transactions that park in Patcheszebrad 4.5.0 The fix adds per-peer queue accounting to the mempool download pipeline. A single peer is limited to a fraction of WorkaroundsThere is no complete configuration-level workaround. Reducing ImpactMempool transaction admission is denied for all honest peers and local RPC clients while the attack is sustained. Block validation and chain synchronization continue normally. The attacker needs only one TCP connection and minimal bandwidth (~1 KB/s of fake CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
GHSA-c8w6-x74f-vmg3
Jul 02, 2026
zebrad vulnerable to full node denial of service via crafted Sapling receiver in z_listunifiedreceivers
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe Details
At The same crate already handles this correctly in Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-443g-gwgp-49x4
Jul 02, 2026
zebrad vulnerable to getblocks/getheaders locator CPU amplification via uncapped vector length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe A single maximally-sized DetailsThe A legitimate block locator is logarithmic in chain length (approximately 30 hashes for the current ~3M-block Zcash chain). Zebra's own send-side cap is The practical impact requires significant attacker bandwidth (approximately 2 MiB per request) and multiple Sybil peers to meaningfully degrade the blocking pool, which limits real-world exploitability. PatchesPatched in Zebra 4.4.2. The fix caps WorkaroundsNo specific workaround is needed. Existing backpressure mechanisms (load shedding, sequential per-peer message processing, connection limits) constrain the practical impact. ImpactUnder sustained load from multiple Sybil peers, oversized locator vectors can occupy blocking-pool threads and degrade state-read performance. The effect is bounded by connection limits and requires significant attacker bandwidth. CreditVulnerability identified by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52731
GHSA-qv2r-v3mx-f4pf
Jul 02, 2026
zebrad has full node denial of service via non-ASCII LongPollId in getblocktemplate
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe DetailsThe Under the Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace byte-index string slicing with character-aware parsing or validate that the Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-44499
GHSA-h9hm-m2xj-4rq9
May 08, 2026
Zebra has Permanent Block Discovery Halt via Gossip Queue Saturation and Syncer Poisoning
High
Network
Low
None
None
SummaryA composite denial-of-service vulnerability in Zebra's block discovery pipeline allows an unauthenticated remote attacker to permanently halt all new block discovery on a targeted node. The attack exploits three independent weaknesses in the gossip, syncer, and download subsystems — all exercisable from a single TCP connection — to create a monotonically growing block deficit that never self-heals. SeverityCritical — This is a Denial of Service vulnerability that requires no authentication, no special privileges, and only a single peer connection. The halt is permanent: the node will never recover without operator intervention. Affected VersionsAll Zebra versions prior to 4.4.0. DescriptionZebra discovers new blocks through two complementary paths: a gossip path (peers announce blocks via The gossip path was vulnerable because there was no per-connection rate limit on The syncer backup path could be degraded by responding with empty Combining these two vectors, an attacker could suppress both block discovery paths simultaneously from a single connection, causing the node to fall permanently behind the chain tip. ImpactDenial of Service
Fixed VersionsThis issue is fixed in Zebra 4.4.0. The fix drops connections that send empty responses to MitigationUsers should upgrade to Zebra 4.4.0 or later immediately. There are no known workarounds for this issue. Immediate upgrade is the only way to protect against this attack. CreditsZebra the researcher who reported this issue through the coordinated disclosure process. Fixed in
4.4.0
References Updated May 08, 2026 · Source: OSV.dev
GHSA-pvmv-cwg8-v6c8
May 08, 2026
Zebra v4.4.0 still accepts V5 SIGHASH_SINGLE without a corresponding output
Critical
Network
Low
None
None
Consensus Divergence in V5 Transparent SIGHASH_SINGLE With No Corresponding OutputSummaryZebra failed to enforce a ZIP-244 consensus rule for V5 transparent transactions: when an input is signed with A previous fix ( SeverityCritical - 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 Affected VersionsZebra 4.4.0. DescriptionVerification of transparent transactions inherits the Bitcoin Script verification code in C++. Since it is consensus-critical, this code is called from Zebra through a foreign function interface (FFI), with a Rust callback that computes the sighash for each input being verified. ZIP-244 §S.2a marks two situations as consensus failure for V5 transparent signatures:
An attacker could exploit this by:
Zebra would verify the transaction's transparent script and accept the transaction (and any block containing it), while ImpactConsensus Failure
Fixed VersionsThis issue is fixed in Zebra 4.4.1. MitigationUsers should upgrade to Zebra 4.4.1 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. CreditsZebra thanks @sangsoo-osec, @zmanian, and @fivelittleducks for finding and reporting the issue. Fixed in
4.4.1
References Updated May 22, 2026 · Source: OSV.dev
GHSA-cwfq-rfcr-8hmp
May 07, 2026
Zebra's Transparent SIGHASH_SINGLE Handling Diverges from zcashd for Corresponding Outputs
Critical
Network
Low
None
None
|
1.0.0-rc.9
unknown
Dependencies (64)
+ 56 more
Changelog
Compare changes
|
|
0.0.0-placeholder.0
unknown
26 CVEs
CVE-2026-54496
GHSA-ww9q-8r59-xv46
Jul 06, 2026
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
9.3
/ 10
Critical
Network
Low
None
None
Changed
None
High
Low
SummaryA soundness vulnerability in the variable-base scalar multiplication gadget of The main practical consequence is that an adversary could have performed a double-spend within the Orchard pool, resulting in a balance violation: the same note could be spent multiple times, each time revealing a distinct, valid-looking nullifier. The total ZEC supply was protected by Zcash's turnstile mechanism, which bounds value flowing out of any pool, so unbounded inflation of the overall supply was not possible; the exposure was inflation of value within the Orchard pool up to the turnstile-enforced limit. Exploiting the vulnerability via a double-spend is undetectable on-chain. Exploitation only requires setting private circuit inputs to chosen values, and nullifiers produced by a double-spend are indistinguishable from honest nullifiers, so the zero-knowledge property hides any signature of the attack. Alternatively, an adversary could (before the fix) have stolen funds by forging a spend authorization for an existing note. To do so they would have to know the note plaintext, which in practice they might obtain by knowing the corresponding incoming viewing key. For example, this could be used to bypass the protection provided by holding spending keys on a hardware wallet, if the linked software wallet were compromised. This form of exploitation cannot be detected via the turnstile (which might be a motivation to exploit the vulnerability in this way rather than via balance violation). It can be detected by the legitimate holder of stolen funds being unable to spend them, or by seeing the note's nullifier on-chain — but this cannot necessarily be distinguished from compromise of the spending key by other means. The vulnerability has existed since the Orchard pool was introduced in the NU5 network upgrade (activated May 31, 2022). There is no evidence it was exploited prior to remediation. Note that use of the vulnerability, either for balance violation or for theft of funds, would need to have occurred before it was remediated. Theft would be in principle detectable from that point (since the real nullifier would appear on-chain). Balance violation would not be detectable at the point of exploitation. Root causeThe defect is in the double-and-add implementation of variable-base scalar multiplication in The base point is fed into the incomplete-addition stage via
( The existing Why this enables a double-spendThe Orchard Action statement constrains the nullifier of the spent note to be derived from the correct nullifier key nk, which in turn is bound to the correct incoming viewing key ivk, via ivk = Commitivkrivk(Extractℙ(akℙ), nk). The diversified-address-integrity check pkd = [ivk] gd is what normally guarantees the prover used the correct ivk —and hence the correct nk— for the note. With that check bypassable:
Why this enables theftThe spend validating key, akℙ (essentially equivalent to ak), is also constrained via ivk = Commitivkrivk(Extractℙ(akℙ), nk). As above, the diversified-address-integrity check is what normally guarantees the prover used the correct ivk —and hence the correct ak— for the note. With that check bypassable:
Impact
Affected versions
PatchesThe circuit-level fix replaces the first-iteration Because remediating a zero-knowledge circuit changes the pinned verifying key, the network-level fix required a hard fork (NU6.2). NU6.2 re-enables Orchard with the corrected circuit and routes Orchard proofs to a per-circuit verifying key (
Workarounds / mitigationsThere is no client-side workaround for the underlying soundness flaw short of the circuit fix. The deployed interim mitigation (Zebra 4.5.3 / equivalent) was a soft fork that rejected all Orchard-containing transactions and blocks, fully neutralizing exploitation until NU6.2 activated. Downstream projects that depend on the affected crates should:
Indicators / detectionExploitation produces no distinguishing on-chain signature. The turnstile mechanism, which tracks total ZEC across all value pools, provides a ground-truth supply check and confirmed the total supply remained intact. Heuristic analysis of Orchard transaction arity (e.g. patterns of duplicate-then-consolidate behavior) is possible but inconclusive against normal shielded-activity variance. Timeline (MDT)| Date / Time | Event | |---|---| | 2022-05-31 11:50 | Vulnerable NU5 upgrade activates (bug introduced) | | 2026-05-29 (evening) | Vulnerability discovered during a protocol audit | | 2026-05-29 23:53 | Responsibly disclosed to ZODL core engineers | | 2026-05-30 06:30 | Disclosure acknowledged by ZODL | | 2026-06-01 (~21:30) | Emergency soft-fork mitigation activated (block 3,363,426) | | 2026-06-03 00:05 EDT | NU6.2 hard fork activates, Orchard re-enabled with fix (block 3,364,600) | CreditsDiscovered and responsibly disclosed by Taylor Hornby, independent security researcher, during a protocol audit conducted on behalf of Shielded Labs. Analysis and remediation was led by ZODL engineers Jack Grigg, Daira-Emma Hopwood, and Kris Nuttycombe, with Zebra patch work by Arya Solhi (Zcash Foundation). Resources
Fixed in
5.0.0
References Updated Jul 06, 2026 · Source: OSV.dev
CVE-2026-52829
GHSA-63wg-wjjj-7cp8
Jul 02, 2026
Zebra Address Book Aborted by IPv4-Mapped Mempool Misbehavior Update
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryAn address normalization mismatch between the handshake path and the mempool misbehavior path causes a deterministic assertion panic when a peer connects via IPv4 to a dual-stack IPv6 listener and then triggers a mempool misbehavior penalty. The handshake path canonicalizes IPv4-mapped IPv6 addresses to plain IPv4 when storing the peer in the address book via DetailsOn Linux with The handshake path uses After the 30-second misbehavior batch flush, The attacker needs only to complete a P2P handshake over IPv4 to a dual-stack listener and advertise an invalid mempool transaction (such as a coinbase transaction). The assertion fires after the 30-second misbehavior batch flush. PatchesPatched in Zebra 4.5.0. The fix canonicalizes the address in the misbehavior update path via a new WorkaroundsConfiguring ImpactA remote unauthenticated peer can deterministically crash any synced Zebra node running the default Linux dual-stack configuration with a single invalid mempool transaction advertisement, followed by a 30-second wait. The attack requires no mining capability, no RPC access, no funds, and no special privileges. The crash can be repeated after each restart, causing persistent downtime. Linux dual-stack sockets and mempool activation are the default production state, not special preconditions. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52734
GHSA-65jj-fmw8-468q
Jul 02, 2026
zebrad has unbounded memory leak in mempool download pipeline via timeout path cancel_handles retention
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryThe mempool download pipeline's Details
The only cleanup paths for For direct PatchesThe fix preserves the WorkaroundsThere is no configuration-level workaround. Restarting the node clears the accumulated entries. Operators running in memory-constrained environments (containers with cgroup limits) may see the process killed by the OOM killer before natural recovery. ImpactGradual, unbounded memory exhaustion of a Zebra node from unauthenticated P2P traffic. The leak is monotonic (entries are never freed under normal operation) but slow (~685 KB/s per connection worst case). An attacker must sustain traffic for hours to exhaust typical server memory. The node continues operating normally until memory pressure becomes critical, at which point the OS OOM killer terminates the process or the node degrades due to swap pressure. No consensus impact, no fund loss, no on-disk corruption. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52733
GHSA-2gf8-q9rr-jq3h
Jul 02, 2026
zebrad has persistent on-disk corruption of Sapling/Orchard subtree roots after chain fork via pop_tip
6.5
/ 10
Medium
Network
High
None
None
Unchanged
None
High
Low
Am I affectedYou are affected if:
All default configurations are affected. The corruption persists across restarts because it is written to RocksDB. SummaryWhen DetailsThe non-finalized state provides two methods for removing blocks: When a chain fork occurs and The Patcheszebra-state 7.0.0 and zebrad 4.5.0. The fix adds subtree root cleanup to WorkaroundsThere 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 ImpactPersistent corruption of Sapling and Orchard subtree root history in the RocksDB state database. The corruption survives node restarts. Downstream consumers that rely on CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52739
GHSA-hhm7-qrv5-h4r6
Jul 02, 2026
Zebra: Repeated Non-Finalized Shielded Transaction Aborts Zebra Before Duplicate-Nullifier Rejection
5.9
/ 10
Medium
Network
High
None
None
Unchanged
None
None
High
Am I affectedYou are affected if:
All default configurations are affected. Summary
The block should be rejected with a duplicate-nullifier contextual validation error. Instead, the ordering of index updates within DetailsIn
The shielded nullifier uniqueness check at step 3 would correctly reject the duplicate transaction. But the The block transaction verifier does not run the best-chain nullifier query for block transactions — that check is gated on mempool transactions only ( There are two attack models: Model A (two attacker blocks): The attacker mines two consecutive valid-work blocks: parent B1 containing a shielded transaction T, and child B2 repeating T. This requires controlling both blocks consecutively. Model B (one attacker block after an honest block): The attacker broadcasts a shielded transaction T into the mempool. When any honest miner includes T in their block B1, the attacker only needs to mine the next child block B2 containing the same T. This requires controlling only one block immediately after an honest block that included the attacker's transaction. The attacker can broadcast a suitable shielded transaction every block until one is included by an honest miner, then attempt to mine the follow-up. Both models require the child block to repeat the shielded-only V5 transaction while the parent is still in non-finalized state. Patcheszebra-state 7.0.0 and zebrad 4.5.0. Replace the
WorkaroundsThere is no configuration-level workaround. The assert is in the non-finalized state push path, which is exercised by all block processing past the checkpoint height. ImpactA malicious block producer can crash targeted Zebra nodes. There are two attack models: In the first model, the attacker mines two consecutive valid-work blocks where the child repeats a shielded transaction from the parent. At 10% hashrate, the attacker has approximately 11.5 opportunities per day; at 5%, approximately 2.9 per day; at 1%, approximately one every 8.7 days. In the second model, the attacker broadcasts a shielded transaction into the mempool and waits for any honest miner to include it. The attacker then only needs to mine the next block containing the same transaction. This is cheaper because the attacker does not need to mine the parent block. At 10% hashrate, the attacker has approximately 14.4 single-block opportunities per day; at 5%, approximately 7.2 per day; at 1%, approximately 1.4 per day. The crash is a process abort (not recoverable within the process). The node must be restarted. Repeated attacks can keep a node down for extended periods. This is a liveness issue, not a consensus divergence: zcashd cleanly rejects the invalid child block while Zebra aborts. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52738
GHSA-w834-cf6p-9m9w
Jul 02, 2026
Zebra: Finalized address balance credit-first overflow on consensus-valid blocks
Medium
Network
Low
None
None
Am I affectedYou are affected if:
SummaryThe finalized transparent address balance writer processes all newly-created outputs (credits) before processing spent outputs (debits) within the same block. A consensus-valid block containing a long chain of same-address transparent self-spends can cause the intermediate per-address balance during the credit pass to exceed Because the triggering block is consensus-valid (zcashd accepts it), the panic recurs on restart when the node re-encounters the same block. This creates a persistent chain halt that can only be resolved by a software patch. DetailsThe finalized state writer at The code panics on the intermediate overflow via An attacker with approximately 1,100–2,100 ZEC and mining capability can construct a block that permanently halts all Zebra nodes. The attacker recovers their capital (the self-spends return funds to the same address), so the net cost is the mining effort only. PatchesPatched in Zebra 4.4.2. The fix processes credits and debits together per transaction rather than all credits then all debits, matching zcashd's approach. WorkaroundsNo workaround is available. Upgrade to Zebra 4.4.2. ImpactA single consensus-valid mined block can permanently halt all Zebra nodes on the network. The halt persists across restarts. Recovery requires deploying a patched version. Downstream consumers (light wallets, exchanges, mining infrastructure) lose service for the duration of the halt. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52737
GHSA-gvjc-3w7c-92jx
Jul 02, 2026
Zebra has sync restart poisoning from single unauthenticated peer via above-lookahead block
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryA malicious peer can answer Zebra's outbound On mainnet, each successful cycle imposes a 67-second sync restart delay. All in-flight downloads from honest peers are cancelled on each restart. DetailsThe bug is the interaction of three layers:
The attacker needs only an unauthenticated P2P connection (post-handshake), a tiny payload (one two-hash Additionally, several other pre-consensus sync-layer errors had zero misbehaviour scores even when peer-attributed. Contextual validation failures ( PatchesPatched in Zebra 4.4.2. The fix:
WorkaroundsNo configuration-level workaround is available. The attack is mitigated by having a diverse honest peer set, but cannot be prevented while the vulnerable code is running. ImpactA single unauthenticated peer can repeatedly stall a syncing Zebra node by forcing 67-second global sync restart cycles. All unrelated in-flight downloads are cancelled on each restart. The node does not crash and no state is corrupted, but sync progress is significantly degraded for the duration of the attack. CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52735
GHSA-gf9r-m956-97qx
Jul 02, 2026
zebrad has consensus divergence via P2SH sigop undercount in pure-Rust disabled-opcode parser
Critical
Network
Low
None
None
Am I affectedYou are affected if:
All default configurations are affected. No feature flags, non-default settings, or special build options are required. SummaryZebra's P2SH sigop counter uses a pure-Rust code path that short-circuits on disabled opcodes (such as An attacker can exploit this without mining capability. Broadcasting transactions that spend P2SH outputs with malicious redeem scripts is sufficient; any Zebra miner who includes those transactions in a block triggers a chain split between Zebra and zcashd validators. DetailsThe P2SH sigop counter at The Rust parser in zcashd's A redeem script of PatchesPatched in Zebra 4.4.2. The fix routes the P2SH sigop counter through the same C++ FFI already used by the legacy sigop counter. WorkaroundsThere is no configuration-level workaround. All Zebra nodes validating blocks on a network shared with zcashd are affected. Upgrade as soon as the patched version is available. ImpactA chain split between Zebra and zcashd validators. The attacker broadcasts spending transactions referencing P2SH outputs whose redeem scripts contain a disabled opcode followed by The attacker does not need mining capability, RPC access, or any special privileges. The cost is the transaction fees for the funding and spending transactions. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52736
GHSA-4m69-67m6-prqp
Jul 02, 2026
Zebra has block suppression via NU5 same-header body poisoning of sent-hash cache
High
Network
Low
None
None
DescriptionAm I affectedYou are affected if:
All default configurations are affected. SummaryZebra records a block hash in DetailsZIP-244 defines The attack flow over P2P:
A secondary variant exists where chain pruning (via PatchesPatched in Zebra 4.4.2. The fix removes stale entries from WorkaroundsThere is no complete configuration-level workaround. Reducing the node's inbound peer count ( ImpactA remote unauthenticated P2P peer can permanently stall a targeted Zebra node at a specific block height. The node diverges from the network tip; downstream consumers (lightwalletd, wallets, explorers, mining infrastructure) relying on the node see a stalled chain. The attack requires winning a propagation race: delivering the poisoned block body before honest peers deliver the canonical block. A well-positioned attacker (low-latency connection to the target, observation of new blocks from other peers) can reliably win this race. In sustained form, the attacker repeats for each new block, keeping the target permanently behind. Recovery requires restarting the node (which clears the in-memory sent-hash cache) or waiting for a reorg at the affected height (rare on the canonical chain). CreditReported independently by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-h72h-ppcx-998p
Jul 02, 2026
Zebra has pre-handshake buffer capacity reservation based on attacker-claimed body length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe P2P codec's However, Zebra's existing mitigations further constrain the practical attack surface: per-IP connection limits ( DetailsAt No legitimate Zcash handshake message ( PatchesThe fix defers large buffer reservations until after the handshake completes, or caps the per-message reservation for pre-handshake messages to what WorkaroundsNo workaround is needed. The existing per-IP rate limiting, handshake timeout, and connection limits effectively mitigate the practical impact. ImpactMinimal. The reservation affects virtual address space only, not physical memory. Zebra's existing connection-management mitigations (per-IP limits, accept rate, handshake timeout) further constrain the attack. The code path is worth cleaning up for defense-in-depth but does not produce a measurable denial-of-service effect. CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52732
GHSA-4fc2-h7jh-287c
Jul 02, 2026
zebrad has mempool transaction admission denial via single-peer inbound queue saturation
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
All default configurations are affected. SummaryA single unauthenticated P2P peer can monopolize all 25 inbound mempool download/verification slots ( DetailsThe mempool download/verification pipeline at
The attacker sends Two additional slot-holding techniques have been independently demonstrated: invalid-prevout transactions that park in Patcheszebrad 4.5.0 The fix adds per-peer queue accounting to the mempool download pipeline. A single peer is limited to a fraction of WorkaroundsThere is no complete configuration-level workaround. Reducing ImpactMempool transaction admission is denied for all honest peers and local RPC clients while the attack is sustained. Block validation and chain synchronization continue normally. The attacker needs only one TCP connection and minimal bandwidth (~1 KB/s of fake CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
GHSA-c8w6-x74f-vmg3
Jul 02, 2026
zebrad vulnerable to full node denial of service via crafted Sapling receiver in z_listunifiedreceivers
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe Details
At The same crate already handles this correctly in Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References
Updated Jul 02, 2026 · Source: OSV.dev
GHSA-443g-gwgp-49x4
Jul 02, 2026
zebrad vulnerable to getblocks/getheaders locator CPU amplification via uncapped vector length
3.7
/ 10
Low
Network
High
None
None
Unchanged
None
None
Low
Am I affectedYou are affected if:
SummaryThe A single maximally-sized DetailsThe A legitimate block locator is logarithmic in chain length (approximately 30 hashes for the current ~3M-block Zcash chain). Zebra's own send-side cap is The practical impact requires significant attacker bandwidth (approximately 2 MiB per request) and multiple Sybil peers to meaningfully degrade the blocking pool, which limits real-world exploitability. PatchesPatched in Zebra 4.4.2. The fix caps WorkaroundsNo specific workaround is needed. Existing backpressure mechanisms (load shedding, sequential per-peer message processing, connection limits) constrain the practical impact. ImpactUnder sustained load from multiple Sybil peers, oversized locator vectors can occupy blocking-pool threads and degrade state-read performance. The effect is bounded by connection limits and requires significant attacker bandwidth. CreditVulnerability identified by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-52731
GHSA-qv2r-v3mx-f4pf
Jul 02, 2026
zebrad has full node denial of service via non-ASCII LongPollId in getblocktemplate
6.5
/ 10
Medium
Network
Low
Low
None
Unchanged
None
None
High
Am I affectedYou are affected if:
SummaryThe DetailsThe Under the Patcheszebra-rpc 8.0.0 and zebrad 4.5.0. Replace byte-index string slicing with character-aware parsing or validate that the Workarounds
ImpactA single authenticated RPC request terminates the CreditReported by Fixed in
4.5.0
References Updated Jul 02, 2026 · Source: OSV.dev
CVE-2026-44499
GHSA-h9hm-m2xj-4rq9
May 08, 2026
Zebra has Permanent Block Discovery Halt via Gossip Queue Saturation and Syncer Poisoning
High
Network
Low
None
None
SummaryA composite denial-of-service vulnerability in Zebra's block discovery pipeline allows an unauthenticated remote attacker to permanently halt all new block discovery on a targeted node. The attack exploits three independent weaknesses in the gossip, syncer, and download subsystems — all exercisable from a single TCP connection — to create a monotonically growing block deficit that never self-heals. SeverityCritical — This is a Denial of Service vulnerability that requires no authentication, no special privileges, and only a single peer connection. The halt is permanent: the node will never recover without operator intervention. Affected VersionsAll Zebra versions prior to 4.4.0. DescriptionZebra discovers new blocks through two complementary paths: a gossip path (peers announce blocks via The gossip path was vulnerable because there was no per-connection rate limit on The syncer backup path could be degraded by responding with empty Combining these two vectors, an attacker could suppress both block discovery paths simultaneously from a single connection, causing the node to fall permanently behind the chain tip. ImpactDenial of Service
Fixed VersionsThis issue is fixed in Zebra 4.4.0. The fix drops connections that send empty responses to MitigationUsers should upgrade to Zebra 4.4.0 or later immediately. There are no known workarounds for this issue. Immediate upgrade is the only way to protect against this attack. CreditsZebra the researcher who reported this issue through the coordinated disclosure process. Fixed in
4.4.0
References Updated May 08, 2026 · Source: OSV.dev
GHSA-pvmv-cwg8-v6c8
May 08, 2026
Zebra v4.4.0 still accepts V5 SIGHASH_SINGLE without a corresponding output
Critical
Network
Low
None
None
Consensus Divergence in V5 Transparent SIGHASH_SINGLE With No Corresponding OutputSummaryZebra failed to enforce a ZIP-244 consensus rule for V5 transparent transactions: when an input is signed with A previous fix ( SeverityCritical - 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 Affected VersionsZebra 4.4.0. DescriptionVerification of transparent transactions inherits the Bitcoin Script verification code in C++. Since it is consensus-critical, this code is called from Zebra through a foreign function interface (FFI), with a Rust callback that computes the sighash for each input being verified. ZIP-244 §S.2a marks two situations as consensus failure for V5 transparent signatures:
An attacker could exploit this by:
Zebra would verify the transaction's transparent script and accept the transaction (and any block containing it), while ImpactConsensus Failure
Fixed VersionsThis issue is fixed in Zebra 4.4.1. MitigationUsers should upgrade to Zebra 4.4.1 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. CreditsZebra thanks @sangsoo-osec, @zmanian, and @fivelittleducks for finding and reporting the issue. Fixed in
4.4.1
References Updated May 22, 2026 · Source: OSV.dev
GHSA-cwfq-rfcr-8hmp
May 07, 2026
Zebra's Transparent SIGHASH_SINGLE Handling Diverges from zcashd for Corresponding Outputs
Critical
Network
Low
None
None
|