CVE-2026-52739 in Zebra
Riassunto
di VulDB • 18/08/2026
ZEBRA è un nodo Zcash scritto interamente in Rust. Prima della versione 4.5.0, un produttore di blocchi malintenzionato può terminare zebrad inserendo la stessa transazione blindata (shielded) sia nel blocco padre non finalizzato che nel suo blocco figlio. In zebra-state/src/service/non_finalized_state/chain.rs, Chain::push originariamente inseriva l'hash della transazione in tx_loc_by_hash e verificava l'univocità prima di aggiornare i dati blindati ed eseguire i controlli duplicati per gli nullifier Sprout, Sapling o Orchard. La transazione ripetuta raggiungeva quindi l'affermazione "le transazioni devono essere univoche all'interno di una singola catena" (transactions must be unique within a single chain) prima che la validazione contestuale potesse rifiutarla correttamente. Le build di rilascio di Zebra utilizzano panic equals abort, pertanto l'assertion raggiungibile termina l'intero processo; lo sfruttamento richiede o due blocchi consecutivi minerati dall'attaccante o un blocco figlio minerato dall'attaccante immediatamente dopo che un blocco onesto include la transazione blindata dell'attaccante. Questo problema è stato risolto nella versione 4.5.0.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.