Баг у застосунку Ledger сім років загрожував гаманцям Zilliqa

iEXExchanger
Баг у застосунку Ledger сім років загрожував гаманцям Zilliqa

Сім років застосунок Ledger для Zilliqa створював передбачувані підписи, за якими можна було відновити приватний ключ лише з публічних даних блокчейна. Zilliqa зупинила перекази, токен подешевшав майже на п'яту частину.

Апаратний гаманець мав би бути найбезпечнішим місцем для приватного ключа. Сім років один популярний застосунок поверх пристроїв Ledger непомітно підривав цю обіцянку.

Проблема ховалася в застосунку Ledger для мережі Zilliqa, доступному з 2019 року для підпису нативних, не-EVM транзакцій. Щоразу під час формування підпису програма брала не ті 32 байти даних: замість восьми байтів справжньої випадковості залишалися вісім байтів технічного заповнювача. Це випадкове число називають nonce — воно має бути непередбачуваним щоразу. Коли це не так, достатньо порівняти кілька підписів одного акаунта, щоб математично відновити приватний ключ — без вірусів, без доступу до пристрою, лише за публічними даними, які й так лежать у блокчейні. За оцінкою Zilliqa, вистачає приблизно п'яти таких підписів, а обчислення займає секунди на звичайному комп'ютері.

19 липня біржа KuCoin помітила підозрілу активність у мережі й почала розслідування. За два дні причину підтвердили, а 22 липня Zilliqa оприлюднила деталі. Тим часом холодний гаманець біржі-партнера спорожнів на нерозкриту суму ZIL. Zilliqa негайно зупинила всі нативні транзакції в мережі — EVM-сумісні перекази не постраждали, — а Upbit заморозив ввід і вивід ZIL. За тиждень токен подешевшав приблизно на 17–19%, торгуючись біля $0,0024.

Самі пристрої Ledger не було зламано: помилка жила в коді стороннього застосунку, а не в захищеному чипі. Це слабка втіха для тих, хто з 2019 року підписував нативні ZIL-перекази через Ledger: підпис, опублікований у блокчейні, залишається там назавжди, і виправлений застосунок не може скасувати вже розкритий ключ. Єдиний реальний вихід, за словами Zilliqa, — перевести кошти на нову адресу.

Історія нагадує просту річ: апаратний гаманець захищає лише те, що правильно робить програмне забезпечення на ньому, а якщо воно помиляється, ідеальний чип тут не рятує.

Запитання та відповіді

Часті питання на тему статті

У чому саме полягає вразливість Ledger-Zilliqa?

З 2019 року застосунок для підпису нативних транзакцій Zilliqa на Ledger генерував передбачуване випадкове число (nonce). Порівняння кількох підписів одного акаунта дозволяє відновити приватний ключ.

Чи скомпрометовані самі пристрої Ledger?

Ні. Проблема була у стороньому застосунку для Zilliqa, а не в захищеному чипі Ledger. Пристрої не постраждали.

Що робити власникам ZIL, які користувалися Ledger?

Якщо з 2019 року ви підписали п'ять і більше нативних ZIL-транзакцій через Ledger, ключ варто вважати скомпрометованим і перевести кошти на нову адресу — виправлений застосунок не скасовує вже опубліковані підписи.

Як виявили проблему?

19 липня KuCoin помітила підозрілу активність, до 21 липня причину підтвердили разом із Zilliqa, а 22 липня деталі оприлюднили.

Що тепер із мережею Zilliqa?

Нативні транзакції тимчасово зупинені, EVM-сумісні перекази працюють як завжди. Zilliqa разом із Ledger готує виправлену версію застосунку.