Как защитить свою крипту?
В прошивке аппаратных кошельков Coldcard обнаружили ошибку, из-за которой часть устройств создавала недостаточно случайные сид-фразы. Злоумышленники смогли подобрать ключи удалённо, без доступа к самим кошелькам, и вывести биткоины примерно из 7000 адресов на сумму примерно 100 млн долларов.
Люди, потерявшие деньги, на первый взгляд сделали всё правильно. Они купили аппаратный кошелёк, не хранили биткоины на бирже и держали устройство отключённым от интернета.
Однако проблема находилась не в хранении, а в моменте создания кошелька.
Что произошло
При настройке аппаратный кошелёк создаёт seed-фразу из 12 или 24 слов. Из неё математически формируются закрытые ключи, позволяющие распоряжаться биткоинами.
Такая фраза должна создаваться из огромного количества случайных комбинаций. Правильно сгенерированную seed-фразу практически невозможно подобрать.
В некоторых версиях прошивки Coldcard генератор случайных чисел работал неправильно. В результате возможных комбинаций оказалось намного меньше, чем должно было быть.
Атакующим не понадобилось:
- красть физическое устройство;
- устанавливать на него вредоносную программу;
- отправлять владельцу фишинговую ссылку;
- получать доступ к компьютеру;
- находить записанные слова восстановления.
Они перебирали предсказуемые комбинации, находили действующие кошельки и выводили средства.
По данным, которые приводит Cinco Días, только за первые 41 минуту с 1196 адресов вывели больше 1000 BTC. Затем оценка выросла примерно до 1755 BTC и 5000 кошельков. Общая стоимость похищенного превысила $100 млн и продолжала меняться по мере обнаружения новых транзакций.
Это не взлом Bitcoin. Ошибка находилась в конкретной реализации аппаратного кошелька.
Что делать владельцам затронутых устройств
Одного обновления прошивки недостаточно. Оно может исправить генератор для будущих кошельков, но не сделает уже созданную seed-фразу более случайной.
Если производитель относит устройство или версию прошивки к затронутым, средства нужно перевести на совершенно новый кошелёк с новой seed-фразой, созданной безопасным способом.
Важно:
- Проверять информацию только на официальном сайте производителя.
- Не переходить по ссылкам из писем и личных сообщений.
- Не вводить старую seed-фразу на сайте или компьютере.
- Создать новый кошелёк, а не восстанавливать старый.
- Сначала отправить небольшую тестовую сумму.
- После проверки перевести оставшиеся средства.
Мошенники обязательно начнут рассылать «инструкции по спасению Coldcard». Настоящая служба поддержки никогда не просит сообщить seed-фразу.
Как снизить риск подобной потери
Добавить BIP-39 passphrase
К стандартной seed-фразе можно добавить дополнительную секретную фразу. Она создаёт отдельный набор адресов, который невозможно восстановить, зная только 24 слова.
Если seed-фраза станет известна злоумышленнику, сильная и неизвестная ему passphrase может сохранить средства.
Но здесь появляется новый риск: забытая passphrase не восстанавливается. Даже правильная seed-фраза без неё откроет другой, пустой кошелёк.
Документация Coldcard рекомендует хранить passphrase отдельно от seed-фразы и обязательно проверять процедуру восстановления.
Использовать несколько независимых ключей
Для значительных сумм можно настроить multisig, при котором для перевода нужны, например, два ключа из трёх.
Ключи желательно:
- создавать на независимых устройствах;
- хранить в разных местах;
- не генерировать одной и той же потенциально уязвимой прошивкой;
- снабдить понятной инструкцией по восстановлению.
Multisig сложнее обычного кошелька. Ошибка в настройке или хранении резервных копий тоже может привести к потере доступа, поэтому сначала систему проверяют на небольшой сумме.
Хранить резервные копии раздельно
Одна копия seed-фразы создаёт риск пожара, затопления или физической потери. Несколько копий уменьшают этот риск, но увеличивают вероятность кражи.
Разумный компромисс:
- две защищённые копии в разных местах;
- отсутствие фотографий и файлов в облаке;
- устойчивый к огню и воде металлический носитель;
- отдельное хранение passphrase;
- периодическая проверка читаемости записей.
Не стоит переставлять слова в «секретном порядке» или придумывать собственный шифр. Через несколько лет такая схема может оказаться непонятной даже её автору.
Проверять восстановление заранее
Резервная копия полезна только в том случае, если из неё действительно можно восстановить кошелёк.
Перед переводом крупной суммы стоит:
- Создать новый кошелёк.
- Записать seed-фразу.
- Получить первый адрес.
- Сбросить устройство.
- Восстановить кошелёк из резервной копии.
- Убедиться, что открылся тот же адрес.
- Перевести небольшую тестовую сумму.
Проводить такую проверку нужно без ввода seed-фразы на подключённом к интернету компьютере.
А как быть с бесконечными разрешениями
Совет не выдавать приложениям неограниченный доступ к токенам тоже полезен, но он относится прежде всего к Ethereum и другим сетям со смарт-контрактами.
У обычного Bitcoin нет механизма ERC-20 approvals. Поэтому сервисы вроде Revoke.cash не помогли бы владельцам Coldcard и не имеют отношения к этой атаке.
Для активной работы с DeFi лучше использовать отдельный кошелёк с небольшой суммой, ограничивать размер разрешений и периодически отзывать ненужные доступы. Основные накопления при этом не должны взаимодействовать со случайными приложениями.
Главный вывод
Аппаратный кошелёк снижает часть рисков, но не отменяет их. Пользователь всё равно доверяет генератору случайных чисел, прошивке, производителю и собственной системе резервного копирования.
Чем больше сумма, тем опаснее полагаться на одно устройство, одну сид-фразу и одну точку отказа.
В криптовалюте выражение «будь сам себе банком» звучит красиво. Просто вместе с должностью директора банка пользователь получает работу службы безопасности, системного администратора и отдела аварийного восстановления.