Вредоносную подпись узнают по несоответствию между тем, что вы собирались сделать, и тем, что показывает кошелёк, и подключение к сайту не требует разрешения на расходование токенов, а обмен не требует безлимитного доступа ко всему балансу. Если запрос шире заявленного действия — это попытка кражи, и подписывать его нельзя независимо от того, насколько убедительно выглядит сайт.

Подпись транзакции — это криптографическое подтверждение операции приватным ключом; в отличие от обычного перевода, подпись разрешения не двигает средства сразу, а выдаёт другому адресу право распоряжаться ими позже.

Как выглядит схема со стороны жертвы

Человек заходит на сайт, который выглядит как знакомый протокол, и нажимает привычную кнопку. Кошелёк открывает окно подписи. В интерфейсе написано что-то вроде «подтвердите вход» или «активируйте награду», а сам запрос содержит разрешение на расходование токенов без ограничения суммы, а пользователь подтверждает, ничего не происходит, и он уходит с сайта. Средства списываются позже, иногда через несколько дней, когда бдительность уже потеряна.

Схема из четырёх шагов: от чтения запроса до отказа от подписи
Схема из четырёх шагов: от чтения запроса до отказа от подписи

Признаки, по которым распознаётся подмена

Первый признак — тип запроса не совпадает с действием. Вход на сайт требует простой подписи сообщения, а не разрешения на токены, при этом второй — адрес получателя разрешения не принадлежит известному протоколу, и его невозможно проверить в обозревателе. Третий признак самый частый: безлимитная сумма в поле разрешения при том, что вы планировали операцию на конкретную величину.

Отдельный случай — запрос на делегирование адреса по новому стандарту, и такой запрос превращает обычный кошелёк в управляемый чужим кодом и почти всегда означает атаку.

Сравнение типов запросов

Тип запроса Что означает и когда уместен
Подпись сообщения Подтверждение владения адресом, газ не требуется, средства не двигаются
Разрешение на сумму Право списать указанное количество токенов, уместно перед обменом или вкладом
Безлимитное разрешение Право списать весь баланс токена в любой момент, почти никогда не оправдано
Делегирование адреса Передача управления кошельком стороннему контракту, для рядовых операций не нужно

Проверка за 60 секунд: что открыть и на что смотреть

Разверните детали запроса в кошельке, не ограничиваясь заголовком окна, причём найдите адрес, которому выдаётся доступ, и откройте его в обозревателе блоков в отдельной вкладке. Убедитесь, что это контракт с историей и подтверждённым исходным кодом, а не свежесозданный адрес без операций, а проверьте сумму разрешения: она должна соответствовать вашей операции, а не всему балансу.

Аппаратный кошелёк с актуальной прошивкой показывает содержимое запроса на своём экране, при этом читайте именно его, а не интерфейс на компьютере.

Пошаговые действия, если деньги уже ушли

Первым делом откройте сервис проверки разрешений и отзовите все активные доступы для пострадавшего адреса, начиная с самых свежих, причём затем переведите остатки на новый адрес с новой seed-фразой: отозванное разрешение не возвращает уже списанное и не гарантирует, что других доступов не осталось. Зафиксируйте хэш транзакции списания и адрес получателя для обращения в компетентные органы.

Как закрыть дыру, чтобы не повторилось

  • Выдавайте разрешения на конкретную сумму, а не безлимитные
  • Заходите на протоколы по закладкам, а не через поисковую выдачу
  • Проверяйте адрес спендера в обозревателе перед каждой новой подписью
  • Держите оборотные средства отдельно от основного капитала

Ко мне обращался читатель, подписавший запрос на сайте, который нашёл через рекламную выдачу поисковика, и интерфейс копировал известный обменник до мелочей. Кошелёк показал разрешение с безлимитной суммой, но он решил, что это стандартная процедура, и подтвердил, а стейблкоины списали через два дня, и формально он сам выдал на это право.

Где чаще всего ломается внимание

Усталость и спешка работают на атакующего лучше любой технической уловки, и после десятка рутинных подтверждений человек перестаёт читать содержимое окна и жмёт кнопку автоматически. Второй типичный момент — срочность: объявление об ограниченной по времени раздаче создаёт давление, при котором проверка кажется излишней тратой минуты.

Отсюда практическое правило. Любая операция, которая торопит, заслуживает вдвое более внимательной проверки, а не меньшей.

Чек-лист перед подписью

  • Тип запроса соответствует действию, которое вы совершаете
  • Адрес получателя разрешения проверен в обозревателе
  • Сумма ограничена и совпадает с планируемой операцией
  • Сайт открыт по закладке, а не по ссылке из поиска или сообщения

Смежные темы разобраны у нас. Вот основные. Общий раздел — цифровая безопасность. Шире — статьи про криптокошельки. Механику разрешений подробно разбирает материал разрешения токенов: как их проверять и отзывать, а порядок действий при компрометации — в материалах о безопасности хранения.

Вопросы и ответы

Можно ли потерять средства от простой подписи сообщения?

Обычная подпись для входа на сайт средства не двигает, но существуют офчейн-подписи вида permit, которые выглядят похоже и при этом выдают право на списание токенов. Отличить их можно по содержимому: если в запросе фигурируют адрес спендера и сумма, это разрешение, а не вход.

Защищает ли аппаратный кошелёк от вредоносной подписи?

Частично. Устройство показывает содержимое запроса на собственном экране, недоступном вредоносному ПО на компьютере, и это даёт последний шанс заметить подмену. Но если пользователь подтверждает не глядя, защита не срабатывает: подпись всё равно будет поставлена его ключом.

Как часто проверять выданные разрешения?

Разумная периодичность — раз в месяц, а также сразу после взаимодействия с новым протоколом, при этом проверка занимает пару минут через специализированный сервис и показывает все активные доступы. Неиспользуемые разрешения стоит отзывать, даже если протокол кажется надёжным.

Вердикт

Главный признак вредоносной подписи — запрос шире, чем совершаемое действие, причём подключение не требует доступа к токенам, обмен не требует безлимита, и разворачивайте детали запроса и проверяйте адрес спендера в обозревателе: это занимает минуту и закрывает большую часть риска. Регулярная ревизия выданных разрешений страхует от ошибок, которые вы уже успели совершить.

Разрешения проверяйте напрямую. Сервис проверки и отзыва разрешений Revoke.cash и блокчейн-обозреватель Etherscan позволяют изучить адрес спендера и закрыть лишние доступы.

Иван Григорьев, автор Cryptium. Практикующий разбор кошельков и безопасности активов. Больше материалов — в Telegram-канале t.me/cryptiumru.