Безопасность Web3Высокий

Почему безлимитное разрешение токена опасно

Безлимитное разрешение позволяет spender-контракту переводить токен до огромного лимита без нового approve при каждом списании.

Схема риска безлимитного разрешения токена

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

Порядок действий#

  1. Проверяйте spender-адрес, а не только название приложения. Сверяйте контракт, сеть и версию с официальной документацией, открытой независимо. Знакомый логотип или метка в интерфейсе не доказывают подлинность адреса.
  2. Разрешайте точную сумму, если интерфейс позволяет. Выдавайте только количество, необходимое для планируемой операции, и подтвердите итоговый allowance в обозревателе. Не выбирайте максимальное значение только ради экономии будущего газа.
  3. Используйте транзакционный кошелёк с ограниченным балансом. Отделите сбережения и ценные NFT от DeFi-активности. Тогда ошибочное разрешение не затронет активы, которые не нужны протоколу.
  4. После разового действия просматривайте allowances. Проверьте токен, spender, лимит и сеть через надёжный обозреватель или официальный инструмент. Удаляйте ненужные разрешения после завершения задачи.
  5. Отзывайте старые разрешения во всех активных сетях. Каждая сеть хранит состояние отдельно, а отзыв является ончейн-транзакцией и требует газа. Убедитесь в подтверждении по блокчейну, а не только по интерфейсу сайта.

Главная идея#

Удобство сохраняется дольше одного swap. Пользователь забывает allowance, а приложение обновляется, теряет административный ключ или переживает взлом фронтенда.

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

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

Когда изменить подход#

Сравните удобство с максимальной потерей. Повторные ограниченные approve стоят дополнительного газа, но ограничивают ущерб и создают момент повторной проверки.

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

Учитывайте стоимость отзыва, но не позволяйте комиссии скрыть размер потенциальной потери. Для небольшого остатка разумным решением иногда будет перенести активы на чистый адрес и больше не пополнять старый, однако allowance на старом адресе от этого не исчезает. При пакетной проверке сначала убедитесь, что инструмент показывает правильную сеть и реальные spender-адреса, а каждая подписываемая операция действительно уменьшает разрешение.

После обновления протокола заново сопоставьте документацию и адрес роутера: прежнее доверие к названию приложения не подтверждает новый контракт. Если разрешение выдаётся через Permit с отдельным сроком, запишите дату истечения и всё равно проверьте фактическое состояние перед новым пополнением кошелька.

Опасные ошибки#

  • Считать, что нулевой баланс удаляет approve. Будущее пополнение снова окажется доступно spender, пока allowance не отозван или не истёк по правилам конкретного разрешения.
  • Отключать сайт вместо отзыва в блокчейне. Локальный сеанс не меняет allowance, записанный в токен-контракте.
  • Выдавать максимальный лимит непроверенному роутеру. Знакомая метка может скрывать другой контракт, а подтверждённая транзакция необратимо создаст разрешение.
  • Пакетно подписывать отзывы в фальшивом сервисе. Инструмент может запрашивать новые approve, Permit или переводы под видом очистки старых прав.

Доказательства#

Не ориентируйтесь только на сообщение «разрешение отозвано». Проверьте значение allowance непосредственно в блокчейне после подтверждения транзакции и повторите проверку для каждой используемой сети.

Контрольная точкаДоказательствоУсловие остановки
Проверить spenderАдрес совпадает с документациейСчитают, что пустой баланс удаляет approve
Разрешить точную суммуХеш и allowance в обозревателеСайт только отключают локально
Ограничить баланс кошелькаЗапланированный лимитРоутер не проверен

Сохраняйте хеши, адреса токена и spender, сеть и датированные результаты проверки, но исключайте сид-фразы, приватные ключи, пароли и коды аутентификации.

Часто задаваемые вопросы#

Может ли безлимитный approve списать другие токены?

Обычно он относится к конкретному токену и spender, но для других активов могут существовать отдельные права.

Истекает ли approve автоматически?

Стандартные ERC-20 allowances обычно не истекают, если токен или Permit-система не реализует срок.

Permit2 всегда безлимитен?

Нет. Permit-системы поддерживают суммы и сроки, но пользователь должен прочитать конкретную подпись.

Связанные руководства#

Источники#

Предупреждение о риске: Криптовалютные операции могут быть необратимыми. Никому не сообщайте сид-фразу, приватный ключ, пароль или код аутентификации; независимо проверяйте spender, сеть и каждый запрос кошелька.

Редакционный стандарт

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