Retroactive Grant Application - Five Critical Zebra Consensus Divergence Vulnerabilities

Hello Zcash community,

I have submitted a retroactive grant application to the Coinholder Retroactive Grants Program for five consensus-divergence vulnerabilities that I found and responsibly disclosed in Zebra during Q2 2026.

Full application: Financial Privacy Foundation / Coinholder Retroactive Grants Program issue #58

Requested amount: $425,000.

This is an opening proposal, not a fixed or non-negotiable demand. I am fully open to discussing and revising the amount through community feedback and the grant-review process.

What I found

Zebra and zcashd are independent implementations of the Zcash consensus rules. They must agree exactly on whether each transaction and block is valid. The five findings identified cases where they could disagree and follow different chains.

Advisory Finding Public credit
GHSA-8m29-fpq5-89jj V4/V5 transparent sighash hash-type handling could produce opposite validity decisions in Zebra and zcashd. Alex “Scalar” Sol made the initial discovery; I later independently confirmed it and demonstrated the V4 variant.
GHSA-jv4h-j224-23cc Zebra undercounted coinbase and aggregate P2SH signature operations during block validation, allowing it to accept a block that zcashd rejected. sangsoo-osec and defuse
GHSA-cwfq-rfcr-8hmp Zebra and zcashd handled V5 SIGHASH_SINGLE without a corresponding output differently, creating a block-validity divergence. sangsoo-osec and defuse
GHSA-gq4h-3grw-2rhv A failed Rust sighash callback left a stale digest in a C++ FFI buffer, allowing Zebra to accept a spend that zcashd rejected. sangsoo-osec
GHSA-2prc-cj5x-4443 Zebra 4.5.0 overcounted low-threshold P2SH multisig operations and could reject a valid block that zcashd accepted. An attacker did not need mining capability. sangsoo-osec

All five reports were accepted and published by the Zcash Foundation as Critical. They resulted in fixes and security releases, including Zebra 4.3.1, 4.4.0, and 4.5.1. I am not claiming that a split occurred on mainnet or that funds were actually double-spent. The completed outcome is that these conditions were found and fixed before known exploitation.

Why I am applying retroactively

The first four reports were submitted before the ZCG Security & Vulnerability Disclosure Initiative launched on 28 April 2026. ZCG later confirmed that the program did not apply retroactively.

The fifth issue arose after ZCG had closed the vulnerability bounty program on 26 May 2026. It affected Zebra 4.5.0 and was fixed in 4.5.1.

The first four findings therefore fell before the official program’s eligibility window, and the fifth fell after it. None of these five findings received a payout through that official ZCG bounty framework.

How I calculated the request

I used the public payout schedule from the briefly operated official ZCG vulnerability program only as an ecosystem-specific reference. I am not claiming that its terms bind the Coinholder Retroactive Grants Program or that the resulting figure is an entitlement.

The reference amount was $150,000 for a Core Node / Critical finding. I reduced my request to one-half for every finding with two publicly credited researchers:

Calculation Amount
Three shared-credit findings at $75,000 each $225,000
Two sole-reporter findings at $150,000 each $300,000
Gross reporter-adjusted reference $525,000
Less payment already received from another organization -$100,000
Net requested amount $425,000

I am not requesting the former program’s discretionary bonus.

The $425,000 amount is intended to make my starting valuation transparent and reviewable. I welcome discussion about the amount, the shared-credit allocation, the individual findings, and how the community believes this completed security work should be valued.

Funding disclosure

I received $100,000 from another organization and have deducted it in full from this request to avoid double compensation.

I have also received ZCG vulnerability bounties for other bugs that are not included in this application. Those payments and the supporting dashboard are disclosed in the full application. I am not requesting payment for those other bugs here.

How the work was done

I used LLM-assisted differential analysis to map equivalent consensus-critical paths in the C++ zcashd code and the Rust/C++ Zebra code. The LLM helped with code navigation and focused hypothesis generation, but I did not submit model output as unverified reports. I traced the production paths, checked the actual validity decisions, reduced the differences to concrete transaction, script, or block conditions, and reported them privately through Zebra’s coordinated disclosure process.

The reports were accepted, reproduced, remediated, and published. That downstream record is the evidence for the quality of the work.

Thank you for reading. I welcome technical questions, criticism, and discussion about both the findings and the proposed amount.

5 Likes

I agree that all skilled security researchers acting in good faith should receive appropriate compensation for their achievements. You’ve accomplished some truly impressive feats, sangsoo. In particular, I believe all researchers should learn from your attitude—not only demonstrating technical skill, but also requesting compensation for the vulnerabilities you discovered through proper channels rather than insisting through inappropriate channels!

:+1: :+1:

2 Likes

Full support to @sangsoo . Definitely deserve it, found a lot of critical vuln and one of the few hardcore defender of zcash. Hats off. Hope you get those 425k$.

2 Likes