Уязвимость в программном обеспечении, используемом как минимум пятью криптокошельками, сделала некоторые сид-фразы настолько предсказуемыми, что злоумышленники смогли их восстановить, что привело к кражам на сумму не менее 5,69 миллиона долларов с мая.
Ранее в этом месяце компания по блокчейн-безопасности Coinspect сообщила, что RRWallet, Bexo Wallet, NanChat, Bitcoin Libre и Milo использовали слабый генератор случайных чисел из библиотеки CryptoJS для создания некоторых сид-фраз криптокошельков.
По словам компании по безопасности:
«Уязвимая реализация была внедрена в июне 2014 года в рамках попытки усилить WordArray.random() в ответ на проблему GitHub #7 «randomBytes is not random enough» и была реализована в коммите ff1f003».
Злоумышленники использовали эту уязвимость в нескольких волнах атак. Coinspect отследила кражу около 3,14 миллиона долларов 27 мая и еще 2,55 миллиона долларов в период с 30 мая по 13 июля.
Компания также заявила, что третья волна атак пришлась на период с 20 по 21 июля, в ходе которой было похищено около 40 000 долларов из подмножества китайских мнемонических фраз.
В совокупности анализ компании по безопасности охватил более 2000 сидов с активностью в сетях Bitcoin, Ethereum, Tron, Rootstock и Polygon, что делает цифру в 5,69 миллиона долларов нижней границей, а не показателем общих потерь.
Между тем, список затронутых криптокошельков может быть неполным, а подверженность уязвимости зависит от версии программного обеспечения, которая изначально сгенерировала фразу, а не только от бренда.
Слабая случайность сделала ключи кошельков более угадываемыми
Сид-фраза — это последовательность слов, которая служит мастер-резервной копией кошелька. Она может быть использована для воссоздания закрытых ключей, управляющих кошельком, что означает, что любой, кто получит или восстановит фразу, потенциально может переместить его средства.
Предполагается, что эти фразы генерируются на основе такой огромной случайности, что их угадывание вычислительно непрактично.
Coinspect обнаружила, что уязвимая CryptoJS.lib.WordArray.random()функция может сократить эффективное пространство поиска, которое, как ожидается, содержит 2^128 или 2^256 возможностей, примерно до 2^39 и 2^47.
Такое сокращение сделало возможным перебор затронутых фраз, вывод из них адресов блокчейна и проверку на наличие средств. Просто наличие старой зависимости CryptoJS не означает подверженность уязвимости; уязвимая функция должна была использоваться для генерации секрета кошелька.

Между тем, эта слабость также означает, что обновление приложения не может исправить сид-фразу, сгенерированную с недостаточной случайностью. Импорт той же фразы в другое программное или аппаратное обеспечение кошелька также несет в себе уязвимость.
Coinspect сообщила, что Bexo исправил путь генерации в версии 20.1.0, NanChat — в версии 1.3.0, а Bitcoin Libre — в версии 4. RRWallet и Milo были прекращены. NanChat отдельно сообщил пользователям, создавшим кошельки до версии 1.3.0, считать их скомпрометированными и перейти на вновь сгенерированную фразу.
Coinspect также выпустила Unlukey, который позволяет пользователям проверять публичные адреса блокчейна по известным наборам скомпрометированных данных, не передавая личную информацию. Совпадение указывает на потенциальную уязвимость, в то время как отрицательный результат означает только то, что адрес не был найден в опубликованных данных.
Для подтвержденных затронутых кошельков решение состоит в том, чтобы безопасно сгенерировать новую сид-фразу и переместить средства, которые она контролирует.
Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.
Автор – Oluwapelumi Adejumo




