Podatność w implementacji węzła Zcash o nazwie Zebra pozwala atakującemu zdalnie wywołać awarię (panic) procesu węzła poprzez przesłanie specjalnie spreparowanej transakcji Orchard. Jest to krytyczna podatność dostępności, ponieważ nie wymaga żadnego uwierzytelnienia ani interakcji użytkownika.
▸ Pokaż oryginał (EN)
ZEBRA is a Zcash node written entirely in Rust. Prior to zebrad version 4.3.1 and prior to zebra-chain version 6.0.2, Orchard transactions contain a rk field which is a randomized validating key and also an elliptic curve point. The Zcash specification allows the field to be the identity (a "zero" value), however, the orchard crate which is used to verify Orchard proofs would panic when fed a rk with the identity value. Thus an attacker could send a crafted transaction that would make a Zebra node crash. This issue has been patched in zebrad version 4.3.1 and zebra-chain version 6.0.2.
Transakcje Orchard zawierają pole rk, będące losowym kluczem walidacyjnym oraz punktem krzywej eliptycznej. Specyfikacja Zcash dopuszcza, aby pole rk przyjmowało wartość tożsamości (tzw. wartość zerową). Jednak biblioteka orchard wykorzystywana przez Zebra do weryfikacji dowodów Orchard wywołuje panikę (panic) w języku Rust, gdy otrzyma pole rk z wartością tożsamości. Atakujący może zatem wysłać do sieci spreparowaną transakcję zawierającą taką wartość, co skutkuje natychmiastowym crashem węzła.
Atakujący może zdalnie spowodować awarię węzła Zebra (denial of service), uniemożliwiając jego dalsze działanie. Jeśli węzeł zostanie wielokrotnie restarowany bez zastosowania patcha, atakujący może utrzymywać go w stanie niedostępności w sposób ciągły.
Należy zaktualizować zebrad do wersji 4.3.1 lub nowszej oraz zebra-chain do wersji 6.0.2 lub nowszej. Szczegóły dostępne w oficjalnym komunikacie bezpieczeństwa projektu Zebra na GitHub.
zebrad w wersjach wcześniejszych niż 4.3.1 oraz zebra-chain w wersjach wcześniejszych niż 6.0.2
Podatność sklasyfikowana jako CWE-617 (Reachable Assertion) — panic w kodzie Rust jest wywoływany przez warunek dozwolony przez specyfikację Zcash, lecz nieobsługiwany przez bibliotekę orchard. Wektor CVSS wskazuje brak wpływu na poufność i integralność, lecz wysoki wpływ na dostępność zarówno węzła, jak i systemów od niego zależnych (SA:H).
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 Chain
APPZfnd< 6.0.2Zfnd Zebrad
APPZfnd< 4.3.1
Powiązane podatności
Nieprawidłowa weryfikacja sygnatury w węźle ZEBRA (Zcash) — ryzyko rozszczepienia konsensusu
Błędne zliczanie sigops w Zebra powoduje split sieci Zcash
Błąd walidacji sighash w Zebra — możliwy consensus split z zcashd
Zdalne wywołanie paniki węzła Zebra przez spreparowaną transakcję V5
ZEBRA is a Zcash node written entirely in Rust. Prior to zebrad version 4.3.1 and zebra-consensus version 5.0....