Двенадцать лет разработчики держали дверь приоткрытой. Никто и не заметил.
<div class="articl-text-cover" style="position:relative;width:100%;max-width:800px;margin-left:auto;margin-right:auto;aspect-ratio:1200/675;margin-bottom:2rem;overflow:hidden">
<div itemprop="articleBody">Двенадцать лет функция, которая должна была создавать случайность, подсовывала кошелькам предсказуемые числа — и теперь стало известно, сколько на этом потеряли пользователи. Компания Coinspect обнаружила , что генератор CryptoJS.lib.WordArray.random() выдавал слабую энтропию при создании секретных фраз восстановления для криптокошельков . Инцидент получил название Ill Bloom .
Слабость затронула пять приложений: RRWallet и Milo закрыты и не получат исправлений, Bexo Wallet и NanChat выпустили обновлённые версии, а Bitcoin Libre устранил проблему ещё в 2024 году. Обновление приложения не делает уже созданные фразы безопасными — их нужно менять вручную.
Из-за ошибки пространство перебора для 128-битной энтропии сократилось с 2^128 до примерно 2^39 вариантов, а для 256-битной — с 2^256 до 2^47. Такие значения можно перебрать на обычном компьютере, поэтому злоумышленники смогли восстанавливать фразы восстановления и получать доступ к кошелькам.
Coinspect зафиксировала два цикла хищений. 27 мая этого года было выведено около 3,14 миллиона долларов с 431 кошелька, а с 30 мая по 13 июля — ещё 2,55 миллиона долларов из кошельков, связанных с 522 скомпрометированными фразами, включая перевод 2,18 миллиона USDT с одного аккаунта в сети Tron. Всего компания насчитала 2114 скомпрометированных фраз и оценивает общий ущерб минимум в 5,69 миллиона долларов.
История уязвимости началась в далёком 2014 году, когда в CryptoJS появился генератор MWC, инициализируемый через Math.random(). Версии 3.2.0 и 3.2.1 временно перешли на криптографически стойкую случайность , но в 3.3.0 разработчики вернули старый код, посчитав изменение слишком критичным для совместимости. Окончательно ошибку устранили в версии 4.0.0, вышедшей в феврале 2020 года.
5 августа сопровождающий проекта Эван Восберг опубликовал уведомление об уязвимости с критическим рейтингом и оценкой 9,0 по шкале CVSS. Под угрозой оказались только те приложения, где функция применялась для генерации ключевых данных — само наличие библиотеки в проекте риска не создаёт.
Владельцам кошельков, созданных приложениями с уязвимой версией CryptoJS ниже 4.0.0, стоит считать такие фразы восстановления скомпрометированными, даже если они позже были перенесены в другое место, включая аппаратные кошельки. Единственный надёжный способ защититься — сгенерировать новую фразу в актуальной версии приложения и перевести все средства на адреса нового кошелька.
<div class="articl-text-cover" style="position:relative;width:100%;max-width:800px;margin-left:auto;margin-right:auto;aspect-ratio:1200/675;margin-bottom:2rem;overflow:hidden">
<div itemprop="articleBody">Двенадцать лет функция, которая должна была создавать случайность, подсовывала кошелькам предсказуемые числа — и теперь стало известно, сколько на этом потеряли пользователи. Компания Coinspect обнаружила , что генератор CryptoJS.lib.WordArray.random() выдавал слабую энтропию при создании секретных фраз восстановления для криптокошельков . Инцидент получил название Ill Bloom .
Слабость затронула пять приложений: RRWallet и Milo закрыты и не получат исправлений, Bexo Wallet и NanChat выпустили обновлённые версии, а Bitcoin Libre устранил проблему ещё в 2024 году. Обновление приложения не делает уже созданные фразы безопасными — их нужно менять вручную.
Из-за ошибки пространство перебора для 128-битной энтропии сократилось с 2^128 до примерно 2^39 вариантов, а для 256-битной — с 2^256 до 2^47. Такие значения можно перебрать на обычном компьютере, поэтому злоумышленники смогли восстанавливать фразы восстановления и получать доступ к кошелькам.
Coinspect зафиксировала два цикла хищений. 27 мая этого года было выведено около 3,14 миллиона долларов с 431 кошелька, а с 30 мая по 13 июля — ещё 2,55 миллиона долларов из кошельков, связанных с 522 скомпрометированными фразами, включая перевод 2,18 миллиона USDT с одного аккаунта в сети Tron. Всего компания насчитала 2114 скомпрометированных фраз и оценивает общий ущерб минимум в 5,69 миллиона долларов.
История уязвимости началась в далёком 2014 году, когда в CryptoJS появился генератор MWC, инициализируемый через Math.random(). Версии 3.2.0 и 3.2.1 временно перешли на криптографически стойкую случайность , но в 3.3.0 разработчики вернули старый код, посчитав изменение слишком критичным для совместимости. Окончательно ошибку устранили в версии 4.0.0, вышедшей в феврале 2020 года.
5 августа сопровождающий проекта Эван Восберг опубликовал уведомление об уязвимости с критическим рейтингом и оценкой 9,0 по шкале CVSS. Под угрозой оказались только те приложения, где функция применялась для генерации ключевых данных — само наличие библиотеки в проекте риска не создаёт.
Владельцам кошельков, созданных приложениями с уязвимой версией CryptoJS ниже 4.0.0, стоит считать такие фразы восстановления скомпрометированными, даже если они позже были перенесены в другое место, включая аппаратные кошельки. Единственный надёжный способ защититься — сгенерировать новую фразу в актуальной версии приложения и перевести все средства на адреса нового кошелька.
- Источник новости
- www.securitylab.ru