Skip to main content
Press slash or control plus K to focus the search. Use the arrow keys to navigate results and press enter to open a threat.
Reconnecting to live updates…

Zebra rpc: zebrad vulnerable to full node denial of service via crafted Sapling receiver in z_listunifiedreceivers

0
Medium
Published: 07/02/2026 (07/02/2026, 19:37:58 UTC)
Source: GCVE Database
Product: zebra-rpc

Description

### Am I affected You are affected if: 1. You run `zebrad` up to and including `v4.4.1`. 2. Your `zebrad.toml` sets `rpc.listen_addr` to a TCP address (RPC server is enabled). 3. An attacker can authenticate to the RPC endpoint. With the default `enable_cookie_auth = true`, this requires the attacker to read the `.cookie` file (typically local access). With `enable_cookie_auth = false`, any network client reaching the RPC port can trigger it. ### Summary The `z_listunifiedreceivers` RPC handler panics when processing a structurally valid Unified Address whose Sapling receiver carries 43 bytes that fail cryptographic validation (`sapling_crypto::PaymentAddress::from_bytes` returns `None` for non-subgroup Jubjub points). The handler calls `.expect("using data already decoded as valid")` on the fallible result. Because Zebra's release profile sets `panic = "abort"`, the panic terminates the entire node process, not just the RPC task. ### Details `zcash_address::unified::Encoding::decode` validates only the structural envelope of a Unified Address (F4Jumble, bech32m, typecode ordering, 43-byte length for Sapling). It does not validate that the embedded `pk_d` is a valid Jubjub subgroup point or that the diversifier produces a valid `g_d` preimage. At `zebra-rpc/src/methods.rs:2893`, the handler calls `Address::try_from_sapling(network, data)`, which delegates to `sapling_crypto::PaymentAddress::from_bytes`. When `from_bytes` returns `None` (most random 32-byte strings fail the subgroup check), the `.expect()` fires and the process aborts. The same crate already handles this correctly in `try_from_unified` at `zebra-chain/src/primitives/address.rs:99-110`, which returns `Err` when `from_bytes` fails. The vulnerable code path bypasses this validated route. ### Patches zebra-rpc 8.0.0 and zebrad 4.5.0. Replace `.expect()` with `.map_err(|e| ErrorObject::owned(...))` for proper error propagation, or route through the existing `try_from_unified` path which already handles this case correctly. ### Workarounds - Disable the RPC server by removing `rpc.listen_addr` from `zebrad.toml`. - Ensure `enable_cookie_auth = true` (the default) and restrict filesystem access to the `.cookie` file. - Place a reverse proxy in front of the RPC port that rejects `z_listunifiedreceivers` calls with untrusted address parameters. ### Impact A single authenticated RPC request terminates the `zebrad` process. The attack is repeatable on restart (the same request triggers the same abort), allowing an attacker to keep the node down indefinitely until the request is filtered upstream. Operators using `lightwalletd` backends, Zaino indexers, or mining pool infrastructure that forward RPC calls to `zebrad` may be exposed if the forwarding path passes through `z_listunifiedreceivers`. ### Credit Reported by `@robustfengbin` via a private GitHub Security Advisory submission.

CVSS v3.1

Score 6.5medium

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

Affected software

crates.ioghsa
zebra-rpc
Affected versions
<8.0.0
crates.ioghsa
zebrad
Affected versions
<4.5.0

Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.

AI-Powered Analysis

Machine-generated threat intelligence

AILast updated: 07/02/2026, 23:11:53 UTC

Technical Analysis

The z_listunifiedreceivers RPC handler in zebrad versions up to and including v4.4.1 improperly handles structurally valid but cryptographically invalid Sapling receivers embedded in Unified Addresses. Specifically, the handler calls a function that returns None for invalid Jubjub subgroup points but uses .expect() on this result, causing a panic and process abort when invalid data is encountered. Because zebrad is compiled with panic = "abort", this terminates the entire node process, not just the RPC task. The vulnerability requires RPC authentication, which by default requires local access to the .cookie file, but can be exposed remotely if cookie authentication is disabled. The issue is fixed in zebra-rpc 8.0.0 and zebrad 4.5.0 by replacing the panic with proper error propagation.

Potential Impact

An authenticated attacker can send a single crafted RPC request to the z_listunifiedreceivers handler that causes the zebrad node process to abort immediately, resulting in a denial of service. The attack can be repeated indefinitely, preventing the node from operating until the malicious requests are blocked or the RPC server is disabled. This impacts node availability but does not affect confidentiality or integrity.

Mitigation Recommendations

A fix is available in zebrad 4.5.0 and zebra-rpc 8.0.0 that properly handles invalid Sapling receiver data without panicking. Until patched, operators should disable the RPC server by removing rpc.listen_addr from zebrad.toml, ensure enable_cookie_auth is true and restrict access to the .cookie file, or place a reverse proxy in front of the RPC port to filter out malicious z_listunifiedreceivers calls. These mitigations prevent unauthenticated or unauthorized triggering of the vulnerability.

Pro Console: star threats, build custom feeds, automate alerts via Slack, email & webhooks.Upgrade to Pro

Technical Details

Gcve Source
db.gcve.eu
Osv Id
GHSA-c8w6-x74f-vmg3
Osv Schema Version
1.4.0
Aliases
[]
Ecosystems
["crates.io"]
Database Specific Severity
MODERATE
Cvss Version
3.1

Threat ID: 6a46ecb727e9c7971943ca24

Added to database: 07/02/2026, 22:56:55 UTC

Last enriched: 07/02/2026, 23:11:53 UTC

Last updated: 07/31/2026, 12:27:30 UTC

Views: 48

Community Reviews

0 reviews

Crowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.

Sort by
Loading community insights…

Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.

Actions

PRO

Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.

Please log in to the Console to use AI analysis features.

Need more coverage?

Upgrade to Pro Console for AI refresh and higher limits.

For incident response and remediation, OffSeq services can help resolve threats faster.

Latest Threats

Breach by OffSeqOFFSEQFRIENDS — 25% OFF

Check if your credentials are on the dark web

Instant breach scanning across billions of leaked records. Free tier available.

Scan now
OffSeq TrainingCredly Certified

Lead Pen Test Professional

Technical5-day eLearningPECB Accredited
View courses