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

Основні висновки
- 30 липня внаслідок крадіжок, пов’язаних із Coldcard, з сотень гаманців було викрадено біткойни.
- За даними Coinkite, насіння Mk3 мали ентропію близько 40 бітів замість 128.
- Користувачам Coldcard необхідно встановити виправлену прошивку та створити нові насіння перед переказом коштів.
Згідно з глибоким аналізом Galaxy Research, основна крадіжка відбулася у вигляді ретельно скоординованої серії операцій, що тривала близько 25 хвилин, тоді як більш широкий аналіз пізніше пов’язав приблизно 1 196 адрес та аж 1 083 біткойни, вартістю майже 70 мільйонів доларів, з діяльністю, що тривала приблизно 41 хвилину. Остаточні цифри можуть змінитися, оскільки слідчі продовжують відстежувати транзакції у публічному блокчейні біткойна.
5-річна уразливість зачепила біткойн-гаманці по всьому світу
Постраждалі гаманці здебільшого належали довгостроковим власникам, які генерували свої відновлювальні насіння за допомогою пристроїв Coldcard із вразливим прошиванням, випущеним починаючи з березня 2021 року. Coldcard — це апаратний гаманець з ізольованим доступом, виготовлений канадським виробником Coinkite та призначений для ізоляції ключів біткойна (BTC) від пристроїв, підключених до Інтернету.
Багато з порожнілих адрес роками залишалися неактивними. Зловмисник діяв швидко, сплачував підвищені фіксовані комісії за транзакції та не залишав залишків, що означає: кожна адреса була повністю спустошена. Така схема вказує на автоматизовану операцію з використанням заздалегідь підготовленого списку приватних ключів, а не на самостійне переміщення коштів клієнтами.
Крадіжка не була спричинена фішингом, шкідливим програмним забезпеченням на комп’ютері користувача, фізичною крадіжкою пристрою чи звичайним віддаленим вторгненням. Натомість помилка в прошивці послабила випадковість, що використовувалася під час створення початкових насінь гаманців на деяких пристроях Coldcard. Ці насіння виглядали нормально, але походили з набагато меншого діапазону можливих комбінацій, ніж було обіцяно користувачам.
Генератор випадкових чисел Coldcard непомітно вийшов з ладу
Початкове насіння біткойн-гаманця — це секрет, який зазвичай відображається у вигляді 12 або 24 слів, на основі яких гаманець генерує свої адреси та приватні ключі. Правильно згенероване 12-слівне насіння містить 128 бітів ентропії — технічного показника, що описує величезну кількість можливих комбінацій, що робить вгадування насіння фактично неможливим.
Пристрої Coldcard мали отримувати цю випадковість від апаратного генератора випадкових чисел, вбудованого в мікроконтролер пристрою. Цей компонент використовує фізичний електричний шум, який зовнішній спостерігач не повинен бути здатний передбачити.
Однак під час міграції програмних бібліотек у 2021 році компанія Coinkite повідомила, що дві функції генерації випадкових чисел із однаковими інтерфейсами були переплутані. Одна з них зверталася до власне апаратного генератора пристрою. Інша була слабким програмним резервним варіантом, призначеним для плат без відповідного апаратного забезпечення.
Параметр конфігурації вимикав стандартний апаратний шлях MicroPython, оскільки Coinkite надавала власний апаратний обгорнувач. Програмне забезпечення перевіряло лише наявність цього параметра, а не те, чи був він увімкнений. Оскільки параметр був присутній, але йому було присвоєно значення нуль, збірка завершилася успішно, тоді як генерація початкового числа непомітно переключилася на слабший програмний генератор.
Заводські дані та часові параметри замінили справжню випадковість
Цей запасний варіант значною мірою покладався на передбачувану інформацію про пристрій, зокрема на ідентифікатор мікросхеми, подібний до серійного номера, та значення внутрішнього тактового генератора, пов’язані з часом запуску. Зловмисник, який зміг би звузити ці вхідні дані, зіткнувся б із набагато меншим простором пошуку, ніж 128-бітний діапазон, очікуваний від безпечно згенерованого початкового числа.
За оцінками Coinkite, ефективний простір пошуку для вразливих початкових значень Mk3 за поточних припущень становить приблизно 40 бітів. Це все ще велика кількість можливостей, але їх можна обшукати за допомогою спеціалізованого обчислювального обладнання, особливо коли зловмисник може порівнювати потенційні початкові значення з біткойн-адресами, видимими в блокчейні.

Пізніші моделі Coldcard, зокрема Mk4, Q та Mk5, додали певну випадковість із захищеного елемента. Однак лише обмежена частина досягала уразливого генератора, залишаючи приблизно 72 біти ефективної ентропії для початкових значень, створених до встановлення виправленої прошивки. Це було надійніше, ніж у Mk3, але все ще нижче запланованого 128-бітного стандарту.
Ця різниця схожа на заміну справді випадкової комбінації замка на комбінацію, отриману на основі серійного номера замка та часу його першого увімкнення. Отримана комбінація може здаватися випадковою, але той, хто знає формулу та може оцінити вихідні дані, зможе її відтворити. Багато користувачів переходять на нові пристрої не лише з Mk3, а й з Mk4, Q та Mk5.
Coinkite радить користувачам створити абсолютно нові насіння
Coinkite опублікувала рекомендації з безпеки та випустила виправлену прошивку після того, як дізналася про активну загрозу. Компанія заявила, що користувачі, які генерували насіння на уразливій прошивці, повинні створити повністю нове насіння, використовуючи виправлену версію, та перевести свої біткойни на адреси, що контролюються цим насінням.
Самої лише інсталяції оновлення недостатньо. Початковий код, створений у рамках уразливої системи, залишається вразливим назавжди, оскільки оновлення прошивки не може додати випадковості до слів, що вже існують.
Coinkite порадила користувачам оновити свої пристрої, створити новий сед, перевірити резервну копію та відбиток гаманця, підтвердити адресу отримання, надіслати невелику тестову транзакцію, а потім перевести залишок коштів. Користувачам слід зберігати стару резервну копію до підтвердження переказу, але більше не слід вважати старий сед безпечним.
Компанія визначила виправлені версії, зокрема Mk3 версії 4.2.0 або пізнішої, Mk4 та Mk5 версії 5.6.0 або пізнішої, а також Q версії 1.5.0Q або пізнішої, разом із відповідними версіями Edge. Продукти Tapsigner, Opendime та Satscard використовують інший код і, за повідомленнями, не зазнали впливу цієї уразливості.
Додаткові заходи безпеки захистили деяких власників Coldcard
Користувачі, які під час генерації насіння додали достатню кількість незалежних кидків кубика, були суттєво захищені, оскільки їхня власна випадковість перекрила дефектні вхідні дані програмного забезпечення. Coinkite зазначила, що принаймні 50 приватних кидків чесного кубика забезпечили достатній захист від цієї проблеми, хоча додаткові кидки можуть забезпечити більший запас міцності.
Надійний пароль за стандартом BIP-39 також створює окремий гаманець, який неможливо відтворити лише за словами-початковими даними. Гаманці з багатопідписом, які вимагають ключів з кількох пристроїв або місць перед переказом біткойнів, були значною мірою або повністю захищені, коли вразливі початкові дані Coldcard становили лише одну частину схеми підписання.
Однак ці заходи безпеки були необов’язковими. Багато жертв, судячи з усього, дотримувалися стандартних рекомендацій з безпеки, доступних на той час: придбати надійний апаратний гаманець, згенерувати насіннєве слово в автономному режимі, захистити резервну копію та ніколи не вводити його на пристрій, підключений до Інтернету.
Coinkite бере на себе провину, а дискусія переходить до теми штучного інтелекту
Генеральний директор Coinkite Родольфо Новак, широко відомий як NVK, 31 липня публічно вибачився та заявив, що компанія бере на себе повну відповідальність за збій у прошивці. «Мені дуже шкода, і я у відчаї. Наша команда глибоко засмучена вчорашніми новинами», — написав Новак. Він визнав, що виправлення захищає новостворені насіння, але не може відновити насіння, згенеровані за допомогою вразливого програмного забезпечення.

Новак пояснив, що Coinkite опублікує повний технічний звіт після перевірки деталей та надасть допомогу постраждалим користувачам, які звертаються за поліцейськими протоколами, страховими виплатами або незалежними розслідуваннями. Він також попередив розробників, що інструменти штучного інтелекту (ШІ) тепер можуть сканувати старий відкритий код на наявність прихованих вразливостей швидше, ніж це можуть виявити традиційні процеси перевірки.
Coinkite наголосила, що мусить припустити, що зловмисник використовував ШІ для перевірки її прошивки з відкритим кодом, хоча жодних доказів того, як саме було виявлено цю вразливість, не встановлено. Компанія також визнала, що нещодавня перевірка, проведена за допомогою провідної моделі ШІ, не виявила цієї проблеми. Кілька виробників апаратних гаманців-конкурентів висловилися в соціальних мережах, зазначивши, що їхні продукти не зазнали впливу.
«Опубліковане нещодавно попередження щодо Coldcard Mk3 не стосується Ledger», — повідомила компанія користувачам X після інциденту з Coldcard. «Пристрої Ledger використовують сертифікований генератор істинних випадкових чисел (TRNG), вбудований безпосередньо в наш чіп Secure Element, який генерує повну 256-бітну ентропію для кожної 24-слівної секретної фрази відновлення».
«Користувачі Trezor: ваші кошти в безпеці», — пояснив у п’ятницю виробник апаратних гаманців Trezor. «Нещодавня проблема з Coldcard обмежується їхньою власною кастомізованою прошивкою та тим, як деякі з їхніх пристроїв генерували випадковість. Trezor не використовує цей код».
Акаунт Trezor X додав:
«Ми завжди поєднували кілька незалежних джерел випадковості (апаратне забезпечення пристрою + хост + Secure Elements у новіших моделях). Ми щиро вибачаємося перед усіма, хто втратив біткойни».
На що слід звернути увагу користувачам Coldcard
Особа зловмисника залишається невідомою, і вкрадені біткоїни можуть бути переведені з адрес консолідації в будь-який момент. Розслідувачі досі працюють над тим, щоб визначити, скільки вразливих насінь було насправді згенеровано, скільки біткоїнів залишається під загрозою та чи були вже виявлені зловмисником інші гаманці з великими сумами. Однак у Coinkite може не бути багато інформації про власників, які користувалися послугами компанії давно.
«Цікавий двосічний меч: Coinkite видаляє всі записи про клієнтів через 120 днів, щоб захиститися від витоків даних», — повідомив на X співзасновник Casa Джеймсон Лопп. «Це означає, що вони не можуть зв’язатися з клієнтами, які придбали вразливі coldcards протягом останніх 5 років, щоб попередити їх про цю вразливість».

Цей інцидент також стане перевіркою того, чи зможе Coinkite відновити довіру до Coldcard і чи почнуть виробники апаратних гаманців застосовувати більш суворі незалежні перевірки процесу генерації посівних фраз. Для користувачів найближчий пріоритет простіший: кожен, хто створив насіння на ураженій прошивці без надійної незалежної ентропії кубиків, парольної фрази або захисту за допомогою мультипідпису, повинен вважати його скомпрометованим і обережно перевести кошти на щойно згенерований гаманець.
Окрім цієї руйнівної крадіжки, біткойнери по всій спільноті б’ють на сполох і закликають інших поширювати цю інформацію, перш ніж будуть спустошені ще більш вразливі гаманці.
Цю статтю перекладено з англійської мови за допомогою штучного інтелекту. Оригінальна англомовна версія є авторитетним джерелом; автоматичні переклади можуть містити неточності, особливо в юридичній та нормативній термінології.
















