Баг у Coldcard міг призвести до викрадення понад $100 млн: постраждали тисячі користувачів

Ринкове зведення ШІ
Повідомлення про ваду генерації сид-фраз у Coldcard, яка дозволяє зловмисникам вивести орієнтовно 1,596 BTC (понад $100M) з тисяч адрес, підривають довіру до безпеки апаратних рішень для самостійного зберігання. Хоча виправлене прошивання запобігає появі слабких сидів у майбутньому, раніше створені гаманці залишаються вразливими, якщо користувачі не замінять ключі та не мігрують кошти. Цей епізод підвищує премії за операційний ризик і ризик зберігання у практиках зберігання Bitcoin та може спровокувати короткострокове зміщення до risk-off серед власників, чутливих до безпеки.
Рівень впливу
● Середній
Активи, яких стосується
BTC/USDT+1.24%
Інсайт ШІ · BTC/USDTІнсайт ШІ
▼ Ведмежий
Торгувати
⚠️ Інсайти, згенеровані ШІ, ґрунтуються на новинних матеріалах і надаються виключно з інформаційною метою. Вони не є інвестиційною порадою та не відображають поглядів BingX. Інвестування пов’язане з ризиком. Будь ласка, торгуйте відповідально.
Підприємець із Торонто Джонатан Ґудмен вважав, що зробив усе правильно для захисту своїх біткоїнів. Апаратний гаманець Coldcard із ключами ніколи не підключався до інтернету й зберігався в банківській комірці. Seed-фраза, якою він ні з ким не ділився, лежала в іншій комірці. Та 29 липня, за словами Ґудмена, спорожніли всі його гаманці — викрали кожен сатоші. Він повідомив про втрату 18,25 BTC, що на момент атаки коштувало трохи понад $1,17 млн. «Найважче те, що я все зробив правильно», — написав він 1 серпня в дописі на X. За даними Galaxy Research, випадок Ґудмена став частиною масштабнішої серії атак, що зачепила тисячі користувачів Coldcard. Аналітики заявили про високий рівень впевненості, що було викрадено 1 596 BTC (понад $100 млн) приблизно з 7 300 адрес. Керівник досліджень Galaxy Алекс Торн 4 серпня оцінив, що вразливість могли експлуатувати щонайменше 15 різних зловмисників. Фізичний доступ до пристроїв не був потрібен. Суть апаратних гаманців у тому, що їхні секрети не мають покидати чип, а відсутність інтернет-з'єднання нібито залишає єдиний шлях атаки — через фізичний доступ. Попри побутові ризики на кшталт втрати пристрою або насильницького примусу (так звані wrench attacks), головний аргумент на користь "холодних" гаманців — захист від онлайн-зламів. У випадку Coldcard ця обіцянка не спрацювала. Як випливає з розслідування, проблема була не в самому пристрої, а в тому, як генерувався секрет — seed-фраза, що захищає монети користувачів. Криптогаманці бувають різні: програмні (hot wallets) працюють на пристроях з доступом до інтернету, зручніші, але вразливіші у разі компрометації. Апаратні (cold wallets), зокрема Coldcard, тримають ключі на окремому пристрої без підключення до мережі. Найпершою формою "холодного" зберігання були "паперові гаманці", де ключі записувалися на папері: їх важко зламати дистанційно, але легко пошкодити або втратити. Апаратні гаманці — компроміс між папером і браузерним hot wallet: зламати складніше, втратити важче, але абсолютної гарантії немає. «Airgapped-системи допомагають, але це не ідеальна відповідь. Безпека має починатися з того, як генеруються ключі, і продовжуватися на кожному етапі зберігання», — сказав CoinDesk засновник TEXITcoin Боббі Ґрей. Саме на етапі генерації ключів, як виявилося, і виник збій у Coinkite — виробника Coldcard. У березні 2016 року Coinkite, біткоїн-компанія з Торонто, повідомила клієнтів про згортання свого хостингового hot wallet. Компанія посилалася на постійні хвилі шкідливого трафіку, спрямованого на виведення сервісів з ладу, а також на зростання юридичних витрат і регуляторні ускладнення. Натомість Coinkite вирішила розвивати децентралізоване "залізо" та підхід "software not as a service". Це було на ранньому етапі історії крипторинку, ще до другого халвінгу Bitcoin, коли 1 BTC торгувався трохи вище $400. Першим продуктом цього повороту став Opendime у квітні 2016 року — невелика USB-паличка, яка генерувала й приховувала приватний ключ, дозволяючи передавати біткоїн як фізичний інструмент на пред'явника. Порушення пломби пристрою відкривало ключ і давало змогу витратити кошти. Згодом з'явився Coldcard. У грудні 2017 року Coinkite анонсувала його під заголовком «The World Needs An Open, Cheap & Ultrasecure Hardware Wallet», стверджуючи, що наявні апаратні гаманці надто дорогі й залежать від пропрієтарних застосунків. Перший дизайн поєднував цифрову клавіатуру, екран, secure element і слот MicroSD. Файли непідписаних і підписаних транзакцій можна було переносити між Coldcard і комп'ютером без встановлення живого з'єднання. Для роботи не були потрібні акаунт Coinkite чи настільний застосунок. Перші поставки почалися у 2018 році. Наступна модель, випущена у квітні 2019 року, отримала додаткові функції. З кожною версією Coldcard ставав складнішим і, теоретично, технологічно досконалішим. Саме складність була частиною привабливості: продукт орієнтували на користувачів, готових перевіряти деталі транзакцій, керувати бекапами та будувати власну модель безпеки. Функції на кшталт PIN-кодів під примусом, зашифрованих резервних копій на MicroSD, підтримки multisig і кидків гральних кісток для додаткової випадковості були адресовані тим, хто сприймає самозберігання як протистояння з потенційним зловмисником. Код Coldcard також був відкритим. Користувачі могли перевіряти прошивку, відтворювати збірку й порівнювати її з релізом Coinkite. Та, як з'ясувалося, ключовий збій у генерації seed з'явився під час великої зміни ПЗ у 2021 році й роками лишався непоміченим. Coinkite описувала прошивку версії 4.0.0 як «All New Code, Same Great Features». Реліз замінив попередній код новими еквівалентами, додав reproducible builds і подякував акаунту "switck" за "new source code library". Розробник Bitcoin Джеймс О'Бейрн ідентифікував "switck" як акаунт співзасновника Coinkite Пітера Ґрея: він знайшов 58 змін коду, опублікованих під ім'ям "switck", із тим самим криптографічним підписом, який Ґрей використовував у комітах під власним ім'ям. Такі підписи працюють як цифрові автографи, що свідчать: обидва набори змін були схвалені одним і тим самим секретним ключем підпису. Coinkite на цю заяву не відповіла. Switck розробив libngu — набір повторно використовуваного коду, інтегрованого у прошивку Coldcard. Один із його обов'язків — допомагати створювати випадковість, потрібну для генерації гаманців. О'Бейрн повідомив, що під час аудиту коду Coldcard у травні 2025 року поставив під сумнів цей процес. Відстеживши джерело випадковості до libngu, він повідомив Coinkite про можливий дефект. За словами О'Бейрна, компанія відповіла, що реальну проблему, ймовірно, вже давно виявили б. «Це той самий чоловік, який знизав плечима на мій звіт про можливість дефекту в травні 2025 року», — згодом написав він про Пітера Ґрея. Випадковість критична, бо новий гаманець має обрати seed із величезної кількості можливих значень. Непередбачуваність вибору вимірюють у бітах "ентропії": кожен додатковий біт подвоює кількість варіантів і робить seed важчим для підбору. Coldcard мав отримувати випадковість із виділеного апаратного генератора всередині пристрою. Натомість через помилку конфігурації гаманець переключився на простіший програмний генератор, який використовував, зокрема, дані про пристрій і час. Такі дані не є повністю випадковими, їх можна звузити або відтворити, різко зменшивши кількість seed, які потрібно перебирати атакувальнику. Інакше кажучи, код Coldcard мав обирати секрет кожного гаманця з настільки величезного простору можливостей, що жоден комп'ютер не зміг би перебрати все. Через помилку "підключення" він звертався до слабшого джерела, яке звузило простір до рівня, достатнього для практичної атаки. За оцінкою інженерної та security-команди Block, збій виник через те, як два програмні компоненти взаємодіяли під час читання налаштування. Налаштування мало вимикати одне джерело випадкових чисел після додавання іншого. Libngu перевіряв лише наявність параметра, не з'ясовуючи, увімкнений він чи вимкнений. У результаті прошивка збиралася коректно, але використовувала не той генератор. Block повідомила, що пристрої Mk2 і Mk3 у цьому процесі не отримували захищеної випадковості взагалі. Mk4, Q і Mk5 отримували її частково, але ПЗ зберігало лише невелику частку. Coinkite оцінює, що ці новіші моделі створювали seed із 72 бітами випадковості замість запланованих 128 — це означає приблизно у 72 квадрильйони разів менше можливих seed. Block відстежила вразливий код до прошивки 4.0.0, випущеної 17 березня 2021 року. Coinkite вказує, що для користувачів Mk2 і Mk3 першою ураженою версією була 4.0.1. Вихідний код був у відкритому доступі, а правильний апаратний генератор присутній у фінальній прошивці. Оглядачі підтверджували наявність компонента, але не простежили весь шлях генерації seed від початку до кінця, щоб визначити, який саме генератор реально використовується пристроєм. Компанія заявила, що перевірки з використанням ШІ до крадіжок також не помітили помилки. Після інциденту тести з кількома провідними AI-моделями теж не змогли її ідентифікувати. Coinkite пообіцяла оприлюднити детальніший звіт про збій і повідомила, що напряму підтримує постраждалих клієнтів. На запит CoinDesk компанія не відповіла. Coinkite випустила виправлену прошивку для всіх уражених моделей Coldcard і всіх гілок релізів. Оновлення виправляє генерацію seed у майбутньому, але не посилює seed, уже створені уразливим ПЗ. Згідно з advisory Coinkite, користувачам потрібно встановити виправлену прошивку, згенерувати новий seed і перевести біткоїни на адреси, отримані з нього. Coldcard будували навколо ідеї, що біткоїнери можуть відмовитися від кастодіанів і зменшити кількість сторін, яким треба довіряти. Цей інцидент не повертає довіру до бірж чи банків як контрагентів. Він показує іншу залежність самозберігання: ключі у користувача, але виробник гаманця все одно визначає, чи були ці ключі створені безпечно. Ключ до біткоїн-стеку Ґудмена на суму понад мільйон доларів лежав у банківській комірці, всередині пристрою, який ніколи не виходив в онлайн. Через помилку в програмі генерації seed у Coldcard його фізичні запобіжні заходи не мали значення.