Siedmioletni błąd w aplikacji Ledger dla Zilliqa ujawniał klucze prywatne

iEXExchanger
Siedmioletni błąd w aplikacji Ledger dla Zilliqa ujawniał klucze prywatne

Przez siedem lat aplikacja Ledger dla Zilliqa generowała przewidywalne podpisy, z których dało się odtworzyć klucz prywatny z publicznych danych blockchaina. Zilliqa wstrzymała transfery, token stracił niemal 20%.

Portfel sprzętowy ma być najbezpieczniejszym miejscem na klucz prywatny. Przez siedem lat popularna aplikacja działająca na urządzeniach Ledger po cichu podważała tę obietnicę.

Błąd tkwił w aplikacji Ledger dla Zilliqa, dostępnej od 2019 roku do podpisywania natywnych, niekompatybilnych z EVM transakcji. Za każdym razem program pobierał niewłaściwe 32 bajty danych: zamiast ośmiu bajtów prawdziwej losowości zostawiał osiem bajtów technicznego wypełnienia. Ta losowa wartość nazywana jest nonce i powinna być za każdym razem nieprzewidywalna. Kiedy nią nie jest, wystarczy porównać kilka podpisów tego samego konta, by matematycznie odtworzyć klucz prywatny — bez złośliwego oprogramowania, bez dostępu do urządzenia, tylko na podstawie publicznych danych już zapisanych w blockchainie. Według Zilliqa wystarczy około pięciu takich podpisów, a obliczenia zajmują sekundy na zwykłym komputerze.

19 lipca giełda KuCoin zauważyła podejrzaną aktywność w sieci i zaczęła śledztwo. Dwa dni później potwierdzono przyczynę, a 22 lipca Zilliqa upubliczniła szczegóły. W międzyczasie z zimnego portfela partnerskiej giełdy zniknęła nieujawniona kwota ZIL. Zilliqa natychmiast wstrzymała wszystkie natywne transakcje w sieci — transfery kompatybilne z EVM nie zostały dotknięte — a Upbit zamroził wpłaty i wypłaty ZIL. Token stracił w ciągu tygodnia około 17-19%, handlując blisko 0,0024 dolara.

Same urządzenia Ledger nie zostały złamane: błąd tkwił w kodzie aplikacji zewnętrznej, a nie w zabezpieczonym chipie. To słaba pociecha dla tych, którzy od 2019 roku podpisywali natywne transfery ZIL przez Ledger: podpis raz zapisany w blockchainie zostaje tam na zawsze, a poprawiona aplikacja nie cofnie już ujawnionego klucza. Jedynym realnym rozwiązaniem, zdaniem Zilliqa, jest przeniesienie środków na nowy adres.

Ta historia przypomina prostą rzecz: portfel sprzętowy chroni tylko to, co poprawnie robi działające na nim oprogramowanie — a jeśli ono zawiedzie, nawet idealny chip nic nie da.

Pytania i odpowiedzi

Często zadawane pytania na temat artykułu

Na czym dokładnie polega luka Ledger-Zilliqa?

Od 2019 roku aplikacja podpisująca natywne transakcje Zilliqa na Ledgerze generowała przewidywalną liczbę losową (nonce). Porównanie kilku podpisów tego samego konta wystarcza, by odtworzyć klucz prywatny.

Czy same urządzenia Ledger zostały złamane?

Nie. Błąd tkwił w zewnętrznej aplikacji dla Zilliqa, a nie w zabezpieczonym chipie Ledger. Same urządzenia nie zostały naruszone.

Co powinni zrobić posiadacze ZIL, którzy korzystali z Ledgera?

Kto od 2019 roku podpisał pięć lub więcej natywnych transakcji ZIL przez Ledger, powinien uznać ten klucz za skompromitowany i przenieść środki na nowy adres — poprawiona aplikacja nie cofnie już opublikowanych podpisów.

Jak wykryto ten błąd?

19 lipca KuCoin zauważył podejrzaną aktywność, dwa dni później przyczynę potwierdzono wraz z Zilliqa, a 22 lipca opublikowano szczegóły.

Co dzieje się teraz z siecią Zilliqa?

Natywne transakcje pozostają wstrzymane, a transfery kompatybilne z EVM działają normalnie. Zilliqa razem z Ledger kończy poprawioną wersję aplikacji.