П'ятирічна вразливість у програмному забезпеченні Coldcard, ймовірно, дозволила зловмиснику відтворити приватні ключі та викрасти понад 1 100 біткойнів, що змусило розробника гаманця частково покласти провину за це відкриття на штучний інтелект (ШІ).
Чи саме штучний інтелект виявив уразливість у системі безпеки Coldcard?

Основні висновки
- Насіння, пов’язані з Coldcard, залишили незахищеними 1 128,4717 BTC на суму близько 71,1 млн доларів.
- Компанія Coinkite стверджує, що ШІ, ймовірно, виявив цю п’ятирічну вразливість, але авторство цього відкриття залишається недоведеним.
- Користувачі Coldcard, чиї насіння були уражені, повинні створити нові гаманці на фіксованій прошивці.
Скоординована крадіжка спустошила сотні гаманців
Про інцидент стало відомо після того, як 30 липня з приблизно 500 біткойн-адрес з одним підписом було переведено близько 594 BTC, вартість яких на той момент становила майже 38 млн доларів. Коли ця новина вперше з’явилася, Bitcoin.com News зазначив, що перекази відбулися протягом приблизно 25 хвилин і, судячи з усього, були спрямовані на гаманці зі спільною технічною вразливістю.
Пізніше аналіз блокчейну дозволив оцінити можливий масштаб крадіжки. Дослідники підрахували, що протягом приблизно 41 хвилини могли бути уражені від 1 082 до 1 196 адрес. Спеціальна інформаційна панель під назвою Coldcard Sweep Watch згодом визначила загальну суму в 1 128,4717 BTC, що становило близько 71,1 млн доларів, коли біткойн торгувався на рівні близько 63 044 доларів.

Більшість коштів було об’єднано на адресі, що містила сотні біткойнів, де значна частина залишалася практично нерухомою. Адреси, що зазнали впливу, пов’язувала одна важлива деталь: їхні відновлювальні насіння були створені на апаратних гаманцях Coldcard, виготовлених канадською компанією Coinkite.
Початковий набір слів — це список слів, який контролює доступ до криптовалютного гаманця. Будь-хто, хто може відтворити або отримати цей набір слів, зазвичай може переказувати кошти з гаманця, не маючи фізичного пристрою.
Coldcard виявила недосконалість системи генерації випадкових чисел
Coinkite опублікувала термінове попередження про те, що певні ключі відновлення, згенеровані на пристроях Coldcard, можуть бути вразливими. Найбільшому ризику піддавалися пристрої Mk3 з прошивкою версії 4.0.1, випущеною приблизно в березні 2021 року, та пізніші версії.
Подальший аналіз розширив коло занепокоєння на насіння, створені на деяких пристроях Mk4, Mk5 та Q до того, як Coinkite випустила екстрені виправлення прошивки. Продукти Tapsigner, Opendime та Satscard, як повідомляється, не були уражені, оскільки вони використовують інше програмне забезпечення.
Вразливість стосувалася процесу генерації випадкових даних. Безпечні гаманці залежать від високої якості випадковості, щоб їхні седи для відновлення не можна було вгадати. На найбільш уражених пристроях Mk3, за оцінками дослідників, сед міг містити лише близько 40 бітів ефективної випадковості замість передбачених 128 бітів.
Ця різниця є критичною. Правильно згенерований 128-бітний насіннєвий ключ вважається практично неможливим для вгадування методом грубої сили. 40-бітний насіннєвий ключ пропонує значно менше можливостей, що дозволяє зловмиснику з достатньою обчислювальною потужністю перевіряти потенційні насіннєві ключі в автономному режимі та порівнювати отримані адреси з публічним блокчейном Bitcoin.
Деякі новіші пристрої, можливо, забезпечували приблизно 72 біти ефективної випадковості, оскільки захищене апаратне забезпечення додавало ще один рівень непередбачуваних даних. Це ускладнювало б відтворення початкових значень, хоча вони все одно залишалися б набагато слабкішими, ніж передбачалося.
Одна помилка конфігурації проіснувала 5 років
Проблема почалася з помилки конфігурації під час компіляції, пов’язаної з двома програмними функціями, що виконували схожі завдання. Одна функція використовувала апаратний генератор справжніх випадкових чисел пристрою, тоді як інша покладалася на слабший програмний процес, успадкований від MicroPython.
Coinkite мала намір вимкнути опцію MicroPython. Однак програмна перевірка з’ясовувала лише, чи було визначено мітку конфігурації, а не те, чи було її значення встановлено на нуль. Як наслідок, готове вбудоване програмне забезпечення могло непомітно обирати слабшу функцію.
Оскільки обидві функції мали однаковий формат, програмне забезпечення продовжувало компілюватися та працювати без явних помилок. Помилка потрапила в код під час міграції програмного забезпечення у 2021 році та залишалася у загальнодоступній прошивці понад п’ять років.
Оновлення пристрою зараз не зміцнює початковий ключ, який було згенеровано за допомогою помилкового програмного забезпечення. Уражені користувачі повинні створити повністю новий початковий ключ за допомогою виправленої прошивки або іншого безпечного пристрою, а потім перевести свої кошти на адреси, що контролюються цим новим початковим ключем.

Користувачі, які під час створення свого насіння додали щонайменше 50 незалежних кидків кубика, можливо, забезпечили достатній рівень додаткової випадковості, щоб уникнути цієї вразливості. Надійний пароль за стандартом BIP-39 також міг ускладнити відновлення, а гаманці, що вимагають підписів від кількох незалежних пристроїв, могли б запобігти тому, щоб одне скомпрометоване насіння самостійно переказувало кошти.
Coinkite вказує на штучний інтелект, але доказів досі немає
Генеральний директор Coinkite Родольфо Новак публічно вибачився та заявив, що компанія бере на себе повну відповідальність за збій у прошивці. Він зазначив, що команда працює над виправленим програмним забезпеченням, технічними звітами та підтримкою постраждалих користувачів.
Coinkite та Новак також висунули вражаючу теорію щодо того, як було виявлено цю вразливість. Оскільки прошивка компанії була загальнодоступною протягом багатьох років, у компанії вважають, що хтось міг використати штучний інтелект для аналізу старих версій коду та виявлення слабкого ланцюжка генерації випадковості.
«До уваги всіх інших розробників: ми вважаємо, що це сувора реальність нової парадигми штучного інтелекту. Перевірка коду за допомогою ШІ тепер дозволяє виявляти приховані помилки зі швидкістю, що випереджає навіть найдосвідченіших експертів галузі», — написав Новак у своєму дописі з вибаченнями, опублікованому на X. «Якщо ваше вбудоване програмне забезпечення є відкритим або коли-небудь було загальнодоступним, вважайте, що його вже вивчають як зловмисники, так і фахівці з безпеки».
Сучасні системи кодування на основі ШІ здатні обробляти великі репозиторії програмного забезпечення та виявляти підозрілі взаємозв’язки між параметрами конфігурації, функціями та припущеннями щодо безпеки. Зловмисник може попросити таку систему спеціально шукати слабкі генератори випадкових чисел, резервні функції або помилки, що впливають на криптографічні ключі.

Пізніше незалежні дослідники повідомили, що використовували моделі ШІ для виявлення або пояснення проблеми після того, як стала відома основна проблема з випадковістю. Це продемонструвало, наскільки доступним став аналіз коду за допомогою ШІ, але не доводило, що саме зловмисник, який першим виявив уразливість, використовував ШІ.

Компанія Coinkite визнала, що її власний аналіз із використанням провідної моделі ШІ не виявив цю вразливість до крадіжки. Цей результат показує, що системи ШІ не завжди автоматично виявляють усі серйозні дефекти. Їхня ефективність може залежати від отриманих інструкцій, обсягу наданого коду та того, чи розуміє експерт-людина попереджувальні ознаки.
Критики стверджують, що спочатку сталася людська помилка
Деякі фахівці з безпеки стверджують, що надмірна зосередженість на штучному інтелекті (ШІ) може відволікти увагу від базової інженерної помилки. Багато хто вважає, що помилка в конфігурації була відомим типом програмної помилки, і її можна було виявити роками раніше за допомогою звичайних перевірок коду, процедур тестування або аудитів, зосереджених на генерації початкових значень.

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
















