{"id":"CVE-2026-54496","summary":"Missing copy constraint in halo2_gadgets variable-base scalar multiplication allows under-constrained base, breaking Orchard Action circuit soundness","details":"ZEBRA is a Zcash node written entirely in Rust. Prior to zebrad 5.0.0, halo2_gadgets 0.5.0, orchard 0.14.0, zcash_primitives 0.28.0, and zcashd 6.20.0, the variable-base scalar multiplication gadget in halo2_gadgets/src/ecc/chip/mul/incomplete.rs used assign_advice() for the base point without a copy constraint tying it to the actual base, allowing a malicious prover to produce a valid proof for an Orchard Action with an under-constrained base point and bypass the diversified-address-integrity check that binds pk_d, g_d, ivk, the nullifier (nf), and the spend validating key (ak) to the note being spent. This issue is fixed in zebrad 5.0.0, halo2_gadgets 0.5.0, orchard 0.14.0, zcash_primitives 0.28.0, and zcashd 6.20.0.","aliases":["GHSA-ww9q-8r59-xv46"],"modified":"2026-07-19T03:47:26.830557726Z","published":"2026-07-17T16:59:06.809Z","database_specific":{"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/54xxx/CVE-2026-54496.json","cna_assigner":"GitHub_M","cwe_ids":["CWE-345"]},"references":[{"type":"WEB","url":"https://github.com/ZcashFoundation/zebra/releases/tag/v5.0.0"},{"type":"WEB","url":"https://github.com/zcash/halo2/releases/tag/halo2_gadgets-0.5.0"},{"type":"WEB","url":"https://github.com/zcash/librustzcash/releases/tag/zcash_primitives-0.28.0"},{"type":"WEB","url":"https://github.com/zcash/orchard/releases/tag/0.14.0"},{"type":"WEB","url":"https://github.com/zcash/zcash/releases/tag/v6.20.0"},{"type":"WEB","url":"https://zfnd.org/zebra-4-5-3-and-5-0-0-emergency-soft-fork-and-nu6-2-activation"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/54xxx/CVE-2026-54496.json"},{"type":"ADVISORY","url":"https://github.com/ZcashFoundation/zebra/security/advisories/GHSA-ww9q-8r59-xv46"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-54496"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/zcash/halo2","events":[{"introduced":"0"},{"fixed":"d751768afe0d2105b349dd93f73fde7f2eade088"}],"database_specific":{"extracted_events":[{"introduced":"0"},{"fixed":"0.5.0"}],"source":"AFFECTED_FIELD"}},{"type":"GIT","repo":"https://github.com/zcash/librustzcash","events":[{"introduced":"0"},{"fixed":"d0c380114a88154fad05d92a168a546a4ab219e2"},{"fixed":"8766e0532a793516c27ad2f838bccfbb24d47285"}],"database_specific":{"extracted_events":[{"introduced":"0"},{"fixed":"0.14.0"},{"fixed":"0.28.0"}],"source":["AFFECTED_FIELD","REFERENCES"]}},{"type":"GIT","repo":"https://github.com/zcash/orchard","events":[{"introduced":"0"},{"fixed":"8de172448be10f3a470f9ac83198dc8a185986ad"}],"database_specific":{"source":"REFERENCES"}},{"type":"GIT","repo":"https://github.com/zcash/zcash","events":[{"introduced":"0"},{"fixed":"6966f30a8541b0e5998837dce14250ca9e15b16a"}],"database_specific":{"source":["AFFECTED_FIELD","REFERENCES"],"extracted_events":[{"introduced":"0"},{"fixed":"6.20.0"}]}},{"type":"GIT","repo":"https://github.com/zcashfoundation/zebra","events":[{"introduced":"0"},{"fixed":"1e6519ea91e2d3035c20aadd4d9a40dcac2eed3a"}],"database_specific":{"extracted_events":[{"introduced":"0"},{"fixed":"5.0.0"}],"source":["AFFECTED_FIELD","REFERENCES"]}}],"versions":["halo2_proofs-0.3.0","halo2_gadgets-0.3.0","halo2_gadgets-0.4.0","halo2_proofs-0.2.0","halo2_gadgets-0.2.0","halo2_proofs-0.1.0","halo2_gadgets-0.1.0","github_releases_tombstone","zcash_primitives-0.14.0","ecc_sdk-20240130a","ecc_sdk-20240129","zcash_client_sqlite-0.7.0","zcash_client_backend-0.9.0","zcash_address-0.2.1","zcash_proofs-0.11.0","zcash_primitives-0.11.0","zcash_client_sqlite-0.6.0","zcash_client_backend-0.8.0","zcash_note_encryption-0.3.0","zcash_primitives-0.10.2","zcash_primitives-0.10.1","zcash_proofs-0.10.0","zcash_primitives-0.10.0","zcash_client_sqlite-0.5.0","zcash_client_backend-0.7.0","zcash_client_sqlite-0.4.2","zcash_primitives-0.9.1","zcash_client_sqlite-0.4.1","zcash_client_backend-0.6.1","zcash_proofs-0.9.0","zcash_primitives-0.9.0","zcash_client_sqlite-0.4.0","zcash_client_backend-0.6.0","zcash_primitives-0.8.1","zcash_encoding-0.2.0","zcash_address-0.2.0","zcash_proofs-0.8.0","zcash_primitives-0.8.0","zcash_proofs-0.6.0","zcash_primitives-0.6.0","zcash_history-0.3.0","zcash_encoding-0.1.0","zcash_address-0.1.0","f4jumble-0.1.0","zcash_proofs-0.5.0","zcash_primitives-0.5.0","zcash_client_sqlite-0.3.0","zcash_client_backend-0.5.0","0.5.0","0.4.0","0.3.0","0.2.0","0.1.0","v0.1.0-beta.3","v0.1.0-beta.2","v0.1.0-beta.1","v5.3.0-gitian","v5.1.0-rc1","v4.7.0","v4.7.0-rc1","v4.6.0","v4.6.0-rc1","v4.5.1","v4.5.0","v4.5.0-rc1","v4.4.1-rc1","v4.4.0","v4.4.0-rc1","v4.3.0","v4.3.0-rc1","v4.2.0","v4.2.0-rc1","v4.1.1","v4.1.0","v4.1.0-rc1","v4.0.0","v4.0.0-rc1","v3.1.0-rc2","v3.1.0","v3.1.0-rc1","v3.0.0","v3.0.0-rc1","v2.1.2","v2.1.2-rc1","v2.1.1","v2.0.3-rc1","v2.1.1-rc2","v2.1.1-rc1","v2.1.0","v2.1.0-rc1","v2.0.7-2","v2.0.7","v2.0.7-rc1","v2.0.6","v2.0.6-rc1","v2.0.5-2","v2.0.5-1","v2.0.5","v2.0.5-rc1","v2.0.4-rc1","v2.0.4","v2.0.3","v2.0.2-rc1","v2.0.2","v2.0.1","v2.0.1-rc1","v2.0.0","v2.0.0-rc1","v1.1.2","v1.1.2-rc1","v1.1.1-rc2","v1.1.1","v1.1.1-rc1","v1.1.0","v1.1.0-rc1","v1.0.15","v1.0.15-rc1","v1.0.14","v1.0.14-rc1","v1.0.13","v1.0.13-rc2","v1.0.13-rc1","v1.0.12","v1.0.12-rc1","v1.0.11","v1.0.11-rc1","v1.0.10-1","v1.0.10","v1.0.9","v1.0.8-1","v1.0.8","v1.0.7-1","v1.0.6","v1.0.5","v1.0.4","v1.0.0","v1.0.3","v1.0.2","v1.0.1","v1.0.0-rc4","v1.0.0-rc3","v1.0.0-rc2","v1.0.0-rc1","v1.0.0-beta2","v1.0.0-beta1","v0.11.2.z9","v0.11.2.z8","v0.11.2.z7","v0.11.2.z6","v0.11.2.z5","v0.11.2.z4","v0.11.2.z3","v0.11.2.z2","v0.11.2.z1","zc.v0.11.2.z0","v0.11.2.z0","bitcoin-v0.11.2","v0.9.0rc2","v4.4.1","v4.3.1","4.3.1","v3.0.0-rc.0","v2.5.0","v2.4.2","v2.3.0","v2.4.0","v2.2.0","v2.0.0-rc.0","v1.9.0","v1.8.0","v1.7.0","v1.6.1","v1.6.0","v1.5.2","v1.5.1","v1.5.0","v1.4.0","v1.3.0","v1.2.0","v1.0.0-rc.9","v1.0.0-rc.8","v1.0.0-rc.7","v1.0.0-rc.6","v1.0.0-rc.5","v1.0.0-rc.0","v1.0.0-rc.4","v1.0.0-rc.3","v1.0.0-rc.2","v1.0.0-rc.1","v1.0.0-beta.15","v1.0.0-beta.14","v1.0.0-beta.13","v1.0.0-beta.12","v1.0.0-beta.11","v1.0.0-beta.10","v1.0.0-beta.9","v1.0.0-beta.8","v1.0.0-beta.7","v1.0.0-beta.6","v1.0.0-beta.5","v1.0.0-beta.4","v1.0.0-beta.3","v1.0.0-beta.2","v1.0.0-beta.1","v1.0.0-beta.0","v1.0.0-alpha.19","v1.0.0-alpha.18","v1.0.0-alpha.17","v1.0.0-alpha.16","v1.0.0-alpha.15","v1.0.0-alpha.14","v1.0.0-alpha.13","v1.0.0-alpha.12","v1.0.0-alpha.11","v1.0.0-alpha.10","v1.0.0-alpha.9","v1.0.0-alpha.8","v1.0.0-alpha.7","v1.0.0-alpha.6","v1.0.0-alpha.5","v1.0.0-alpha.4","v1.0.0-alpha.3","v1.0.0-alpha.2","v1.0.0-alpha.1","v1.0.0-alpha.0"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-54496.json"}}],"schema_version":"1.7.5","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:H/A:L"}]}