Apr 19, 2026·6 min read·9 visits
An unauthenticated remote attacker can crash a vulnerable Zebra node by broadcasting a crafted Orchard transaction where the `rk` field is the identity point. This triggers an `.unwrap()` panic in the underlying `orchard` crate, leading to immediate process termination.
The Zebra Zcash node implementation is vulnerable to a critical remote denial-of-service attack due to a logic error in Orchard transaction verification. An unhandled exception occurs when processing the randomized validating key (`rk`) if it is set to the Pallas curve identity point.
Zebra is a prominent Rust-based implementation of the Zcash node protocol developed by the Zcash Foundation. The node handles complex cryptographic validations for shielded transactions, specifically utilizing the Orchard protocol. Orchard transactions require rigorous verification of zero-knowledge proofs to maintain ledger integrity and privacy.
Vulnerability GHSA-452v-w3gx-72wg represents a critical denial-of-service condition affecting all Zebra node versions prior to 4.3.1. The flaw resides in the handling of the randomized validating key, denoted as rk, within the Orchard bundle of a Zcash transaction. When a malicious transaction supplies a specific mathematical edge case for this key, it triggers an unhandled exception in the underlying cryptography libraries.
The vulnerability is classified as CWE-248: Uncaught Exception. Exploitation requires no authentication, user interaction, or elevated privileges, allowing an attacker to remotely crash nodes by broadcasting a single crafted transaction over the peer-to-peer network.
The root cause originates in the orchard Rust crate, specifically within the circuits.rs file responsible for verifying Orchard signatures. The randomized validating key rk is represented mathematically as an elliptic curve point on the Pallas curve. The specification originally allowed the identity point, a theoretical zero value in the elliptic curve group, to be passed as a valid rk value.
To perform signature verification, the node must convert the rk point into its affine coordinates, denoted as (x, y). The identity point is the point at infinity and fundamentally lacks finite affine coordinates. When the extraction function is called on the identity point, it correctly returns an Option type containing None.
A logic error exists where the developer assumed the extraction function would always return Some coordinate pair. The code appends .unwrap() to the extraction call. In Rust, calling .unwrap() on a None value immediately triggers a fatal panic, terminating the entire node process.
This panic bypasses all graceful error handling mechanisms within the Zebra node. Because the transaction validation occurs on the main or heavily relied-upon worker threads, the panic results in instantaneous node termination.
The vulnerable pattern in the orchard crate involves blind coordinate extraction. The exact flawed logic operates on the Pallas curve point structure, executing an unwrap operation on an expected Option or Result type.
// Representative vulnerable logic pattern in orchard crate
let rk_point = parse_point(transaction.rk);
let (x, y) = rk_point.to_affine().unwrap(); // Panics if rk_point is identity
verify_signature(x, y, signature);Addressing the issue by modifying the orchard crate directly posed coordination risks and potential early disclosure. The Zebra development team opted to implement the fix at the transaction parsing boundary. The patched code intercepts the transaction during deserialization and validates the rk value before it ever reaches the orchard crate.
The patch introduces an explicit check against the Pallas curve identity point. If the rk value evaluates to the identity point, the Zebra node rejects the transaction outright with a defined error state.
// Patched parsing logic in zebra-chain
let rk_point = parse_point(transaction.rk);
if bool::from(rk_point.is_identity()) {
return Err(TransactionError::InvalidOrchardRk);
}
// Proceed to safe verificationAn attacker exploits this vulnerability by constructing a malicious Zcash transaction containing an Orchard shielded bundle. The attacker sets the rk field within this bundle to the encoded representation of the Pallas curve identity point. The remainder of the transaction does not need to be mathematically sound, provided it bypasses initial pre-flight checks.
Once constructed, the attacker broadcasts the transaction to the Zcash peer-to-peer network. The attack requires no special network position, as standard node gossip protocols will propagate the malicious transaction to vulnerable Zebra nodes.
When a vulnerable node receives the transaction into its mempool, it begins the verification process. The parsing phase passes the malformed rk to the orchard crate, triggering the unwrap panic and immediately crashing the node.
A variant of this attack involves mining the malicious transaction into a block using a custom or non-vulnerable mining setup. If the transaction is embedded in the blockchain, any vulnerable Zebra node attempting to sync that block will deterministically crash. This creates a persistent denial-of-service condition, rendering the node permanently incapable of syncing past that specific block height.
The denial-of-service impact is critical, carrying a CVSS 4.0 score of 8.7. The vulnerability allows remote attackers to unconditionally terminate the zebrad process on demand. Because the exploit relies solely on standard network communication, the attack surface encompasses the entire public Zcash network running vulnerable software.
Immediate node crashes disrupt active services relying on the node, including wallets, exchanges, and block explorers. In a transient attack via the mempool, the node operator can restart the service, but the node remains vulnerable to repeated broadcasts.
The highest impact scenario involves a malicious miner embedding the trigger transaction into the permanent ledger. This action forces all vulnerable nodes into a persistent crash loop upon block synchronization. Such an event fractures network consensus, as Zebra nodes fail to progress while updated nodes or different implementations continue processing the chain.
The immediate mitigation requires all node operators to upgrade to Zebra version 4.3.1. This release contains the parsing-layer checks that safely reject identity rk values without invoking the vulnerable code path in the orchard crate.
No effective configuration workarounds exist for prior versions. The vulnerability triggers during fundamental transaction processing, which cannot be disabled without rendering the node non-functional on the Zcash network.
In parallel with the software patch, the Zcash Foundation and the developers of zcashd coordinated a formal update to the Zcash protocol specification. The specification now explicitly forbids the use of the identity point as a valid randomized validating key across all implementations.
Security operations teams should monitor system logs for unexpected process terminations associated with the Zebra node. Specifically, logging systems should alert on Rust panics originating from the orchard crate or circuits.rs, as these strongly indicate an active exploitation attempt against unpatched infrastructure.
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:H| Product | Affected Versions | Fixed Version |
|---|---|---|
Zebra Zcash Foundation | < 4.3.1 | 4.3.1 |
| Attribute | Detail |
|---|---|
| CWE ID | CWE-248 |
| Attack Vector | Network |
| CVSS 4.0 | 8.7 |
| Impact | Denial of Service |
| Exploit Status | none |
| KEV Status | Not Listed |
Panic due to .unwrap() on a None value when extracting coordinates.
An architectural flaw in the Froxlor server administration control panel allows attackers to completely bypass Two-Factor Authentication (2FA) by issuing commands directly through the API. The API authentication routine in 'FroxlorRPC::validateAuth' fails to check the account's 2FA status, enabling arbitrary execution of administrative and customer actions. Furthermore, in versions prior to 2.3.7, API keys could be created without validating the current user password, exposing users to persistent backdoor access via session hijacking or CSRF.
An Uncontrolled Resource Consumption vulnerability (CWE-400) affects React Router in Framework Mode and Remix server runtimes. A remote, unauthenticated attacker can trigger unbounded recursive path expansion in the manifest resolution component, leading to 100% CPU exhaustion and complete Denial of Service. The vulnerability arises because the server does not enforce depth limits when parsing deeply nested path segments in requests directed to the dynamic manifest evaluation endpoints. This blocks the single-threaded Node.js event loop, preventing the processing of subsequent client requests. The issue is resolved in react-router v7.15.0 and @remix-run/server-runtime v2.17.5. Applications using React Router in client-side-only Declarative or Data modes are unaffected.
An open redirect vulnerability exists in the react-router library due to insufficient validation of double-slash prefix paths in the redirect programmatic navigation helper. Attackers can leverage this to bypass standard destination validation checks and redirect users to malicious domains. This occurs because browsers interpret double-slash URLs as protocol-relative targets rather than relative application paths.
CVE-2022-31114 is a Reflected Cross-Site Scripting (XSS) vulnerability affecting the popular administrative panel package 'backpack/crud'. The flaw is rooted in the unsafe, raw rendering of PHP exception messages within the default error templates. When an unescaped exception message reflects malicious user-provided input, arbitrary JavaScript can execute within an administrator's browser session.
CVE-2024-52011 is a critical command injection vulnerability in the ViteJS launch-editor utility (versions prior to 2.9.0) affecting Windows environments. Unsanitized command-line arguments can lead to remote code execution on a developer workstation via cross-origin requests targeting the local development server.
A critical OS command injection vulnerability exists in Samba's Windows Internet Name Service (WINS) server implementation when configured to run as an Active Directory Domain Controller (AD DC). Unsanitized NetBIOS name data extracted from WINS registration packets is directly concatenated into a shell command invocation and executed via Samba's wins hook parameter.