criticalCVSS 9.3Vulnerability

CVE-2026-54496

### Summary A soundness vulnerability in the variable-base scalar multiplication gadget of `halo2_gadgets` allowed a malicious prover to produce a valid proof for an Orchard Action with an *under-constrained* base point. Because this gadget enforces the diversified-address-integrity condition of the Orchard Action statement, the flaw let a prover satisfy that condition for an arbitrary (pk<sub>d</sub>, g<sub>d</sub>, ivk) triple, effectively bypassing the check that binds an Action to the correct incoming viewing key — and therefore to the correct nullifier (nf) and spend validating key (ak) — of the note being spent. 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 v

Properties

severity
critical
summary
Zebra: Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness
epss_score
0.0021
cvss_score
9.3
ghsa_published
2026-07-06T21:23:41Z
source_url
https://github.com/advisories/GHSA-ww9q-8r59-xv46
ghsa_updated
2026-07-06T21:23:42Z
ghsa_id
GHSA-ww9q-8r59-xv46
cve_id
CVE-2026-54496
cvss_vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:H/A:L
is_ghsa_only
false
epss_percentile
0.11542

Related Entities (11)

ENRICHED_BY (1)

[Source]FIRST EPSS

HAS_WEAKNESS (1)

[Weakness]Insufficient Verification of Data Authenticity

REPORTED_BY (1)

[Source]GitHub Advisory Database

VULNERABLE_TO (4)

[Software]rust/orchard
[Software]rust/zcash_primitives
[Software]rust/halo2_gadgets
[Software]rust/zebrad

AFFECTS (4)

[Software]rust/orchard
[Software]rust/zebrad
[Software]rust/halo2_gadgets
[Software]rust/zcash_primitives

Explore deeper with Ninja Signal's threat intelligence graph

CVE-2026-54496 (CVSS 9.3) — Ninja Signal Threat Intelligence | Ninja Signal