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.



