Группа исследователей из бельгийского университета KU Leuven, работающая в рамках группы безопасности DistriNet, проверила 85 самых популярных браузерных расширений для криптовалютных кошельков. Суммарная база пользователей этих расширений — около 35 миллионов человек, если считать по данным Chrome Web Store. Результат проверки: пять отдельных проблем конфиденциальности, из-за которых пользователей можно отследить и деанонимизировать — причём безо всякого взлома. Кошельки просто работают так, как их спроектировали.
Работа опубликована на arXiv 7 июля, а представят её на симпозиуме PETS 2026 (Privacy Enhancing Technologies Symposium), который пройдёт в Калгари с 20 по 25 июля. Это не первая работа на тему — ещё в 2023 году Кристоф Феррейра Торрес с коллегами показал, что браузерные кошельки сливают адреса на сторонние серверы. Нынешнее исследование расширяет и систематизирует эти находки.
Первая проблема касается тех, кто специально держит несколько адресов, чтобы разделить свою активность и не быть привязанным к одной цифровой личности. Идея разумная — но кошельки, чтобы показать баланс, отправляют запросы на внешние серверы, и адреса при этом идут открытым текстом. У 17 кошельков из выборки эти запросы связывают разные адреса одного пользователя между собой: 13 расширений просто упаковывают два адреса в один запрос, а ещё четыре отправляют отдельные запросы с разницей в считанные миллисекунды — сигнал слабее, но тоже читаемый. Это касается примерно 23 миллионов установок. Оператор сервера — или кто угодно, кто позже получит доступ к этим логам, — может без труда собрать разрозненные адреса в единый профиль.
Вторая проблема звучит почти абсурдно: кнопка «Disconnect» или «Logout» во многих Web3-приложениях не отключает ничего по-настоящему. Тут стоит сначала объяснить фоновый механизм, общий для второй и третьей проблем. Каждый установленный кошелёк объявляет о себе любой открытой странице — это создаёт своего рода отпечаток, по которому можно понять, какие именно кошельки стоят у пользователя. Работает это даже без подключения кошелька к сайту и даже при заблокированных cookies. Так себя ведут 36 из 85 протестированных расширений — это около 82% от изученных установок.
Дальше — про отключение. Причин, почему оно не срабатывает, у исследователей нашлось две. Первая: сайты элементарно не отправляют команду на отзыв доступа. Из 30 проверенных Web3-приложений только 11 действительно посылали такую команду при нажатии на Disconnect или Logout — остальные просто стирали надпись на экране, оставляя доступ кошелька нетронутым. Вторая причина хуже: 22 из тех же 36 кошельков продолжали отдавать адрес сайту даже после получения команды на отзыв. Доступ сохранялся после очистки cookies и даже после перезапуска браузера. Получается, что адрес кошелька — глобально уникальный идентификатор — превращается в куда более живучий трекинговый тег, чем обычный cookie-файл, который легко стереть. Единственный работающий способ починить это вручную — зайти в настройки кошелька, найти список «Connected Sites» и удалить сайт оттуда самостоятельно.
Третья проблема — самая тревожная с точки зрения практической эксплуатации. Из тех же 36 «палящихся» кошельков 23 готовы выдать адрес пользователя изнутри iframe, загруженного совершенно другим сайтом. Механизм атаки выглядит так: скрипт слежения работает одновременно на ранее подключённом крипто-приложении и на обычном, ничем не примечательном сайте. На обычном сайте трекер незаметно подгружает крипто-приложение в скрытом фрейме. Поскольку это приложение уже было авторизовано пользователем ранее, кошелёк отдаёт адрес без единого клика — сайту достаточно, чтобы приложение разрешало встраивание в iframe, а таких приложений немало. Итог: стоит связать полученный адрес с именем или email, уже имеющимися в базе сайта, и псевдонимный крипто-профиль превращается в поимённо идентифицированного человека с видимыми балансами, транзакциями и токенами на счету. Авторы работы подчёркивают, что продемонстрировали техническую возможность атаки, но не утверждают, что она уже используется массово.
Что может сделать сам пользователь? Немного. Можно вручную почистить список разрешённых сайтов в кошельке — это закроет только проблему устаревших адресов из второго пункта. Утечки через серверные запросы (первая проблема) и сам факт отпечатка установленных кошельков этим не лечатся никак. Из практических советов — заводить одноразовые кошельки для тестов и демонстраций, разносить разные виды активности по разным кошелькам или профилям браузера. Собственный демонстрационный инструмент исследователей работает локально в браузере и ничего не сохраняет — но структурные проблемы остаются вне контроля отдельного пользователя.
Раскрытие информации разработчикам исследователи сосредоточили на третьей проблеме — межсайтовой утечке через iframe, — уведомив вендоров до публикации. К повторной проверке в феврале 2026 года ситуацию исправили Coinbase Wallet, Coin98 и — чуть позже — Hana Wallet. Ответили на отчёты по программам bug bounty восемь компаний, и большинство отказалось признавать находку багом. М⃰Mask назвал это «известной проблемой», закрыл тикет как дубликат и заявил, что не планирует отказываться от внедрения провайдера в страницы — иначе сломается слишком много приложений. Rabby назвал условия, необходимые для атаки, «практически невозможными» и заключил, что «уязвимости не существует». OKX согласился, что находка технически верна, но закрыл её как «информационную», аргументируя тем, что она раскрывает данные, но не крадёт средства. Bybit, Backpack и Core одинаково оценили риск как низкий или вовсе вне зоны ответственности. Полные ответы вендоров опубликованы в репозитории исследователей.
Стоит отделить эту работу от прежних инструментов вроде WalletRadar и WalletProbe, которые искали именно программные баги. Здесь же баг не нужен вообще — утечка встроена в саму архитектуру кошельков, это не дыра в коде, а особенность конструкции. По той же причине эту историю нельзя ставить в один ряд с прошлогодними случаями поддельных расширений-кошельков, которые воровали приватные ключи: там было прямое хищение, здесь же ничего не крадут — просто раскрывают то, что должно было оставаться скрытым.
Главный вывод исследователей звучит без иллюзий: очередное предупреждение пользователю проблему не решит. Кошелькам нужно перестать раскрывать себя внутри встроенных фреймов, а индустрии — договориться о едином стандарте, который бы чётко определял, что вообще должно происходить технически, когда пользователь нажимает кнопку «выйти».
Работа опубликована на arXiv 7 июля, а представят её на симпозиуме PETS 2026 (Privacy Enhancing Technologies Symposium), который пройдёт в Калгари с 20 по 25 июля. Это не первая работа на тему — ещё в 2023 году Кристоф Феррейра Торрес с коллегами показал, что браузерные кошельки сливают адреса на сторонние серверы. Нынешнее исследование расширяет и систематизирует эти находки.
Первая проблема касается тех, кто специально держит несколько адресов, чтобы разделить свою активность и не быть привязанным к одной цифровой личности. Идея разумная — но кошельки, чтобы показать баланс, отправляют запросы на внешние серверы, и адреса при этом идут открытым текстом. У 17 кошельков из выборки эти запросы связывают разные адреса одного пользователя между собой: 13 расширений просто упаковывают два адреса в один запрос, а ещё четыре отправляют отдельные запросы с разницей в считанные миллисекунды — сигнал слабее, но тоже читаемый. Это касается примерно 23 миллионов установок. Оператор сервера — или кто угодно, кто позже получит доступ к этим логам, — может без труда собрать разрозненные адреса в единый профиль.
Вторая проблема звучит почти абсурдно: кнопка «Disconnect» или «Logout» во многих Web3-приложениях не отключает ничего по-настоящему. Тут стоит сначала объяснить фоновый механизм, общий для второй и третьей проблем. Каждый установленный кошелёк объявляет о себе любой открытой странице — это создаёт своего рода отпечаток, по которому можно понять, какие именно кошельки стоят у пользователя. Работает это даже без подключения кошелька к сайту и даже при заблокированных cookies. Так себя ведут 36 из 85 протестированных расширений — это около 82% от изученных установок.
Дальше — про отключение. Причин, почему оно не срабатывает, у исследователей нашлось две. Первая: сайты элементарно не отправляют команду на отзыв доступа. Из 30 проверенных Web3-приложений только 11 действительно посылали такую команду при нажатии на Disconnect или Logout — остальные просто стирали надпись на экране, оставляя доступ кошелька нетронутым. Вторая причина хуже: 22 из тех же 36 кошельков продолжали отдавать адрес сайту даже после получения команды на отзыв. Доступ сохранялся после очистки cookies и даже после перезапуска браузера. Получается, что адрес кошелька — глобально уникальный идентификатор — превращается в куда более живучий трекинговый тег, чем обычный cookie-файл, который легко стереть. Единственный работающий способ починить это вручную — зайти в настройки кошелька, найти список «Connected Sites» и удалить сайт оттуда самостоятельно.
Третья проблема — самая тревожная с точки зрения практической эксплуатации. Из тех же 36 «палящихся» кошельков 23 готовы выдать адрес пользователя изнутри iframe, загруженного совершенно другим сайтом. Механизм атаки выглядит так: скрипт слежения работает одновременно на ранее подключённом крипто-приложении и на обычном, ничем не примечательном сайте. На обычном сайте трекер незаметно подгружает крипто-приложение в скрытом фрейме. Поскольку это приложение уже было авторизовано пользователем ранее, кошелёк отдаёт адрес без единого клика — сайту достаточно, чтобы приложение разрешало встраивание в iframe, а таких приложений немало. Итог: стоит связать полученный адрес с именем или email, уже имеющимися в базе сайта, и псевдонимный крипто-профиль превращается в поимённо идентифицированного человека с видимыми балансами, транзакциями и токенами на счету. Авторы работы подчёркивают, что продемонстрировали техническую возможность атаки, но не утверждают, что она уже используется массово.
Что может сделать сам пользователь? Немного. Можно вручную почистить список разрешённых сайтов в кошельке — это закроет только проблему устаревших адресов из второго пункта. Утечки через серверные запросы (первая проблема) и сам факт отпечатка установленных кошельков этим не лечатся никак. Из практических советов — заводить одноразовые кошельки для тестов и демонстраций, разносить разные виды активности по разным кошелькам или профилям браузера. Собственный демонстрационный инструмент исследователей работает локально в браузере и ничего не сохраняет — но структурные проблемы остаются вне контроля отдельного пользователя.
Раскрытие информации разработчикам исследователи сосредоточили на третьей проблеме — межсайтовой утечке через iframe, — уведомив вендоров до публикации. К повторной проверке в феврале 2026 года ситуацию исправили Coinbase Wallet, Coin98 и — чуть позже — Hana Wallet. Ответили на отчёты по программам bug bounty восемь компаний, и большинство отказалось признавать находку багом. М⃰Mask назвал это «известной проблемой», закрыл тикет как дубликат и заявил, что не планирует отказываться от внедрения провайдера в страницы — иначе сломается слишком много приложений. Rabby назвал условия, необходимые для атаки, «практически невозможными» и заключил, что «уязвимости не существует». OKX согласился, что находка технически верна, но закрыл её как «информационную», аргументируя тем, что она раскрывает данные, но не крадёт средства. Bybit, Backpack и Core одинаково оценили риск как низкий или вовсе вне зоны ответственности. Полные ответы вендоров опубликованы в репозитории исследователей.
Стоит отделить эту работу от прежних инструментов вроде WalletRadar и WalletProbe, которые искали именно программные баги. Здесь же баг не нужен вообще — утечка встроена в саму архитектуру кошельков, это не дыра в коде, а особенность конструкции. По той же причине эту историю нельзя ставить в один ряд с прошлогодними случаями поддельных расширений-кошельков, которые воровали приватные ключи: там было прямое хищение, здесь же ничего не крадут — просто раскрывают то, что должно было оставаться скрытым.
Главный вывод исследователей звучит без иллюзий: очередное предупреждение пользователю проблему не решит. Кошелькам нужно перестать раскрывать себя внутри встроенных фреймов, а индустрии — договориться о едином стандарте, который бы чётко определял, что вообще должно происходить технически, когда пользователь нажимает кнопку «выйти».