Злам Coldcard через вразливість прошивки призвів до викрадення BTC на $89 млн
Злам Coldcard оголив критичний недолік одного з найвідоміших апаратних гаманців для Bitcoin: уразливість була не в обміні чи фішингу, а в самому механізмі генерації ключів. У трьох хвилях атак зловмисники скористалися слабкою генерацією seed у певних версіях прошивки та вивели близько 1"367 BTC (приблизно $89 млн) з тисяч адрес. Уразливість дозволяла відновлювати приватні ключі офлайн і "вимітати" кошти без доступу до пристрою.
Що сталося: три хвилі виведення на $89 млн
30 липня 2026 року близько 12:00 UTC невідомий атакувальник почав виводити Bitcoin з гаманців Coldcard. Під час першої хвилі зникло 594 BTC (орієнтовно $38 млн) приблизно з 500 гаманців лише за 25 хвилин. Цілі обиралися не випадково: за даними Chainalysis, спершу атакували найбагатші адреси, а за перші 10 хвилин зібрали понад $30 млн; один гаманець втратив близько $1,8 млн.
Того ж дня друга хвиля збільшила загальні втрати до 1"082 BTC (приблизно $70 млн) на 1"196 адресах за 41 хвилину. До 2 серпня сукупно у трьох хвилях було викрадено 1"367 BTC (приблизно $89 млн) з 4"585 адрес. Протягом майже 30 годин з моменту першого "свіпу" до першого публічного попередження Coinkite тривав широкий збір коштів. Galaxy Research згодом ідентифікувала близько 600 підозрілих адрес зловмисників і передала їх слідчим; компанія також зазначила схожі операційні патерни у хвилях 1 і 2, тоді як хвиля 3 використовувала інші методи збору.
Чому інцидент особливо небезпечний
Це не був фішинг, злам біржі чи фізичне викрадення приватних ключів. Зловмиснику не потрібен був прямий доступ до пристроїв Coldcard. Проблема виникала в момент ініціалізації гаманця: уражені версії прошивки генерували seed із недостатньою випадковістю. Це підривало ключову обіцянку апаратного гаманця — ізоляцію ключів від онлайн-загроз: уразливість створював сам продукт.
Хронологія та технічна причина: "один рядок коду" і п'ять років непоміченим
1 березня 2021 року один коміт змінив функцію генерації seed: замість ckcc.rng_bytes, яка використовувала апаратний RNG у чипі STM32, застосували ngu.random.bytes — програмний PRNG на детермінованих вхідних даних. Як описують технічні розбори, PRNG спирався на серійний номер пристрою, значення внутрішніх таймерів і історію попередніх викликів RNG, після чого прошивка обробляла їх SHA256d. Хешування може перемішати наявні дані, але не створює нової ентропії: якщо стартовий простір має лише 2^40 варіантів, на виході їх також лишається 2^40.
17 березня 2021 року вийшла прошивка v4.0.0 з дефектним кодом. За оцінкою Coinkite, кожен seed, згенерований з цього моменту на Mk2/Mk3, мав приблизно 40 біт ентропії. Помилка протрималась упродовж 2021–2026 років крізь оновлення, перевірки безпеки та навіть AI-асистований аудит — без виявлення.
Для Mk4, Mk5 і Q додаткове джерело з secure element підвищувало ефективну ентропію до близько 72 біт, але й це нижче очікуваного рівня 128 біт для генерації Bitcoin seed. Block у незалежному технічному аналізі назвала конструкцію "небезпечною fail-open": за певних умов завантаження пошук може звузитися до 2^32 значень. Масового використання цього сценарію наразі не підтверджено.
Як це експлуатували: перебір 40-бітних seed
Механіка атаки зводилася до перебору. Оцінивши змінні (зокрема UID пристрою, стан таймера, послідовність викликів RNG), атакувальник міг відтворювати кандидати seed повністю офлайн, перетворювати їх на Bitcoin-адреси й звіряти з публічними даними блокчейна. Для 40 біт ентропії простір становить приблизно один трильйон варіантів — велике число, але здійсненне для сучасних обчислень, особливо якщо звузити пошук до адрес, які ймовірно походять від Coldcard seed, створених у вразливий період 2021–2026 років. Знайшовши збіг із адресою, що має баланс, зловмисник отримував контроль над відповідним приватним ключем і виводив кошти.
Galaxy Research припускає, що хвилі 1 і 2 могли бути роботою одного оператора. Інша поведінка в ончейні у хвилі 3 допускає, що вразливість міг незалежно знайти й використати інший атакувальник.
Хто під ризиком: моделі, прошивки та реальний масштаб
Ризик визначається не тим, яку прошивку встановлено зараз, а тією, на якій пристрій згенерував seed. Оновлення прошивки не "лікує" вже створений слабкий seed.
Оцінка за моделями:
- Mk2/Mk3: найвищий ризик. Вразливі seed створювалися на v4.0.0/v4.0.1 — v4.1.9 з ефективною ентропією ~40 біт. Виправлення: v4.2.0+.
- Mk4/Mk5: seed, створені до v5.6.0 (standard) або до v6.6.0X (Edge), мають ~72 біти. Виправлення: v5.6.0+ / v6.6.0X+. Масового підтвердженого зламу цих моделей немає, але ентропія все одно нижче стандарту.
- Q: до v1.5.0Q (standard) або до v6.6.0QX (Edge) — ~72 біти. Виправлення: v1.5.0Q+ / v6.6.0QX+.
Важливий виняток: користувачі, які під час створення seed додали щонайменше 50 незалежних і приватних кидків кубика, фактично внесли зовнішню реальну ентропію, що нівелює слабкість програмного RNG. За цією конкретною вразливістю їхній ризик мінімальний. Сильна BIP39-парольна фраза знижує ймовірність атаки перебором, але не підсилює базовий seed, тому Coinkite все одно радить мігрувати кошти, якщо seed створено на вразливій прошивці.
Реакція Coinkite: що зроблено
Перші публічні попередження Coinkite з'явилися 30 та 31 липня — приблизно через 30 годин після старту масового виведення. Компанія випустила виправлені прошивки для всіх лінійок (зокрема v4.2.0 для Mk3, v5.6.0 для Mk4/Mk5, v1.5.0Q для Q), оприлюднила технічний опис і підготувала інструкції з міграції. 1 серпня Coinkite оновила advisory, визнавши знижену ентропію також у Mk4/Mk5/Q.
Водночас інцидент викликав критику: дефект лишався в продакшені п'ять років попри оновлення та перевірки, а затримка з попередженням не дала частині користувачів часу переїхати до того, як до них дійшла черга. Додаткові питання викликає походження зміни 2021 року: CEO Foundation Devices Зак Герберт пов'язує її з переписуванням прошивки та заміною GPL-коду на нові криптобібліотеки, а не з цілеспрямованим "дизайном безпеки". Дослідник Wizardsardine Кевін Лоек також звертає увагу, що multisig-конфігурації з ключами, похідними від уражених seed Coldcard, слід вважати під загрозою; на його думку, це не повністю розкрито в advisory.
Що робити постраждалим: міграція коштів
Самого оновлення прошивки недостатньо. Якщо seed створено на вразливій версії, слабкість уже "зашита" в нього. Рекомендований підхід (за Coinkite та гайдами Bitcoin Magazine):
1) Оновіть прошивку до останньої патченої версії для вашої моделі та гілки релізів. Завантажуйте файл лише з офіційного сайту Coinkite.
2) Згенеруйте новий seed на оновленому пристрої (не імпортуйте старий). Для посилення ентропії додайте щонайменше 50 незалежних приватних кидків кубика.
3) Перевірте резервну копію нового seed: запишіть слова, пройдіть перевірку на пристрої. Згенеруйте адресу для отримання і звірте, що вона однакова в софті та на екрані Coldcard.
4) Переведіть весь BTC зі старих адрес на адреси, похідні від нового seed. Перед підписом уважно перевіряйте адресу призначення та параметри транзакції на екрані пристрою.
5) Підтвердьте завершення: перевірте підтвердження у надійному блок-експлорері, переконайтесь, що на старих адресах не лишилося BTC і що новий гаманець відображає повний баланс.
6) Лише після підтвердження всіх переказів безпечно знищіть бекапи старого seed і приберіть усі фізичні та цифрові копії.
Під час термінового переказу врахуйте комісію мережі та не ставте надто низьку fee. Для multisig потрібно замінити кожен ключ, похідний від ураженого seed, переглянути поріг підпису та перевірити нову конфігурацію перед переміщенням значних сум.
Кого це не стосується
Ця конкретна помилка генерації ентропії не зачіпає інші апаратні гаманці автоматично. Ledger, Trezor і Block (Bitkey) заявили, що використовують інші механізми генерації ентропії; отже, вразливість Coldcard на їхні seed не поширюється.
Ширший висновок для self-custody
Самозберігання тримається на двох умовах: контроль над приватними ключами та якісна випадковість під час їхньої генерації. Індустрія традиційно наголошує на першому принципі ("not your keys, not your coins"), але значно рідше — на другому. Випадок Coldcard показує: навіть повний контроль над ключами не рятує, якщо пристрій створив їх із передбачуваних даних.
Інцидент став уже третьою помітною невдачею PRNG у криптосекторі за останні роки після Milk Sad (2023) та Ill Bloom (2026). У всіх випадках збій був на етапі генерації ключів — процесі, який звичайний користувач майже не може перевірити. У цьому контексті Blockaid також зазначала, що в першій половині 2026 року більшість втрат у криптоіндустрії була пов'язана саме зі скомпрометованими ключами та провалами операційної безпеки, а не з експлойтами смартконтрактів.
CoinDesk повідомляв, що подібні інциденти можуть підштовхувати частину інвесторів до Bitcoin ETF: вони прибирають операційні ризики генерації й зберігання ключів, але замінюють їх залежністю від кастодіана та фінансової установи. Ризик зберігання не зникає — змінюється носій відповідальності.
Матеріал має інформаційний та навчальний характер і не є фінансовою, інвестиційною, юридичною чи безпековою порадою. Перед будь-якими діями в криптосфері проводьте власне дослідження.
FAQ: короткі відповіді
- Чи скомпрометований мій Coldcard? Ризик високий, якщо seed створено на Mk2/Mk3 із прошивкою v4.0.0—v4.1.9 без достатньої ентропії від кидків кубика. Для Mk4/Mk5/Q seed, створених до патчів, оцінюється ~72 біти ентропії: масового зламу не підтверджено, але рівень нижче очікуваного. Рекомендація: оновитися, створити новий seed і мігрувати кошти.
- Чи вирішує проблему оновлення прошивки? Ні. Воно захищає лише майбутню генерацію seed і не підсилює вже створений слабкий seed.
- Чи зачеплені Ledger і Trezor? Ні. Вони підтвердили інші методи генерації ентропії; ця вразливість не поширюється на їхні seed.
- Скільки BTC викрали? Станом на 2 серпня 2026 року — близько 1"367 BTC (приблизно $89 млн) у трьох хвилях, постраждало 4"585 адреси. Розслідування триває, оцінки можуть змінитися.
- Хто атакувальник? Особу не встановлено. Galaxy Research вважає, що хвилі 1 і 2 могли бути роботою одного оператора, а хвиля 3 має іншу ончейн-поведінку. Близько 600 підозрілих адрес передано слідчим.
- Чи захищають кидки кубика? Так, якщо під час генерації seed було використано щонайменше 50 незалежних і приватних кидків. Це додає зовнішню ентропію, яку збійний RNG пристрою не може зменшити; Coinkite заявляла, що за правильно виконаного процесу ризик мінімальний.