Уразливість ентропії Coldcard могла призвести до крадіжки біткоїнів на $38 млн

ТЕРМІНОВЕ ПОВІДОМЛЕННЯ З БЕЗПЕКИ. Якщо ви генерували seed-фразу на Coldcard Mk3, Mk4, Mk5 або Q до останнього виправлення прошивки (hotfix), кошти можуть бути під загрозою. Ознайомтеся з офіційними матеріалами та виконайте міграцію якнайшвидше. Що сталося: виведення $38 млн ончейн Аналітики Lookonchain повідомили про переказ понад $38 млн у Bitcoin — 594,48 BTC — приблизно з 500 гаманців на адресу-консолідатор, що починається з bc1qnk… Транзакції пройшли в короткому часовому проміжку в межах невеликої кількості блоків. Ознаки скомпрометованих гаманців: - переважно одиночний підпис (singlesig), без захисту multisig; - частина гаманців не рухалася роками, що більше схоже на прицільний "збір" вразливих seed'ів, а не атаку на активних користувачів; - перекази виглядали скоординованими й майже одночасними, що відповідає автоматизованому sweep'у seed-фраз, які можна перебрати або відновити в звуженому просторі пошуку. Coinkite офіційно не підтвердила, що саме дефект ентропії спричинив цей конкретний sweep. Водночас збіг у часі між попередженням компанії та ончейн-рухами, а також характеристики гаманців змусили дослідників безпеки називати найбільш імовірною причиною саме вразливість генерації seed з низькою ентропією. Технічна причина: що зламалося в джерелі ентропії За технічним розбором Coinkite (blog.coinkite.com/entropytechnicalbackgrounder/) у низці версій прошивки ланцюжок помилок не дозволяв апаратному генератору випадкових чисел (TRNG) коректно додавати випадковість під час створення seed. У результаті генерація seed фактично покладалася на програмний PseudoRandom Number Generator (PRNG) з MicroPython замість запланованого апаратного RNG. Проблема виникла через конфігурацію збірки та перевірку препроцесора, які не примусили використання апаратного RNG. При цьому програмний режим застосовувався "мовчки" — без явного сигналу для користувача, що апаратна ентропія не використовується як треба. Ефективний рівень безпеки (проти очікуваних 128 біт): - Mk3: близько 40 біт замість 128 біт; - Mk4, Mk5, Q: близько 72 біт (часткове покращення завдяки secure elements), але все одно нижче 128 біт. 40 біт означає приблизно 1 трильйон можливих seed. Це багато в побутовому розумінні, але досяжно для добре забезпечених атакувальників із сучасними обчислювальними ресурсами. 72 біти суттєво краще, проте все ще помітно слабше за 128-бітний рівень, який робить brute force нереалістичним на передбачуваному горизонті. Які пристрої та прошивки під ризиком За офіційним попередженням Coinkite (blog.coinkite.com/coldcardmk3seedgenerationwarning/): - Mk3 — ВИСОКИЙ РИЗИК: seed, згенеровані на прошивках 4.0.1 (реліз у березні 2021) до останньої підтримуваної 5.0.3, вважаються ризиковими. Для Mk3 вразливі прошивки давали приблизно 40-бітну ефективну ентропію. - Mk4, Mk5 і Q — ПІДВИЩЕНИЙ РИЗИК: seed, згенеровані на будь-якій прошивці до останнього hotfix, також мали знижену ентропію приблизно до 72 біт. - Не вражені: TAPSIGNER, OPENDIME та SATSCARD — інша кодова база, ця конкретна уразливість їх не стосується. Кому ризик нижчий: - тим, хто під час генерації seed додав щонайменше 50 незалежних приватних кидків кубика (додаткова зовнішня ентропія, яку пристрій не може "зменшити"); - тим, хто використовує сильну унікальну BIP39 passphrase. Passphrase обробляється окремо від внутрішньої ентропії пристрою й додає захист навіть за проблем із RNG. Що потрібно зробити: покрокова міграція Coinkite підкреслює: оновлення прошивки не виправляє вже створені seed. Якщо seed був згенерований із недостатньою ентропією, жоден апдейт не змінить використану випадковість. Єдиний вихід — створити новий seed і перенести кошти. Крок 1. Вважайте чинний seed потенційно скомпрометованим Якщо seed був створений на ураженій комбінації пристрій/прошивка без 50+ кидків кубика та без сильної passphrase, припускайте вразливість і не відкладайте дії. Крок 2. Негайно оновіть прошивку до виправленої - Mk4 і Mk5: прошивка 5.6.0 або новіша. - Модель Q: прошивка 1.5.0Q або новіша. - Mk3: виправлення немає — див. тимчасовий захід нижче. Крок 3. Згенеруйте повністю новий seed на оновленій прошивці Створіть новий seed на оновленому пристрої. Не відновлюйте стару seed-фразу. За можливості під час генерації додайте щонайменше 50 незалежних кидків кубика. Додатково: використайте сильну унікальну BIP39 passphrase та зберігайте її окремо від резервної копії seed. Крок 4. Правильно зробіть резервні копії seed і passphrase Запишіть нову seed-фразу на папір і зберігайте в безпечному місці. Якщо використовується BIP39 passphrase, зберігайте її окремо. Для доступу до гаманця потрібні обидва елементи; втрата будь-якого означає втрату доступу. Крок 5. Перевірте гаманець Переконайтеся у правильності налаштування: перевірте fingerprint гаманця і звірте щонайменше одну адресу отримання. Крок 6. Спочатку надішліть тестову транзакцію Перед перенесенням повної суми відправте невеликий тестовий платіж зі старого гаманця на новий і підтвердьте надходження. Крок 7. Перенесіть увесь залишок Після тесту переведіть усі кошти зі старого (потенційно скомпрометованого) гаманця на новий. Старий seed після міграції не використовуйте. Тимчасовий захід для Mk3 Якщо Mk3 — єдиний доступний пристрій і немає змоги швидко перейти на Mk4/Mk5/Q, тимчасово зменшити ризик може додавання сильної унікальної BIP39 passphrase до наявного гаманця. Це не заміна міграції — заплануйте перехід на неуражений пристрій якнайшвидше. Чому ентропія важлива (без технічних деталей) Безпека апаратного гаманця визначається якістю випадковості, з якої створено seed. Seed — це "майстер-ключ" для всіх біткоїн-адрес. Якщо випадковості було недостатньо, множина можливих seed значно звужується. Замість 1 із 2^128 варіантів ваш seed міг бути 1 із приблизно 2^40 або 2^72, що суттєво полегшує перебір для підготовленого атакувальника. Повітряний розрив (airgap) та захист від втручання в Coldcard можуть лишатися працездатними, але слабка криптографічна основа нівелює ці переваги. Офіційні джерела та застереження Перевіряйте інструкції лише через офіційні канали Coinkite. Не переходьте за "порадами" з неофіційних акаунтів у соцмережах і не довіряйте третім сторонам, які пропонують "допомогу" з відновленням або міграцією. Висновок Уразливість ентропії Coldcard — серйозна й технічно складна проблема, яка, за наявними ончейн-ознаками, вже могла призвести до крадіжки близько $38,2 млн у Bitcoin з уражених гаманців. Причина — помилка прошивки, через яку замість апаратного RNG непомітно використовувався програмний генератор випадкових чисел. Це давало seed із 40 або 72 бітами ефективної безпеки замість очікуваних 128. Якщо у вас Coldcard і seed був згенерований на вразливій прошивці без кидків кубика та без сильної passphrase, ризик може бути актуальним уже зараз. Дії обов'язкові: оновити прошивку, створити новий seed, мігрувати кошти. FAQ Що таке уразливість ентропії Coldcard? Помилка прошивки, через яку під час генерації seed використовувався програмний PRNG замість апаратного TRNG. У підсумку seed мав близько 40 біт безпеки (Mk3) або 72 біти (Mk4/Mk5/Q) замість стандарту 128 біт. Чи мій Coldcard під загрозою? Mk3 з прошивками 4.0.1–5.0.3 — високий ризик. Mk4, Mk5 і Q з прошивками до останнього hotfix — також уражені. TAPSIGNER, OPENDIME і SATSCARD не уражені. Чи виправить оновлення прошивки мій чинний seed? Ні. Оновлення не "переробляє" вже створений seed. Потрібно згенерувати новий seed на виправленій прошивці та перенести всі кошти. На яку версію прошивки оновлюватися? Mk4/Mk5: 5.6.0 або новіша. Q: 1.5.0Q або новіша. Для Mk3 виправлення немає; як тимчасовий захід використайте сильну BIP39 passphrase і плануйте міграцію на неуражений пристрій.