Podatność w logice przetwarzania transakcji węzła Zebra (implementacja Zcash w Rust) pozwala zdalnemu, nieuwierzytelnionemu atakującemu na doprowadzenie do paniki (crash) procesu węzła. Zagrożenie jest szczególnie poważne, gdyż nie wymaga żadnego uwierzytelnienia ani interakcji ze strony użytkownika.
▸ Pokaż oryginał (EN)
ZEBRA is a Zcash node written entirely in Rust. Prior to zebrad version 4.3.0 and zebra-chain version 6.0.1, a vulnerability in Zebra's transaction processing logic allows a remote, unauthenticated attacker to cause a Zebra node to panic (crash). This is triggered by sending a specially crafted V5 transaction that passes initial deserialization but fails during transaction ID calculation. This issue has been patched in zebrad version 4.3.0 and zebra-chain version 6.0.1.
Atakujący wysyła specjalnie spreparowaną transakcję V5, która pomyślnie przechodzi wstępny etap deserializacji, lecz następnie powoduje błąd krytyczny podczas obliczania identyfikatora transakcji (transaction ID). Nieprawidłowa obsługa tego stanu błędu skutkuje paniką procesu i natychmiastowym zatrzymaniem węzła. Podatność wynika z połączenia podatnej deserializacji (CWE-502) oraz błędów w logice obliczania wartości pochodnych od danych wejściowych (CWE-94, CWE-1336).
Atakujący może zdalnie i bez uwierzytelnienia powodować wielokrotne awarie węzła Zebra, co prowadzi do niedostępności usługi (DoS) zarówno na poziomie samego węzła, jak i systemów od niego zależnych. Skutkuje to brakiem możliwości uczestnictwa węzła w sieci Zcash.
Należy zaktualizować zebrad do wersji 4.3.0 lub nowszej oraz zebra-chain do wersji 6.0.1 lub nowszej. Patche są dostępne w oficjalnym repozytorium ZcashFoundation na GitHub (https://github.com/ZcashFoundation/zebra/releases/tag/v4.3.0).
zebrad w wersjach wcześniejszych niż 4.3.0 oraz zebra-chain w wersjach wcześniejszych niż 6.0.1
Podatność została zgłoszona i załatana przez zespół Zcash Foundation. Szczegóły techniczne dostępne są w poradniku bezpieczeństwa GHSA-qp6f-w4r3-h8wg oraz na blogu zfnd.org.
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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XZfnd Zebra
APPZfnd< 4.3.0Zfnd Zebra Chain
APPZfnd< 6.0.1
Powiązane podatności
Crash węzła Zebra (Zcash) przez pole rk z wartością tożsamości w transakcjach Orchard
ZEBRA is a Zcash node written entirely in Rust. Prior to zebrad version 4.3.0 and zebra-consensus version 5.0....
ZEBRA is a Zcash node written entirely in Rust. Prior to zebrad version 4.4.0, prior to zebra-chain version 7....
Błąd walidacji sighash w Zebra — możliwy consensus split z zcashd
Nieprawidłowa weryfikacja sygnatury w węźle ZEBRA (Zcash) — ryzyko rozszczepienia konsensusu