Согласно недавнему отчету исследователей безопасности из SECBIT Labs, старая уязвимость в iOS-приложении Trust Wallet все еще может затрагивать людей, создавших в нем учетные записи, даже если они больше не используют Trust Wallet. По словам исследователей, уязвимость существовала только с 5 февраля по 21 августа 2018 года и не затрагивает учетные записи, созданные после этого периода времени. Однако некоторые пользователи могут не знать о существовании уязвимости и все еще планируют использовать открытые кошельки.
Уязвимость была вызвана двумя функциями, вызываемыми кошельком Trust в библиотеке Trezor, которые должны были использоваться только для тестирования. Тем не менее, несмотря на примечания, предупреждающие разработчиков о недопустимости их использования, Trust Wallet случайно включил эти функции в свое приложение-кошелек для iPhone, утверждает SECBIT. Эта ошибка якобы позволила злоумышленникам угадать приватные ключи некоторых пользователей и украсть их средства. По данным SECBIT, эти аккаунты уязвимы даже сейчас.
Эта недавно обнаруженная уязвимость предположительно отделена и отличается от недостатка браузерного расширения Trust Wallet, который команда Trezor уже признала в апреле 2023 года.
В сообщении в блоге от 15 февраля, отвечающем на претензии SECBIT, Trust Wallet заявил, что уязвимость затронула только несколько тысяч пользователей, которые были уведомлены и перешли на новые кошельки. Trust Wallet заявил, что исправил уязвимость в июле 2018 года и что в настоящее время ее приложение безопасно для использования.
Пост об уязвимости. Источник: @ErrNil на X
Как SECBIT обнаружил уязвимость в iOS-приложении Trust Wallet
Исследовательская группа заявила, что обнаружила эту уязвимость при расследовании широкомасштабной атаки на криптокошельки, произошедшей 12 июля 2023 года и затронувшей более 200 криптовалютных аккаунтов. Многие из атакованных учетных записей не использовались в течение нескольких месяцев или хранились на устройствах без доступа к Интернету, что должно было чрезвычайно затруднить их взлом. Кроме того, жертвы использовали множество различных приложений-кошельков, наиболее часто используемыми были Trust Wallet и Klever Wallet. Это затруднило определение причин взлома, что вызвало любопытство исследователей.
В ходе дальнейшего расследования исследователи обнаружили, что на большинство адресов жертв средства впервые поступили в период с июля по август 2018 года. Однако вскоре после этого открытия их расследование зашло в тупик, и они перешли к другим исследованиям.
Затем, 7 августа 2023 года, команда кибербезопасности Distrust объявила, что якобы обнаружила уязвимость в биткоин-приложении Libbitcoin Explorer. Эта уязвимость Libbitcoin, получившая название Milk Sad, позволяла злоумышленникам угадывать личные ключи пользователей. Прочитав об этой предполагаемой уязвимости, команда SECBIT начала подозревать, что аналогичная ошибка могла стать причиной атаки 12 июля.
Исследователи возобновили расследование и начали просматривать версии кода Trust Wallet, опубликованные с июля по август 2018 года. Они обнаружили, что версии приложения для iOS того периода использовали функции «random32()» и «random_buffer()» из криптобиблиотеки Trezor для генерации мнемонических фраз на iOS.
Эти функции содержали примечания разработчика, предупреждающие об их использовании в рабочих приложениях. Например, в примечаниях к random32() говорилось: «Следующий код не предназначен для использования в производственной среде. [...] Он включен только для того, чтобы сделать библиотеку тестируемой. [...] Приведенное выше сообщение пытается предотвратить любое случайное использование за пределами тестовой среды».
Исходный код Trezor содержит предупреждение. Источник: SECBIT Labs.
Изучив код, исследователи предположительно обнаружили, что он генерирует исходные слова, которые не являются достаточно случайными, чтобы злоумышленник не смог их угадать. Это означало, что любая учетная запись Trust Wallet, созданная на устройстве iOS в это время, подвергалась риску опустошения, утверждает SECBIT.
В своем отчете SECBIT заявила, что создала базу данных скомпрометированных адресов, которую затем передала команде Trust Wallet. Компания также заявила, что сравнила эти адреса с адресами жертв взлома 12 июля и обнаружила, что кошельки 83% жертв были созданы с помощью функций random32() и random_buffer().
Когда Trust Wallet получил эту информацию, он якобы сообщил SECBIT, что уже уведомлял пользователей в частном порядке в 2018 году. Он также подчеркнул, что адреса имеют нулевой баланс и, следовательно, не могут быть предупреждены о потере средств. SECBIT утверждает, что призвал Trust Wallet публично объявить об уязвимости, но Trust Wallet не отказался это сделать. Фирма заявляет, что опубликовала свои выводы только после того, как Trust Wallet отказался обнародовать эту информацию.
Несмотря на свой критический отчет, SECBIT отметил, что Trust Wallet имеет открытый исходный код, поэтому какой-то другой разработчик кошелька мог разветвить код и заставить своих пользователей генерировать уязвимые адреса, или другой разработчик кошелька мог самостоятельно допустить ту же ошибку, что и Trust Wallet, – использование криптографической библиотеки Trezor для iOS того периода для генерации адресов.
Исследователи высказали мнение:
«Конечно, Trust Wallet, возможно, не единственный, кто злоупотребил библиотекой trezor-crypto. Возможно, существует множество других неизвестных проектов, имеющих подобные уязвимости. Кто-то может даже обвинить библиотеку trezor-crypto в том, что она незаметно перешла на небезопасную реализацию по умолчанию, что привело к фатальным ошибкам в проектах, использующих ее в качестве базовой зависимости».
По данным SECBIT, Trezor обновил свою библиотеку 16 июля 2018 года, добавив готовые к использованию версии двух функций. Несмотря на это, исследователи утверждают, что уязвимость все еще может затронуть некоторых пользователей, которые создали учетные записи в начале 2018 года, но никогда не отправляли на них средства.
Ответ Trust Wallet
Представитель Trust Wallet указал на публичное заявление команды от 15 февраля по этому вопросу. В этом заявлении команда разработчиков подчеркнула, что текущая версия Trust Wallet не содержит уязвимости.
«Мы хотим заверить пользователей Trust Wallet, что их средства в безопасности, а кошельки безопасны в использовании, — заявил представитель. — Хотя в начале 2018 года в нашем открытом исходном коде уже существовала уязвимость, затронувшая лишь несколько тысяч пользователей, уязвимость была быстро исправлена при поддержке сообщества безопасности — и затронутые пользователи были уведомлены, а их балансы переведены в безопасный кошельки».
Trust Wallet выступил против утверждений о том, что он недостаточно информировал пользователей.
«Основатель Trust Wallet предпринял быстрые и активные шаги, чтобы проинформировать всех затронутых пользователей и предоставил им безопасный путь миграции, — сказал представитель, — гарантируя, что ни один пользователь не останется уязвимым».
Trust Wallet также отрицает, что большинство взломов было совершено против учетных записей, созданных его приложением. В базе данных пользователей было обнаружено только «600 адресов из 2000 взломанных», а это означает, что большинство жертв не были пользователями Trust Wallet. По данным Trust Wallet, из этих 600 пользователей некоторые могли импортировать свои адреса из другого приложения.
В отличие от заявления SECBIT о том, что 83% адресов жертв были созданы с помощью ошибочного кода, Trust Wallet заявил, что «только треть из них имеют историческую уязвимость Trust Wallet 2018 года». В своем отчете команда призвала исследователей безопасности использовать ее программу вознаграждения за обнаружение ошибок и заявила, что стремится обеспечить безопасность своего кошелька.
В отчете от 12 июля 2023 года кошелек Klever также подтвердил , что некоторые из жертв атаки использовали его приложение. Однако он утверждает, что все адреса были импортированы и изначально не были созданы Klever.
Технический директор фирмы Томаш Сушанка подчеркнул, что функция, лежащая в основе спора, предназначалась исключительно для тестирования, а не для официального использования при разработке проекта:
«Функция точно такая, как описано в исходном коде. Она не предназначена для использования в производственной среде, и мы предоставляем явные предупреждения об этом. Функция заменена безопасным RNG на самом Trezor. Эта функция предназначена исключительно для тестирования. Мы любим открытый исходный код, но нереалистично ожидать, что мы предотвратим любое возможное злоупотребление многими проектами, которые у нас есть с открытым исходным кодом. Эти проекты предоставляются «как есть», без каких-либо гарантий, как ясно указано в их лицензиях».
В отчете SECBIT исследователи предупредили пользователей iOS с учетными записями Trust Wallet с этого периода о необходимости перехода на новые кошельки и прекращения использования старых.
«Вызывает тревогу то, что пользователи все еще могут использовать кошельки, созданные в период уязвимости, — заявили они. — Не зная о проблеме, они могут столкнуться с дальнейшей потерей средств».