Кошелек может выглядеть совершенно нормально, даже если он был уязвим с момента создания своей фразы восстановления. Уязвимость слабого ГСЧ в CryptoJS показывает, почему это важно. В затронутых версиях CryptoJS CryptoJS.lib.WordArray.random() использовало собственную псевдослучайную конструкцию, инициализируемую через JavaScript Math.random(), а не криптографически безопасный системный источник случайности. Это имеет значение, потому что криптографическая безопасность зависит от непредсказуемости на источнике. Исследование Ill Bloom связало эту проблему реализации с реальным кодом генерации кошельков. При уязвимых путях генерации формальные запросы на 128-битную и 256-битную энтропию кошелька могли сводиться к эффективным пространствам поиска примерно в 2^39 и 2^47 возможностей. Полученные фразы восстановления всё ещё могли: • использовать допустимые слова BIP39 • проходить проверку контрольной суммы • производить стандартные аккаунты блокчейна • подписывать корректные транзакции • выглядеть совершенно обычными для пользователя Вот ключевое различие: Допустимая фраза восстановления не является автоматически безопасно сгенерированной фразой восстановления. Еще один важный нюанс: обнаружение затронутой зависимости CryptoJS не доказывает автоматически, что кошелек был эксплуатируемым. Исследователям необходимо установить, действительно ли уязвимая функция случайности генерировала фразы восстановления, ключи, токены, nonce или другие критически важные для безопасности секреты. CryptoJS 4.0.0 заменил путь генерации на основе Math.random на встроенные криптографические методы случайности. Однако обновление библиотеки исправляет будущую генерацию — оно не может обратно добавить энтропию в фразы восстановления, созданные годами ранее. Импорт затронутого seed в другой программный кошелек или аппаратный кошелек также не исправляет проблему. Те же самые ключи остаются производными. Более широкий урок безопасности выходит за рамки CryptoJS. Разработчикам необходимо аудитировать реальные потоки данных генерации секретов, включая прямые и косвенные зависимости, а не полагаться только на имена пакетов или сканирование верхнеуровневых зависимостей. Для веб-приложений Web Crypto предоставляет crypto.getRandomValues() для криптографически сильной случайности. Node.js и мобильные среды предоставляют собственные безопасные криптографические API для генерации случайных чисел. Пользователям кошельков следует сосредоточиться на происхождении программного обеспечения, истории поддержки, истории генерации, надежной случайности и безопасном резервном копировании, а не предполагать, что любая 12- или 24-словная фраза автоматически безопасна. Прочитайте полный анализ TokenToolHub: https://t.co/2AjB3PrKIZ
TokenToolHub.comПоделиться
Источник:Показать оригинал
Отказ от ответственности: Информация на этой странице может быть получена от третьих лиц и не обязательно отражает взгляды или мнения KuCoin. Данный контент предоставляется исключительно в общих информационных целях, без каких-либо заверений или гарантий, а также не может быть истолкован как финансовый или инвестиционный совет. KuCoin не несет ответственности за ошибки или упущения, а также за любые результаты, полученные в результате использования этой информации.
Инвестиции в цифровые активы могут быть рискованными. Пожалуйста, тщательно оценивайте риски, связанные с продуктом, и свою устойчивость к риску, исходя из собственных финансовых обстоятельств. Для получения более подробной информации, пожалуйста, ознакомьтесь с нашими Условиями использования и Уведомлением о риске.
