Апаратні гаманці Coldcard під ударом: через вразливість seed-фраз викрадено біткоїни на десятки мільйонів
Ринкове зведення ШІ
Galaxy Research пов'язує скоординовану крадіжку 30 липня із недостатньою ентропією seed-фрази на певних версіях прошивки Coldcard, що потенційно впливає приблизно на 1 196 адрес і до приблизно 1 083 BTC. Інцидент не пов'язаний із фішингом, а є системною вадою генерації seed-фрази, що підвищує сприйманий ризик зберігання активів і операційний ризик для користувачів self-custody та ланцюгів постачання апаратних гаманців. У короткостроковій перспективі це може спровокувати запобіжні міграції коштів, вищу активність ончейн і ризик-оф настрої навколо інфраструктури зберігання BTC.
Рівень впливу
● Середній
Активи, яких стосується
BTC/USDT-2.08%
Інсайт ШІ · BTC/USDTІнсайт ШІ
▼ Ведмежий
Торгувати
⚠️ Інсайти, згенеровані ШІ, ґрунтуються на новинних матеріалах і надаються виключно з інформаційною метою. Вони не є інвестиційною порадою та не відображають поглядів BingX. Інвестування пов’язане з ризиком. Будь ласка, торгуйте відповідально.
30 липня зловмисник скористався слабкими seed-фразами, згенерованими на окремих апаратних гаманцях Coldcard, і вивів біткоїни з сотень адрес. За даними Galaxy Research, основна хвиля транзакцій відбулася у щільно скоординованому ривку тривалістю близько 25 хвилин; ширший аналіз пов'язав приблизно 1'196 адрес і до 1'083 BTC із активністю, що тривала близько 41 хвилини. За поточними оцінками йдеться майже про $70 млн, остаточні цифри можуть змінитися в міру подальшого відстеження ланцюжка транзакцій у публічному блокчейні Bitcoin.
Постраждали переважно довгострокові власники, які створювали фрази відновлення на Coldcard із вразливою прошивкою, що випускалася починаючи з березня 2021 року. Coldcard — це air-gapped гаманець канадського виробника Coinkite, розроблений для ізоляції ключів BTC від пристроїв, під'єднаних до інтернету. Багато зі спустошених адрес не проявляли активності роками.
Характер виведення коштів свідчив про автоматизовану операцію: кошти переміщувалися швидко, із підвищеними фіксованими комісіями та без "change outputs", тобто кожну адресу спорожнювали повністю. Ознак фішингу, шкідливого ПЗ на комп'ютері користувача, фізичної крадіжки пристрою чи типового віддаленого злому не виявлено. Причина — помилка у прошивці, яка послабила випадковість під час генерації seed-фраз на частині пристроїв. Фрази виглядали коректно, але фактично походили з набагато меншого простору можливих комбінацій, ніж заявлялося.
Seed-фраза — це секрет (зазвичай 12 або 24 слова), з якого гаманець формує адреси та приватні ключі. Для 12-слівної фрази стандартом вважаються 128 біт ентропії — настільки великий простір варіантів, що підбір практично неможливий. Coldcard мав отримувати випадковість із апаратного генератора випадкових чисел у мікроконтролері, який використовує фізичний електричний шум.
Coinkite пояснила, що під час міграції програмної бібліотеки у 2021 році стали плутатися дві функції генерації випадкових чисел із однаковими інтерфейсами: одна зверталася до апаратного генератора, інша була слабким програмним резервним варіантом для плат без відповідного заліза. Налаштування вимкнуло стандартний апаратний шлях MicroPython, оскільки Coinkite використовувала власний обгортковий модуль. Перевірка у коді дивилася лише на наявність цього параметра, а не на те, чи він увімкнений. У результаті параметр існував, але мав значення нуль, збірка проходила, а генерація seed-фраз непомітно переходила на слабший програмний генератор.
Цей резервний механізм значною мірою спирався на передбачувані дані пристрою: ідентифікатор чипа (на кшталт серійного номера) та значення внутрішнього годинника, пов'язані з таймінгами запуску. Якщо звузити діапазон цих вхідних параметрів, завдання підбору стає суттєво легшим за очікувані 128 біт. Coinkite оцінила ефективний простір пошуку для вразливих seed-фраз Mk3 приблизно у 40 біт за поточних припущень: це все ще багато, але вже посильно для спеціалізованих обчислень, особливо коли кандидатні seed-фрази можна звіряти з адресами, видимими у блокчейні.
Пізніші моделі Coldcard, зокрема Mk4, Q і Mk5, додали частину випадковості із secure element. Втім, за оцінками, до ураженого генератора потрапляла лише обмежена частка цієї випадковості, тож seed-фрази, створені до встановлення виправленої прошивки, могли мати близько 72 біт ефективної ентропії — краще за Mk3, але нижче за цільові 128 біт. У спрощеній аналогії це як замінити справді випадкову комбінацію замка на похідну від серійного номера та часу першого ввімкнення: виглядає випадково, але знаючи формулу й приблизні стартові дані, її можна відтворити.
Coinkite опублікувала попередження з безпеки та випустила виправлену прошивку після того, як дізналася про активну атаку. Компанія наголошує: користувачам, які створювали seed-фрази на ураженій прошивці, потрібно згенерувати повністю нову seed-фразу вже на виправленій версії та перевести біткоїни на адреси, контрольовані цією новою фразою. Самого оновлення прошивки недостатньо: seed-фраза, створена за дефектних умов, назавжди лишається слабкою, бо оновлення не може "додати випадковості" словам, які вже існують.
Рекомендована послідовність дій від Coinkite: оновити пристрій, створити нову seed-фразу, перевірити резервну копію та відбиток гаманця (wallet fingerprint), підтвердити адресу отримання, надіслати малу тестову транзакцію, після чого перевести решту балансу. Старий бекап варто зберігати до підтвердження переказу, але більше не вважати стару seed-фразу безпечною.
Компанія назвала виправлені релізи: для Mk3 — версія 4.2.0 або новіша; для Mk4 і Mk5 — 5.6.0 або новіша; для Q — 1.5.0Q або новіша, а також відповідні версії Edge. Продукти Tapsigner, Opendime та Satscard використовують інший код і, за повідомленнями, не постраждали.
Деякі користувачі Coldcard були захищені додатковими заходами. Ті, хто під час генерації seed-фрази додавав достатньо незалежної випадковості через кидки кубика, суттєво зменшували ризик, оскільки власна ентропія перекривала дефектний програмний внесок. Coinkite зазначила, що щонайменше 50 приватних кидків чесного кубика забезпечують адекватний захист у межах цієї проблеми, а додаткові кидки збільшують запас міцності. Сильна BIP39 passphrase створює окремий гаманець, який неможливо відновити лише зі слів seed-фрази. Мультипідписні схеми, де для переказу потрібні ключі з кількох пристроїв або локацій, також переважно або повністю захищали кошти, якщо вразлива seed-фраза Coldcard була лише одним із компонентів.
31 липня CEO Coinkite Родольфо Новак (відомий як NVK) публічно вибачився й заявив, що компанія бере на себе повну відповідальність за збій у прошивці: "Мені шкода, я розбитий. Наша команда спустошена вчорашніми новинами". Він підкреслив, що "hotfix" захищає нові seed-фрази, але не може виправити ті, що були створені на вразливому ПЗ. Новак також повідомив, що Coinkite оприлюднить повний технічний звіт після верифікації деталей і допомагатиме постраждалим із поліцейськими заявами, страховими вимогами або незалежними розслідуваннями.
Окремо NVK попередив розробників, що інструменти штучного інтелекту можуть швидше за традиційні процеси рев'ю знаходити приховані слабкі місця в старому публічному коді. Coinkite зазначила, що змушена припускати використання ШІ для аналізу її opensource-прошивки, хоча доказів того, як саме виявили вразливість, немає. Компанія також визнала, що нещодавня перевірка із застосуванням провідної AI-моделі не виявила проблему.
Конкуренти на тлі інциденту заявили, що їхні продукти не зачеплені. Ledger повідомила в X: "Ledger не постраждав від нещодавно опублікованого advisory щодо Coldcard Mk3", додавши, що пристрої Ledger використовують сертифікований True Random Number Generator (TRNG) у Secure Element і генерують повні 256 біт ентропії для кожної 24-слівної Secret Recovery Phrase. Trezor також заявила: "Користувачі Trezor: ваші кошти в безпеці", пояснивши, що проблема обмежується власною кастомною прошивкою Coldcard і способом отримання випадковості. Акаунт Trezor у X додав, що компанія завжди змішувала кілька незалежних джерел ентропії (залізо пристрою + host + secure elements у новіших моделях) і висловила співчуття тим, хто втратив BTC.
Особа нападника невідома, а викрадені біткоїни можуть бути переміщені з адрес консолідації будь-якої миті. Слідчі намагаються з'ясувати, скільки вразливих seed-фраз було згенеровано насправді, який обсяг BTC ще під загрозою та чи ідентифікував нападник додаткові гаманці з великими залишками.
Додаткову складність створює політика приватності Coinkite. Співзасновник Casa Джеймсон Лопп написав у X: "Двосічний меч: Coinkite видаляє всі записи про клієнтів через 120 днів для захисту від витоків". Це означає, що компанія не може напряму попередити покупців, які придбали вразливі Coldcard за останні 5 років.
Псевдонімний opensource-розробник Bitcoin під ніком calle також прокоментував ситуацію: "Мені щиро шкода всіх постраждалих, особливо тих, хто міг щойно втратити заощадження всього життя. Найгірше те, що вони все зробили правильно".
Інцидент стане тестом для здатності Coinkite відновити довіру до Coldcard, а також може підштовхнути виробників апаратних гаманців до сильніших незалежних перевірок процесу генерації seed-фраз. Для користувачів пріоритет простіший: якщо seed-фраза була створена на ураженій прошивці без достатньої незалежної ентропії від кубика, без passphrase або без мультипідпису, її слід вважати скомпрометованою та обережно перевести кошти на новий гаманець із щойно згенерованою seed-фразою. Спільнота закликає поширювати попередження, щоб запобігти подальшому спорожненню вразливих адрес.