Коротко
30 липня 2026 року з біткоїн-гаманців вивели понад тисячу BTC, не торкнувшись жодного пристрою. Причина — помилка в прошивці апаратного гаманця Coldcard, через яку сід-фрази пʼять років створювалися не з апаратного шуму, а з передбачуваних чисел. Ключі можна було підібрати на звичайному компʼютері.
- Коротко
- Що саме зламалося
- Як зі слабкого сіду роблять гроші
- Кого стосується: моделі, прошивки, виправлення
- Чому «72 біти» і «4 мільярди» — про одне й те саме
- Хто виявився захищеним — і з якими застереженнями
- Що ще вважати скомпрометованим, окрім сід-фрази
- Що робити — покроково
- Чого робити НЕ треба
- Що ця історія змінює в правилах вибору та експлуатації
- Ризики, що лишаються після міграції
- Що лишилося нез’ясованим
- FAQ
Головне, що потрібно знати власнику:
- Оновлення прошивки не лікує вже створений сід. Воно захищає лише наступний, який ви згенеруєте заново.
- Перевірити, слабкий ваш сід чи ні, неможливо. Публічного тесту не існує, а слабкий сід поводиться як цілком нормальний.
- Якщо сід створювався на враженій прошивці — переносьте кошти на новий. Не відкладайте: Galaxy Research попереджає про ймовірність нових хвиль.
- Вражені Mk2, Mk3, Mk4, Mk5 та Q. Не вражені Mk1, найстаріші збірки Mk2/Mk3, а також TAPSIGNER, OPENDIME і SATSCARD.
- Уціліли ті, хто під час створення сіду додав власну випадковість: кидки грального кубика або свій таємний додаток до сід-фрази (passphrase).
Що саме зламалося
Сід-фраза — це не «пароль, який вигадав гаманець». Це дуже велике випадкове число, записане словами. Увесь захист тримається на одному: число має бути справді випадковим. Якщо його можна передбачити або перебрати, решта заходів безглузді — сейф, схованка, відсутність інтернету не означають нічого.
Щоб отримати справжню випадковість, пристрої використовують апаратний генератор — окремий блок усередині чипа, який знімає фізичний шум (теплові коливання, дрижання схеми). Такий шум непередбачуваний у принципі. Програмний генератор влаштований інакше: він бере стартове значення й розгортає його в довгу послідовність за формулою. Знаючи стартове значення, всю послідовність можна повторити точнісінько.
У прошивці Coldcard сталося таке. Під час збірки перевірялося, чи ввімкнено апаратний генератор, — але перевірка дивилася лише на наявність налаштування, а не на його значення. Налаштування було присутнє й дорівнювало нулю. Формально умова виконалася, і код мовчки підключився до програмного генератора MicroPython. Збірка не впала, попереджень не було, тести пройшли: генератор справно видавав числа, просто передбачувані.
Стартове значення бралося з того, що було під рукою. За розбором Block, під час першого запуску генератор засівався унікальним ідентифікатором мікроконтролера — сталою заводською міткою, частково видною ззовні як USB-серійний номер пристрою, — разом із лічильником системного таймера та двома регістрами годинника реального часу. Жодна з цих величин не є криптографічним секретом: ідентифікатор фіксований і читається, показання таймерів можна оцінити збоку. Вийшла фабрика ключів, що працює за одним і тим самим кресленням.
Помилка потрапила в код із коммітом від 1 березня 2021 року і вийшла до користувачів із версією прошивки 4.0.0 17 березня 2021 року. Вона пролежала в публічному репозиторії пʼять років — відкритість коду сама собою її не спіймала.
Аналогія, яка описує те, що сталося, найточніше: замок ніхто не зламував. Його виточили на заводі за передбачуваним шаблоном. Сейф увесь цей час стояв замкненим — ключ підібрали ззовні, за кресленням.
Як зі слабкого сіду роблять гроші
Звідси випливає неприємне: атакувальнику не потрібен ані пристрій, ані доступ до нього, ані ваша мережа.
Схема проста й повністю офлайнова. Атакувальник відтворює логіку генератора, перебирає можливі стартові значення й отримує список кандидатів у сід-фрази. З кожного кандидата за публічними правилами (вони однакові для всіх біткоїн-гаманців) виводяться адреси. Далі лишається звірити ці адреси з блокчейном — а блокчейн відкритий для всіх. Збігся адрес із грошима — ключ знайдено. Ваш Coldcard цієї миті вимкнений і лежить у сейфі.
Що підтверджує, що це був саме перебір, а не адресна атака на конкретних людей, — за розбором Galaxy Research, у всіх транзакцій стояла та сама захардкоджена комісія 30 sat/vB — у 30–75 разів вища за медіанну на той момент, — однаковий спосіб пакування транзакцій і жодного виходу зі здачею. Атакувальник не оптимізував нічого: він просто вигрібав усе, що знайшов. Серед постраждалих адрес опинилися всі три покоління форматів: 1 183 сучасних, 7 старого типу і 6 ще старішого — так виглядає робота сканера, а не вибір жертв.
Портрет постраждалої адреси, за даними Galaxy Research: усі — з одним підписом (без мультипідпису), баланс вищий за 0,15 BTC, медіанна адреса не рухалася близько трьох з половиною років. І ключова деталь, яка повʼязує крадіжку саме з цим багом: серед украдених не виявилося жодної монети, отриманої раніше за 17 березня 2021 року — дату виходу тієї самої версії прошивки.
Хронологія виведення коштів (дані Galaxy Research, зріз на 1 серпня 2026 року):Хвиля Коли Виведено Адрес Перша 30 липня, 01:10–01:51 UTC (41 хвилина) 1 082,65 BTC 1 196 Друга 31 липня 76,16 BTC 1 478 Третя 31 липня — 1 серпня ~208 BTC 1 912 Разом 1 367,05 BTC (~$88,6 млн) 4 585
Стовпчик з адресами не сходиться на одиницю, і це не одрук: у прямій цитаті Galaxy для першої хвилі стоїть 1 196 адрес, а в її ж похвильовій розбивці — 1 195. Підсумок наведено за зведеною оцінкою — 4 585. Усі суми в доларах тут і далі перераховані за курсом на дати відповідних подій; на 2 серпня 2026 року біткоїн коштував близько $63 462.
Перша опублікована оцінка — 594 BTC, близько $38 млн із приблизно 500 адрес (31 липня). За добу вона зросла більш ніж удвічі. Це не суперечність у джерелах, а зростання охоплення: ранні підрахунки бачили одну адресу-одержувача з чотирьох. З тієї ж причини «гуляє» тривалість першої хвилі — 15, 25 і 41 хвилина в різних публікаціях.
Ми писали про цю подію в новині — перша хвиля виведення 30 липня тоді оцінювалася в 594 BTC.
Кого стосується: моделі, прошивки, виправлення
Нижче — зведена таблиця за всіма лінійками. Важливо розуміти: значення має та прошивка, на якій сід був СТВОРЕНИЙ, а не та, що стоїть на пристрої зараз.Пристрій Вражені прошивки Оцінка Coinkite Оцінка Block Виправлено у Coldcard Mk2 / Mk3 4.0.1 – 4.1.9 (Block: від 4.0.0) ~40 біт замість 128 до 2^40,7; за відомих таймерів — тривіально 4.2.0 і новіші Coldcard Mk4 / Mk5 усе до 5.6.0 ~72 біти замість 128 стеля 2^32 (~4,3 млрд), у середньому ~2^31 5.6.0 і новіші Coldcard Q усе до 1.5.0Q ~72 біти той самий порядок 1.5.0Q і новіші Гілка Edge (Mk4/Mk5) усе до 6.6.0X ~72 біти той самий порядок 6.6.0X Гілка Edge (Q) усе до 6.6.0QX ~72 біти той самий порядок 6.6.0QX Coldcard Mk1 не вражений — — — Mk2 / Mk3 до версії 3.2.2 включно не вражені — — — TAPSIGNER, OPENDIME, SATSCARD не вражені — — —
Два застереження до таблиці, обидва важливі.
Перше. Щодо нижньої межі для Mk2/Mk3 джерела розходяться на одну версію: Coinkite називає 4.0.1, Block — 4.0.0. Власнику безпечніше вважати враженою всю гілку 4.0.x цілком.
Друге, і воно серйозніше. Частина видань 1 серпня написала, що Mk4, Q і Mk5 «не вражені». Це хибно. Такий рядок справді був у першій редакції попередження Coinkite — як попередня оцінка, — але в оновленій редакції того самого дня компанія сама дає для цих моделей оцінку близько 72 біт замість проєктних 128. Жодне російсько- чи україномовне видання цю правку не відпрацювало. Якщо ви читали, що нові моделі поза небезпекою, — джерело застаріло.
Для повноти картини: оновлення прошивки не «лікує» наявний ключ. Coldcard Mk4 firmware update до версії 5.6.0 захищає лише той сід, який ви створите після оновлення, — якщо ви лишилися на старому, ключ у вас той самий. Те саме і з Coldcard Mk3 firmware: виправлення 4.2.0 працює тільки вперед.
Чому «72 біти» і «4 мільярди» — про одне й те саме
В обговореннях ці дві цифри виглядають як суперечка про те, хто має рацію. Насправді це одна арифметика за різних припущень.
Стартове значення генератора збиралося з кількох полів таймерів. Coinkite вважає ці поля незалежними одне від одного — за такого припущення виходить вільна стеля близько 2^73, звідси й «~72 біти». Block показує, що поля корельовані між собою і частково спостережні ззовні, тому реальний простір перебору стискається до 2^32 — приблизно 4,3 мільярда варіантів, у середньому близько 2^31 спроб. І сам Block прямо застерігає: його ж верхня оцінка 2^73 — не криптостійкість, а саме вільна стеля.
Шкала тут у бітах, а кожен біт — це подвоєння роботи для перебору. Різниця між 128 і 72 бітами виглядає як «трохи менше за половину», але насправді це різниця у 2^56 разів. Різниця між 72 і 32 бітами — ще в трильйон разів.
Для власника практичний висновок один і той самий, і він не залежить від того, чия модель точніша. 2^31 варіантів перебирається на одній звичайній машині за вихідні. Навіть якщо правильна мʼякша оцінка, ідеться про запас міцності, який завідомо нижчий за проєктний і далі дешевшає разом із залізом. Вважайте себе враженим.
Хто виявився захищеним — і з якими застереженнями
Уціліли саме ті, хто додав у генерацію власну випадковість. Іронічно, що вендор роками подавав ці опції як необовʼязкові, «для параноїків».
Кидки грального кубика. Coldcard уміє приймати результати чесних кидків як джерело ентропії. Від 50 приватних кидків дають не менше ніж 128 біт власної випадковості, від 99 — близько 256 біт. Слово «приватних» тут ключове: кидали при свідках або на відео — ефект втрачено.
Passphrase. Сильна унікальна passphrase (додаткове слово поверх сід-фрази) створює фактично окремий гаманець, до якого перебір сіду не дістається. Але вона не лікує сам сід: базовий гаманець лишається вразливим, і переносити кошти все одно потрібно.
Мультипідпис — і ось тут поширена порада працює наполовину. Мережею розійшлася теза «мультисиг урятував». Першоджерело — розбір Block — каже інакше: мультипідпис захищає, лише якщо кворум не складається цілком із вразливих пристроїв. Схема «2 з 3» на трьох Coldcard з однією й тією самою прошивкою вразлива повністю — атакувальник підбирає всі три ключі. Захищає не мультипідпис як такий, а різнорідність заліза. Із цього випливає, що звична рекомендація взяти другим пристроєм такий самий для резерву після цієї історії стала шкідливою.
Що ще вважати скомпрометованим, окрім сід-фрази
Майже всі матеріали за темою говорять лише про сід-фразу. Насправді від того самого генератора залежало більше, і це варто перевірити за списком:
- Паперові гаманці, згенеровані на Coldcard, — найгірший випадок у всьому інциденті. Там немає проміжних перетворень: вихід генератора стає приватним ключем безпосередньо. А публічна адреса такого гаманця працює для атакувальника оракулом — він одразу бачить, вгадав чи ні.
- Маски Seed XOR у режимі випадкового розділення — якщо ви розбивали сід на частини цією функцією.
- Ключі клонування та USB-ключі пристрою.
- Key Teleport — матеріал для перенесення між пристроями.
- TOTP-секрет Web2FA — двофакторна привʼязка.
- Паролі, збережені в Secure Notes.
- Локальний код HSM, якщо ви ним користувалися.
Найпростіше виходити з правила: усе, що пристрій колись «вигадував» сам на враженій прошивці, вважаємо скомпрометованим.
Що робити — покроково
- Визначте прошивку на момент створення сіду. Не поточну. Якщо не памʼятаєте — вважайте, що потрапляєте під удар: довести протилежне нічим.
- Оновіться до виправленої версії своєї гілки (див. таблицю вище). Це потрібно не для порятунку старого ключа, а щоб новий створювався нормально.
- Згенеруйте новий сід на оновленому пристрої. Якщо є змога — додайте кидки кубика.
- Зробіть і перевірте резервну копію нового сіду, звірте відбиток гаманця й адресу отримання.
- Проведіть тестову транзакцію на невелику суму й переконайтеся, що кошти приходять і надсилаються.
- Переведіть залишок зі старих адрес на нові.
- Стару резервну копію не знищуйте, доки не переконаєтеся, що на старих адресах нічого не лишилося.
Якщо Coldcard у вас єдиний. Цей сценарій є лише в самому попередженні Coinkite. Пристрій один, а сідів потрібно два, тому їх доведеться по черзі підставляти на той самий пристрій — старий, щоб підписати переказ, новий, щоб прийняти кошти. Порядок такий:
- Перевірте паперову резервну копію враженого сіду і звірте відбиток гаманця — вам доведеться повертати цей сід ще двічі.
- Встановіть виправлену прошивку своєї гілки й переконайтеся за екраном пристрою, що версія справді змінилася.
- Зітріть пристрій і створіть на ньому новий сід. Запишіть його, перевірте резервну копію, зафіксуйте відбиток гаманця й адресу отримання.
- Відновіть на пристрої вражений сід і надішліть невелику тестову транзакцію на записану адресу нового гаманця.
- Відновіть новий сід і переконайтеся, що відбиток збігся, а тестова сума надійшла.
- Знову відновіть вражений сід і переведіть на нові адреси весь залишок.
- Відновіть новий сід і підтвердьте, що баланс на місці. Стару резервну копію зберігайте, доки не переконаєтеся в цьому остаточно.
Сенс маневру — у жодний момент не лишитися без робочої копії ключів і не надсилати велику суму на неперевірену адресу.
Якщо ви купуєте другий пристрій під міграцію — не пропускайте розпакування: як перевірити апаратний гаманець на справжність, ми розбирали окремо.
Чого робити НЕ треба
- Не відновлюйте старий сід на новій прошивці «щоб полагодити». Прошивка не змінює вже наявний ключ.
- Не поспішайте. Coinkite прямо попереджає: метушня під час міграції небезпечніша за саму вразливість. Втратити доступ через власну помилку простіше, ніж потрапити під перебір.
- Не вважайте passphrase приводом лишитися. Вона захищає конкретний гаманець, а не сід.
- Не переносьте кошти на біржу «на час». З інциденту з генератором ключів не випливає, що кастодіальне зберігання надійніше — ви просто міняєте один клас ризиків на інший.
- Не покладайтеся на самоперевірку. Її не існує: слабкий сід дає валідні слова, валідну контрольну суму, валідні адреси й валідні підписи. Це рідкісний клас вразливостей, де «у мене все працює» — не аргумент, а симптом.
Що ця історія змінює в правилах вибору та експлуатації
Апаратний гаманець захищає від того, що відбувається після народження ключа: від вірусу на компʼютері, від підміни адреси, від фізичного доступу до пристрою. Цей інцидент стався до — у момент створення ключа. Туди майже ніхто не дивився, і перевірити це самостійно власник не може в принципі.
Звідси три висновки, які варто перенести на будь-який гаманець, а не лише на Coldcard. Вони ж змінюють логіку того, як обрати апаратний гаманець і як холодний гаманець як користуватися ним щодня — тобто самі правила експлуатації.
Різнорідність важливіша за бренд. Два однакові пристрої — це одна точка відмови, подвоєна. Якщо робите мультипідпис, беріть різних виробників.
Власна ентропія перестала бути опцією. Кидки кубика під час створення сіду — це хвилин десять один раз у житті гаманця, і в цьому інциденті вони виявилися єдиним захистом, що спрацював на сто відсотків.
Схема генерації ключа — питання, яке треба ставити до купівлі. Тут показова реакція конкурентів: Ledger заявив, що використовує сертифікований апаратний генератор усередині захищеного елемента з 256 бітами ентропії (подробиці — у нашому огляді Ledger Nano X), Trezor повідомив, що їхній код із Coldcard не перетинається, Foundation 1 серпня опублікувала власну ревізію ентропії Passport. Усе це заяви зацікавлених сторін, які перевіряються лише за їхньою ж документацією, — але сам факт, що вендори кинулися звітувати саме за цим пунктом, показує, наскільки він виявився сліпою плямою. Є й принципово інші схеми — наприклад, холодне зберігання без сід-фрази, де ключ узагалі не виводиться назовні у вигляді слів.
Окремо — про пораду розносити кошти по кількох гаманцях, яку 1 серпня публічно дав Чанпен Чжао зі словами «ніщо не дає 100%». Порада по суті слушна, але в неї є джерело зі своїм інтересом: це засновник найбільшої біржі, для якої самостійне зберігання — конкурент.
Ще один урок — організаційний, і він неочевидний. Як зазначив співзасновник Casa Джеймсон Лопп, Coinkite видаляє дані покупців через 120 днів — щоб їх не можна було вкрасти при витоку. Через це компанія фізично не може обдзвонити власників вразливих пристроїв за пʼять років продажів. Вимоги безпеки тут конфліктують між собою: приватність клієнтів і можливість їх попередити виявилися взаємовиключними.
Ризики, що лишаються після міграції
Міграція закриває головну проблему, але не робить зберігання безпроблемним. Чесний список того, що лишається:
Ризик самої міграції — зараз він вищий за решту. Ви працюєте з ключами вручну, часто поспішаючи, часто вперше. Coinkite прямо попереджає: метушня небезпечніша за вразливість. Типові способи втратити доступ тут — помилитися під час запису нової сід-фрази, стерти пристрій до того, як кошти реально дійшли, переплутати стару й нову резервну копію. Звідси пункти 4–7 плану вище: тестова транзакція й збереження старої копії до кінця — це не перестраховка, а основний спосіб не втратити гроші на рівному місці.
Нові хвилі виведення ймовірні. Galaxy Research відстежує сім адрес-накопичувачів і 293 адреси-сховища й попереджає, що перебір може тривати, доки власники не перемістять кошти. Кожен день на старому сіді — це ставка на те, що до вашої адреси не дійшла черга.
Оцінка стійкості може погіршитися. Обидві цифри — і 72 біти Coinkite, і 2^32 Block — позначені самими авторами як попередні. Уточнення в цьому жанрі зазвичай ідуть у бік «гірше, ніж думали»: так уже сталося з оцінкою збитків, що зросла з 594 до 1 367 BTC за добу.
За помилку вендора платить власник. Це зворотний бік самостійного зберігання, і це варто проговорити прямо: страхування немає, компенсації немає, відкотити транзакцію не можна. З цього не випливає, що кастодіальне зберігання безпечніше — там свій набір ризиків, від блокування рахунку до банкрутства майданчика. Випливає інше: раз ціна помилки повністю на вас, розумно не тримати все в одній схемі й в одному пристрої.
Зворотний бік: апаратні гаманці не перестали працювати. Жоден пристрій у цьому інциденті не був зламаний, фізичний захист спрацював як задумано, зламався один компонент в одного вендора. Швидкість реакції оцінюють по-різному: за хронологією Block попереднє попередження Coinkite вийшло 30 липня, у день першої хвилі, а виправлені прошивки для всіх гілок — 31 липня і 1 серпня; CryptoBriefing при цьому оцінює затримку до попередження приблизно у 30 годин від початку виведень. Репутаційний слід уже є: 31 липня в каталозі гаманців Bitcoin.org відкрили запит на видалення лістингів Coldcard і Coldcard Q, 1 серпня його ухвалили — гаманці з каталогу прибрали. Висновок «апаратні гаманці марні» з цієї історії не випливає — випливає, що перевіряти треба й те, як саме народжується ключ.
Що лишилося нез’ясованим
Чесна межа знання на 2 серпня 2026 року виглядає так.
Причинний звʼязок формально не доведено. Block у своєму розборі прямо пише, що не проводив повного емпіричного тестування експлуатованості. Головний аргумент на користь звʼязку — той самий збіг: серед украдених монет немає жодної, старшої за дату релізу вразливої прошивки.
Роль ШІ — версія, а не факт. Coinkite припускає, що хтось прогнав старі версії коду через ШІ-модель і так знайшов помилку. Сама компанія за кілька тижнів до інциденту проганяла той самий код через одну з найкращих моделей — та не знайшла нічого. З цього не випливає ані «ШІ зламав гаманець», ані «ШІ марний»: випливає лише те, що автоматичне рев’ю — не гарантія для жодної зі сторін.
Шанс на повернення коштів ненульовий. Атакувальник припустився побутової помилки: запитував дані щодо адрес через платний акаунт відомого блокчейн-провайдера, і логи збіглися за кількістю, часом і порядком запитів. Матеріали 31 липня передано правоохоронним органам. Практичний висновок ширший за конкретну справу: анонімність у біткоїні ламається не об сам блокчейн, а об сервіси навколо нього.
Це не перший випадок такого роду. У 2013 році біткоїни крали через недосіяний генератор випадкових чисел в Android — механізм був той самий. Першопричину цього разу лагодять на рівні бібліотеки: у libngu додають режим, за якого відсутність апаратного джерела ентропії призводить до аварійної зупинки замість тихого переходу на програмний, програмний генератор замінюють на перевірений за стандартом, а перевірку додають на етап збірки.
FAQ
Мій Coldcard куплений у 2023 році. Я в небезпеці? Найімовірніше так, якщо це Mk4, Mk5 або Q і сід створювався на заводській прошивці. Пристрої з 2021 до липня 2026 року постачалися з враженими версіями. Дата купівлі ролі не грає — грає прошивка на момент створення сіду.
Я оновив прошивку. Цього достатньо? Ні. Оновлення захищає лише сід, створений після нього. Ключ, який у вас уже є, оновленням не змінюється. Потрібен новий сід і перенесення коштів.
Мій сід із Coldcard я давно ввів в інший гаманець. Там безпечно? Ні. Слабкість міститься в самому сіді, а не в пристрої. Будь-який гаманець, відновлений із цього сіду, успадковує ту саму проблему.
Ledger і Trezor теж під ударом? За цим конкретним багом — ні, код не спільний. Обидва вендори виступили із заявами про власні генератори. Перевірити ці заяви незалежно не можна, тож ставтеся до них як до позиції зацікавленої сторони, а не як до аудиту.
Я кидав кубик, але не памʼятаю скільки разів. Вважайте, що захисту немає, і мігруйте. Нижня межа — 50 чесних приватних кидків; усе, що менше, лишає помітний розрив, а «приблизно стільки» тут не працює.
Чи можу я якось перевірити свій сід на слабкість? Ні. Публічного інструмента не існує, і за пристроєм це ніяк не видно: слабкий сід проходить усі стандартні перевірки. Це і є причина, з якої єдине чесне правило звучить як «сумніваєшся — мігруй».


