Randstorm: восстановление кошельков BitcoinJS за 2011–2015 годы
Если вы лишились доступа к биткойн-кошельку, созданному в браузере десять лет назад, та же самая уязвимость, которая делает такие кошельки уязвимыми — Randstorm — иногда может помочь восстановить доступ к вашим собственным средствам. Расскажем, в чем она заключается, кого она затрагивает и как происходит восстановление доступа.
Надежность закрытого ключа зависит от степени случайности, использованной при его создании. «Randstorm» — это название комплекса уязвимостей, которые в определенный период развития веб-браузеров привели к тому, что эта случайность оказалась гораздо слабее, чем предполагалось, — в результате чего у большого числа биткойн-кошельков, созданных в период с 2011 по 2015 год, ключи оказались в той или иной степени предсказуемыми. Для злоумышленника это представляет угрозу; для законного владельца заблокированного кошелька это может стать именно тем фактором, который сделает восстановление доступа возможным.
Что такое Randstorm
Проект Randstorm был назван и публично раскрыт компанией Unciphered, специализирующейся на восстановлении средств, в ноябре 2023 года (они вновь обнаружили его в 2022 году, помогая клиенту, лишившемуся доступа к кошельку Blockchain.com). Основной причиной стала функция SecureRandom() в библиотеке JavaScript JSBN в сочетании с уязвимостями в реализации функции Math.random() в основных веб-браузерах того периода. В совокупности это приводило к генерации приватных ключей с энтропией, значительно ниже той, которая требуется для безопасного кошелька.
Популярная библиотека BitcoinJS использовала этот код JSBN до марта 2014 года, когда разработчики отказались от него. Поскольку многие браузерные кошельки были созданы на основе BitcoinJS или копировали его ранний код, эта уязвимость распространилась по всей экосистеме. Важно отметить, что последствия не одинаковы: ключи, сгенерированные ранее, являются наиболее предсказуемыми — кошельки, созданные до марта 2012 года, взломать проще всего, — в то время как для кошельков, созданных позднее, в 2014 и 2015 годах, объем необходимой работы резко возрастает.
Какие кошельки затронуты
Уязвимость Randstorm затрагивает кошельки, впервые созданные в веб-браузере в период с 2011 по 2015 год с использованием BitcoinJS или проекта, построенного на его основе. К ним относятся:
- Ранние бумажные и браузерные кошельки bitaddress.org и BrainWallet
- Проекты браузерных кошельков, такие как CoinPunk и QuickCoin (в настоящее время не существующий)
- Ранние веб-кошельки Blockchain.info / Blockchain.com того периода
- Другие кошельки для биткойнов и, в некоторых случаях, для Dogecoin, созданные с помощью той же библиотеки
Как правило, это не касается кошельков, созданных с помощью аппаратных устройств (Trezor, Ledger), настольного программного обеспечения, такого как Bitcoin Core, или более поздних версий инструментов с исправлениями. Главный ориентир — это период создания: если кошелек был создан в браузере в первой половине 2010-х годов, его стоит проверить.
Это касается меня?
Задайте себе три вопроса: был ли кошелек создан в период с 2011 по 2015 год; был ли он создан в веб-браузере (а не на аппаратном устройстве или в настольном программном обеспечении); и был ли он сгенерирован на сайте или с помощью инструмента, который, как известно, использует BitcoinJS? Если на все три вопроса ответ «да», считайте, что кошелек потенциально уязвим. Существуют независимые сервисы, позволяющие проверить адрес, и чем раньше в указанном периоде был создан ваш кошелек, тем выше вероятность наличия этой уязвимости.
Randstorm и восстановление кошелька
Именно в этом заключается двоякая сторона данного недостатка. Если вы являетесь законным владельцем и просто лишились доступа к затронутому кошельку — из-за утерянного пароля, невозможности импорта кошелька или закрытия сервиса — сниженная степень случайности иногда позволяет нам восстановить закрытый ключ на основе предоставленной вами открытой информации и вернуть вам контроль над вашими средствами. Это та же математика, которая вызывает беспокойство у исследователей в области безопасности, но применяется в интересах человека, которому на самом деле принадлежат монеты.
Два важных замечания. Во-первых, мы занимаемся исключительно восстановлением кошельков с разрешения их владельцев: мы работаем только с теми кошельками, владение которыми вы можете подтвердить, и никогда не ведем работу от имени третьих лиц. Во-вторых, возможность восстановления во многом зависит от года создания кошелька — кошелек 2012 года представляет собой совершенно иную задачу, чем кошелек 2015 года, и некоторые случаи просто не поддаются решению. Мы честно оцениваем ситуацию перед тем, как принять заказ, и взимаем оплату только в случае успешного результата.
Если кошелек по-прежнему находится под вашим контролем: переведите свои средства
Безопасность превыше всего. Если у вас по-прежнему есть доступ к кошельку, который, по вашему мнению, был сгенерирован с использованием слабой генерации случайных чисел, не оставляйте в нём средства. Создайте новый кошелёк с помощью современного и надёжного программного обеспечения (идеально подойдёт актуальная модель аппаратного кошелька) и немедленно переведите туда все средства. Предсказуемый ключ представляет собой постоянную угрозу, независимо от того, кто обнаружил эту уязвимость — функция восстановления предназначена для кошельков, к которым у вас нет доступа, а не является поводом оставлять средства в уязвимом кошельке.
Как это соотносится с нашими исследованиями в области слабой случайности
Randstorm — одна из нескольких задач, связанных со слабой случайностью, над которыми мы работаем. Тот же подход — точное понимание того, как тот или иной инструмент генерировал свои ключи, и преобразование этого знания в вычислимо задачу поиска — применим как к кошелькам предпродажи Ethereum 2014 года (в ранних версиях кода которых для инициализационного вектора использовалась функция браузера Math.random() ), так и к другим историческим генераторам. Мы не раскрывали информацию о Randstorm; мы предлагаем многолетний опыт превращения этих уязвимостей в возвращённые средства для владельцев кошельков.
Часто задаваемые вопросы
Пострадал ли мой биткойн-кошелек от атаки Randstorm?
Возможно, если он был впервые сгенерирован в период с 2011 по 2015 год в веб-браузере с использованием библиотеки BitcoinJS или на сайте, построенном на её основе, например, на ранних версиях bitaddress.org, BrainWallet, CoinPunk, QuickCoin или ранних версиях Blockchain.info. Наибольшему риску подвержены кошельки, созданные в начале этого периода, особенно до марта 2012 года. Кошельки с аппаратных устройств, более поздних версий программного обеспечения или автономных генераторов, как правило, не затронуты этой проблемой.
Может ли Randstorm помочь мне восстановить мой собственный заблокированный кошелек?
Иногда. Если вы являетесь владельцем кошелька, выпущенного в 2011–2015 годах, и не можете получить к нему доступ, то та же самая пониженная степень случайности, которая делает эти кошельки уязвимыми, в некоторых случаях может позволить нам восстановить закрытый ключ на основе предоставленной вами открытой информации. Речь идет исключительно о восстановлении ваших собственных средств с вашего разрешения; сложность этой процедуры резко возрастает для кошельков, созданных позднее в указанный период.
Я по-прежнему управляю кошельком, подвергшимся атаке. Что мне делать?
Переведите свои средства. Если кошелек был сгенерирован с использованием слабой генерации случайных чисел, самым безопасным решением будет создать новый кошелек с помощью современного и проверенного программного обеспечения и немедленно перевести в него все средства. Не оставляйте средства в кошельке, который, по вашему мнению, может быть скомпрометирован.
Кто открыл Рандсторм?
Уязвимость Randstorm была названа и обнародована компанией Unciphered, специализирующейся на восстановлении данных, в ноябре 2023 года на основе ранее полученных данных о низком уровне случайности в функции SecureRandom. KeychainX — это сервис по восстановлению данных, а не источник информации об уязвимости; мы проводим анализ уровня случайности, чтобы помочь владельцам восстановить свои затронутые уязвимостью кошельки.
Сколько стоит восстановление после Randstorm?
Оплата по результату: процент от возвращенной суммы выплачивается только в случае успеха, а в случае неудачи вы ничего не платите. Мы никогда не просим предоплату и работаем только с кошельками, право собственности на которые вы можете подтвердить.
Не можете войти в старый кошелек 2011–2015 годов?
Сообщите нам тип кошелька, примерную дату его создания и адрес. Мы честно оценим, возможен ли восстановление средств по методу Randstorm — и вы заплатите только в том случае, если нам удастся вернуть ваши средства.
