В течение нескольких дней в ноябре вредоносное расширение Chrome занимало четвертое место в результатах поиска по запросу «Ethereum wallet» в интернет-магазине Chrome.
Расширение под названием «Safery: Ethereum Wallet» выглядело достаточно стильно, чтобы сойти за легитимное. У него был лаконичный значок, стандартное название, соседствующее с терминологией безопасности, множество пятизвёздочных отзывов и шаблонные описания, знакомые любому, кто когда-либо скачивал криптовалютный кошелёк.
За этим интерфейсом скрывалась целенаправленная атака, предназначенная для кражи исходных фраз и опустошения кошельков пользователей путем кодирования украденных секретов в микротранзакции в блокчейне Sui.
Компания Socket, занимающаяся разработкой инструментов безопасности и специализирующаяся на цепочках поставок программного обеспечения с открытым исходным кодом, установила и проанализировала расширение после его обнаружения.
Их целью было понять, как «Safery» избегал обнаружения, поднимался в рейтингах Chrome Store и перемещал украденные seed-фразы, не вызывая тревоги, а также что могут сделать пользователи для обнаружения подобных угроз. В отчёте подробно рассматривается подход злоумышленников, и он служит одновременно и анализом, и предупреждением о том, что браузерные расширения остаются опасным «слепым пятном» в сфере криптовалют.
Этот случай примечателен тем, что хакеры не просто украли seed-фразы. Эта тема, к сожалению, хорошо известна в криптовалютах.
Примечательно то, что Safery не подделывал существующий бренд кошелька. Это не был двойник MetaMask или переработанный фишинговый домен. Компания придумала идентичность, купила или создала фейковые отзывы для повышения позиций в поисковой выдаче и запустила «новый» вариант кошелька.
Такой подход означал, что в листинге не было никаких тревожных сигналов: никаких грамматических ошибок, никаких странных разрешений и никаких перенаправлений на сомнительные домены.
На страницу издателя Chrome Web Store ранее не поступало жалоб, а ее URL-адрес поддержки вел на сайт вне платформы, который не был отмечен системами отслеживания безопасности на момент анализа Socket.
Учитывая его продуманный внешний вид, большинство пользователей без колебаний нажали бы кнопку «Добавить в Chrome». Расширение предлагало запустить его на «всех веб-сайтах» — распространённый запрос для криптокошельков, которым нужен доступ к децентрализованным приложениям.
Примечательно, что расширение не запрашивало дополнительных разрешений и не пыталось внедрить скрипты контента, которые могли бы вызвать более агрессивные предупреждения Chrome. Брендинг был минималистичным, веб-сайт соответствовал названию расширения, а на экране настройки пользователям предлагалось создать или импортировать кошелёк — опять же, стандартное поведение.
Настоящий ущерб начался после ввода начального пароля. Вместо того чтобы сохранить пароль локально или зашифровать его для доступа пользователя, расширение незаметно разделило его на фрагменты и закодировало их как случайные адреса кошельков.
Исследование Socket показывает, что эти фрагменты были вставлены в транзакции блокчейна Sui. В частности, расширение осуществляло переводы токенов SUI на небольшие суммы, которые не привлекали бы внимания, на адреса, контролируемые злоумышленником.
Внутри этих транзакций, либо в полях примечаний, либо в зашифрованных адресах, были спрятаны фрагменты исходной фразы пользователя.
Такой подход имел тактические преимущества. Расширение не требовало отправки исходящих запросов на вредоносные серверы. Отсутствовали сигналы управления и контроля, а также утечка данных по протоколам HTTP или WebSockets, которые мог бы обнаружить браузер или антивирус.
Полезная нагрузка покидала устройство пользователя как обычная блокчейн-транзакция, проходящая через широко распространённую цепочку с низкой комиссией. После попадания в цепочку данные становились общедоступными, что позволяло злоумышленнику впоследствии извлечь их, восстановить сид-фразу и опустошить кошельки, не прикасаясь к устройству пользователя.
По сути, мошенники использовали сам блокчейн Sui в качестве канала связи. Поскольку Sui обеспечивает быстрое подтверждение транзакций и незначительные транзакционные издержки, он функционировал как шина сообщений с малой задержкой.
Socket отследил множество примеров подобных транзакций с использованием начальных фрагментов и подтвердил связь между вводом начальных фрагментов и последующей потерей активов. Хотя кражи происходили вне блокчейна, либо в Ethereum , либо в других сетях L1, где хранились средства в кошельках жертв, инструкции по их совершению были скрыты на виду.
Прежде чем выпустить версию, которая попала в топ результатов поиска Chrome Wallet, издатель, вероятно, тестировал этот метод в частном порядке. Данные свидетельствуют о том, что в более ранних сборках экспериментировали с более простыми утечками данных, прежде чем кодировка Sui была усовершенствована.
К моменту публикации активного расширения у него было достаточно установок, чтобы попасть в раздел «В тренде» в Chrome, что ещё больше повысило его видимость. Brave New Coin сообщил, что кошелёк «Safery» оказался в числе первых результатов поиска по запросу «Ethereum wallet», несмотря на сообщения о подозрительном поведении на Reddit и Telegram.
Успех «Safery» зависел от логики ранжирования Chrome. Алгоритм поиска в интернет-магазине учитывает соответствие ключевым словам, количество установок, скорость отзывов, средний рейтинг и дату последнего обновления.
Расширения с высокой активностью, особенно в нишевых категориях, могут быстро расти в рейтинге, если более проверенные конкуренты не обновляются часто. В данном случае у «Safery» было название, которое хорошо зарекомендовало себя по распространённым запросам, множество положительных отзывов, множество шаблонов или дубликатов, а также свежая дата загрузки.
Нет никаких доказательств того, что Google вручную проверял этот список перед публикацией. Согласно политике интернет-магазина Chrome, большинство новых расширений проходят краткое автоматическое сканирование и фундаментальный статический анализ.
Расширения подвергаются более тщательной проверке, когда запрашивают повышенные разрешения, такие как доступ к вкладкам, буферу обмена, файловым системам или истории. Расширения кошелька часто обходят эти флаги, работая в рамках iframe или используя одобренные API. «Безопасность» осталась в этих рамках.
Даже когда пользователи высказывали опасения, время между сообщением о проблеме и её удалением было достаточно долгим, чтобы нанести ущерб. Отчасти эта задержка обусловлена структурными особенностями: Chrome не реагирует на помеченные расширения мгновенно, если только не достигнуто подавляющее большинство или отсутствуют известные сигнатуры вредоносного ПО.
В данном случае полезная нагрузка представляла собой зашифрованный JavaScript-код, использующий инфраструктуру блокчейна, а не внешние хосты. Традиционные методы обнаружения вредоносных программ не смогли его обнаружить.
Это не первый случай использования расширений Chrome для кражи криптовалюты. Ранее мошенничество включало в себя поддельные приложения Ledger Live, предлагавшие пользователям вводить фразы восстановления, или взлом легитимных расширений, которые позволяли злоумышленникам получить доступ к ключу публикации разработчика.
«Safery» отличается гладкостью фасада и отсутствием внутренней инфраструктуры. Не нужно было блокировать ни один фишинговый сайт, ни один сервер, который нужно было бы закрыть, — просто одно расширение переместило секретные данные в публичную цепочку и ушло в сторону.
У пользователей всё ещё оставались некоторые возможности. Если бы они действовали быстро, они могли бы ограничить риск, чередуя начальные значения и отзывая одобрения транзакций.
Socket и другие компании разработали процедуры предварительного отбора для всех, кто установил расширение: немедленно удалить его, отозвать все одобрения токенов, перевести активы в новый кошелёк с помощью чистого устройства и отслеживать связанные адреса. Для пользователей, которые не заметили утечки или хранили крупные суммы в горячих кошельках, восстановление данных оставалось маловероятным.
Исследователи и разработчики безопасности призывают Chrome к более строгой эвристике. Одно из предлагаемых решений — автоматически отмечать любые расширения, содержащие элементы пользовательского интерфейса, запрашивающие фразу из 12 или 24 слов.
Другой подход — требовать аттестацию издателя для расширений кошелька, которая предоставит проверяемое доказательство того, что данный издатель контролирует кодовую базу известного бренда кошелька. Также звучат призывы к более строгой проверке прав доступа, связанных с кошельком, даже если они не содержат опасных шаблонов доступа.
Для конечных пользователей Socket опубликовала практичный контрольный список по управлению расширениями. Перед установкой любого крипторасширения пользователям следует ознакомиться с историей издателя, проверить связь с известным проектом, изучить шаблон отзывов, особенно на наличие всплесков идентичных отзывов, проверить наличие реальных ссылок на веб-сайты с публичными репозиториями GitHub и проверить вкладку «Разрешения» на наличие неопределённого или чрезмерного доступа.
Чистого имени и высокого рейтинга недостаточно.
Этот случай поднимает более общие вопросы о роли браузера в криптовалюте. Браузерные кошельки приобрели популярность благодаря доступности и простоте использования. Они позволяют пользователям взаимодействовать с децентрализованными приложениями без необходимости смены платформы или загрузки отдельных приложений.
Но эта доступность далась ценой уязвимости. Браузер — это высокорискованная среда, подверженная манипуляциям расширениями, перехвату сеансов, сбору данных из буфера обмена, а теперь ещё и скрытому извлечению блокчейна.
Разработчики кошельков, вероятно, пересмотрят модели распространения. Некоторые команды уже не рекомендуют устанавливать приложения из интернет-магазина Chrome, отдавая предпочтение мобильным приложениям или исполняемым файлам для настольных компьютеров. Другие могут добавить предупреждения для пользователей, пытающихся установить приложения из непроверенных источников.
Основная проблема остается: распространение фрагментировано, и большинство пользователей не знают, как отличить законный кошелек от его улучшенного клона.
Расширению «Safery» не нужно было выглядеть как MetaMask или маскироваться под Phantom. Оно создало собственный бренд, распространяло поддельные сигналы доверия и создало невидимый бэкдор, который использовал блокчейн Sui в качестве курьера.
Это должно заставить переосмыслить то, как устанавливается доверие в крипто-UX, и насколько близки к «железу» даже такие повседневные инструменты, как расширения для браузера.
Пользователи криптовалюты полагают, что Web3 означает суверенитет и самостоятельность. Но в неумелых руках браузерный кошелёк — это не хранилище, а открытый порт. И Chrome не всегда предупреждает о возможной утечке.