
Table of Contents
Чтобы закрыть DApp доступ к вашим токенам, нужно найти выданное ему разрешение и отозвать его отдельной транзакцией в блокчейне - отключение DApp не убирает разрешение, и ваши токены остаются под угрозой, пока лимит не установлен на 0.
Главное
- Разрешения живут в блокчейне - закрытие приложения или сессии WalletConnect ничего не меняет; право на трату остается активным, пока вы его не отзовете.
- Безлимитные разрешения увеличивают ущерб - одно безлимитное разрешение позволяет контракту потратить весь текущий и будущий баланс токена.
- Отзыв предотвращает будущие траты, а не прошлую кражу - сброс лимита блокирует новые переводы, но не может вернуть активы, которые дрейнер уже вывел.
Что такое разрешения DApp на токены?
Разрешение DApp на токены - это право, которое владелец кошелька выдает смарт-контракту, чтобы тот тратил определенный токен в пределах заданной суммы. Без такого разрешения децентрализованная биржа, кредитный протокол или любой другой DApp не сможет двигать ваши токены - именно разрешение позволяет ему обменивать, стейкать или переводить их от вашего имени, когда вы с ним взаимодействуете.
Смарт-контракт - это программа на блокчейне, которая автоматически выполняет действия при соблюдении заранее заданных условий.
Как работают разрешения DApp на токены
Разрешение на токены выдается по фиксированной последовательности: вы подключаете кошелек к DApp, DApp запрашивает разрешение, оно записывается в блокчейн, и дальше DApp выполняет одобренное действие, не спрашивая заново. Так работают известные DApp вроде Aave и Uniswap. Поскольку разрешение живет в блокчейне, а не в сессии приложения, оно продолжает действовать еще долго после того, как вы перестали пользоваться DApp.
Разрешения бывают нескольких видов:
- Ограниченное разрешение: DApp может потратить только заданную вами сумму, например 500 USDC, и должен запросить новое разрешение, чтобы потратить больше.
- Безлимитное разрешение: DApp может потратить любую сумму выбранного токена, включая токены, которые придут на ваш кошелек позже.
- Разрешение на токен: смарт-контракт получает право распоряжаться конкретным взаимозаменяемым токеном, например USDC или USDT.
- Разрешение на NFT: разрешение может охватывать один NFT или всю коллекцию, например через
setApprovalForAll.
Разрешение на токены не раскрывает вашу секретную фразу и не дает DApp неограниченный доступ ко всему кошельку. Оно распространяется только на одобренный токен, NFT, сумму и смарт-контракт.
Когда пользователи криптокошельков выдают разрешения на токены?
Разрешения на токены появляются при повседневных действиях в DeFi: обмен токенов, кредитование, стейкинг и продажа NFT. Они могут оставаться активными после того, как действие завершено или DApp отключен.
Обмен токенов на DEX: допустим, вы обмениваете USDC на ETH на Uniswap - сначала вы выдаете контракту Permit2 (менеджер разрешений от Uniswap Labs) разрешение использовать USDC. Безлимитное разрешение может остаться активным после того, как обмен завершен или отменен.
Внесение токенов в кредитный протокол: чтобы дать USDT в долг на Aave, вы разрешаете контракту Aave Pool выводить токены из кошелька. Неиспользованный лимит может остаться после того, как депозит выведен или DApp отключен.
Стейкинг токенов через DApp: при стейкинге через Aave Umbrella вы разрешаете контракту стейкинга перевести выбранные токены в пул. Если разрешение превышает депозит, остаток лимита может продолжать работать после того, как вы вышли из стейкинга.
Выставление NFT на продажу: выставьте NFT на OpenSea, и маркетплейс может запросить доступ к одному NFT или ко всей коллекции через setApprovalForAll. Разрешение на всю коллекцию действует до тех пор, пока пользователь не отзовет его отдельной транзакцией.
Получение токенов из аирдропа: фейковый сайт аирдропа может спрятать безлимитное разрешение или подпись Permit за обычной кнопкой Claim. После вашего подтверждения дрейнер кошельков может вывести одобренные токены или NFT без единого нового запроса в кошельке.
В чем риски разрешений на токены?
Опасность не в самом разрешении, а в том, во что оно может превратиться со временем. Больше всего значат три риска:
- Неограниченный лимит: контракт может потратить весь текущий и будущий баланс одобренного токена, а не только ту сумму, которую вы имели в виду.
- Оставшееся разрешение: право продолжает работать месяцы или годы после того, как вы в последний раз заходили в DApp, поэтому забытое разрешение остается пригодным для эксплуатации.
- Скомпрометированный контракт: даже легитимный DApp могут взломать после того, как вы выдали разрешение, и злоумышленник получит доступ, который вы уже подписали.
Что такое дрейнеры криптокошельков?
Дрейнер криптокошельков - это вредоносный инструмент, который через фишинговый сайт или поддельный DApp обманом заставляет вас выдать разрешение на перевод ваших токенов или NFT. Вместо того чтобы подбирать вашу секретную фразу, дрейнер добивается, чтобы вы подписали доступ добровольно, а затем использует его для вывода самых ценных активов. Дрейнеры - крупная и активная угроза: в 2024 году они украли $494 млн примерно с 332 000 адресов кошельков, что на 67% больше, чем годом ранее (Scam Sniffer, 2024).
Как дрейнеры кошельков используют разрешения на токены
Атака дрейнера обычно идет по предсказуемой цепочке шагов:
- Пользователь попадает на поддельный сайт минта, аирдропа или инвестиций.
- Сайт предлагает пользователю подключить кошелек.
- Пользователь подписывает разрешение или подпись permit.
- Дрейнер сканирует кошелек и определяет самые ценные активы.
- Одобренные токены или NFT выводятся без какого-либо нового подтверждения.
Само по себе подключение кошелька не позволяет никому двигать ваши активы - опасность начинается только после того, как вы подписали разрешение или вредоносную транзакцию. Именно эта одна подпись отделяет безобидное подключение от опустошенного кошелька.
Почему отключение DApp не отзывает его разрешение
Отключение и отзыв - это два разных действия, и только одно из них убирает право контракта на трату. Отключение закрывает связь между вашим кошельком и интерфейсом DApp; разрешение продолжает жить в блокчейне.
| Действие | Что делает | Что остается активным |
|---|---|---|
| Отключение | Закрывает соединение между кошельком и интерфейсом DApp | Ранее выданные разрешения в блокчейне |
| Отзыв | Убирает или сбрасывает право смарт-контракта на трату | DApp должен запросить новое разрешение, чтобы снова получить доступ к токену |
Чтобы показать разницу, мы подключили Gem Wallet к легитимному DApp Uniswap и выдали Permit2 безлимитное разрешение на USDC. После отключения Uniswap активных сессий WalletConnect не осталось, но Revoke.cash по-прежнему показывал разрешение, где под риском был весь баланс USDC. Отключение лишь закрывает соединение с DApp - разрешение в блокчейне остается до отдельной транзакции отзыва.
Выдайте разрешение в Uniswap, отключите DApp - и разрешение все еще активно в блокчейне в Gem Wallet.
Как отозвать разрешения DApp на токены: пошагово
Отзыв разрешения занимает несколько минут. Вот весь процесс целиком:
- Откройте сервис проверки разрешений.
- Введите адрес своего кошелька.
- Выберите блокчейн.
- Просмотрите активные разрешения.
- Отзовите или уменьшите лимит.
- Подтвердите транзакцию.
- Проверьте результат.
Разберем каждый шаг подробно.
Шаг 1: откройте проверенный сервис проверки разрешений
Откройте сервис проверки разрешений, например Revoke.cash или Etherscan Token Approval Checker, и наберите адрес сами, а не переходите по ссылке. Фишинговые копии этих инструментов существуют, поэтому перепроверьте домен, прежде чем что-то подключать.
Шаг 2: введите адрес своего криптокошелька
Начните в режиме только для чтения, вставив публичный адрес кошелька - так вы увидите все активные разрешения, ничего не подключая и не подписывая. Подключение через WalletConnect понадобится только тогда, когда вы будете готовы отзывать.
Шаг 3: выберите нужный блокчейн
Выберите сеть, в которой было выдано разрешение, потому что каждая сеть хранит свои разрешения. Ethereum, BNB Chain, Polygon, Base и другие сети нужно проверять по отдельности - разрешение в одной сети не видно в другой.
Шаг 4: проверьте получателя прав и лимит
По каждой записи проверьте токен, смарт-контракт (spender), одобренную сумму, дату выдачи и сумму под риском. Незнакомый spender или безлимитная сумма на токене, который вы держите, - самый явный признак, что разрешение пора убрать.
Шаг 5: отзовите или уменьшите разрешение на токены
Полностью удалите разрешение, которое вам больше не нужно, или уменьшите лимит до суммы, которую вы действительно планируете использовать. Нажатие Revoke создает транзакцию, которая сбрасывает лимит траты для этого контракта до 0.
Шаг 6: подтвердите транзакцию в кошельке
Запрос откроется в вашем кошельке, например в Gem Wallet, через WalletConnect. Прежде чем подтверждать, проверьте, что:
- Сумма: одобренный лимит меняется на 0 USDC.
- Контракт: USDC.
- Метод: Approve.
- Spender: Permit2.
- Сеть: Ethereum.
Подтверждение требует сетевой комиссии (например, в ETH), потому что именно эта транзакция в блокчейне и убирает разрешение. Подтвердите ее в Gem Wallet, чтобы отправить.
Шаг 7: убедитесь, что разрешение убрано
Перезагрузите Revoke.cash и убедитесь, что разрешение исчезло или его сумма изменилась. В нашем тесте дашборд обновился до 0 разрешений, $0 под риском и пустого списка разрешений - доказательство, что контракт больше не может тратить USDC, пока не запросит доступ заново.
Нажмите Revoke, подтвердите лимит 0 USDC в Gem Wallet и убедитесь, что разрешение исчезло.
Какие разрешения на токены стоит отозвать?
Не каждое разрешение нужно убирать, но некоторые - очевидные кандидаты. Отзывайте разрешение, если:
- Неиспользуемый DApp: вы больше не пользуетесь DApp, который его держит.
- Незнакомый spender: вы не узнаете контракт-получатель прав.
- Безлимитная сумма: разрешение было выдано на неограниченную сумму.
- Старый листинг NFT: разрешение привязано к листингу NFT, который вы закрыли.
- Сообщение о взломе: проект раскрыл информацию о взломе или эксплойте.
- Подозрительный источник: разрешение появилось после сомнительного минта или аирдропа.
- Забытая причина: вы не помните, зачем вообще его выдавали.
Что делать, если ваш криптокошелек уже опустошили
Немедленно отзовите все активные разрешения: отзыв останавливает дальнейшие траты, но не вернет активы, которые уже украли. Если ваша секретная фраза или приватный ключ засветились, создайте новый кошелек на чистом устройстве и переведите туда остаток средств. Если за адресом следит sweeper-бот, не отправляйте газ на скомпрометированный адрес без отдельного плана спасения активов.
Как пользоваться DApp и не быть опустошенным
Отзыв убирает разрешения, которые вы уже выдали, - но безопаснее привычка отлавливать рискованное разрешение до того, как вы его подпишете. Несколько правил закрывают большинство случаев:
- Проверяйте домен: сверяйте точный URL DApp перед подключением.
- Игнорируйте приманки с разрешениями: не подписывайте непонятные разрешения только ради аирдропа.
- Ограничивайте сумму: задавайте лимит вместо безлимитного разрешения.
- Следите за setApprovalForAll: относитесь к разрешениям на всю коллекцию NFT с особой осторожностью.
- Проверяйте spender: убедитесь, что адрес получателя прав принадлежит настоящему протоколу.
- Чистите регулярно: убирайте старые разрешения по расписанию.
- Изолируйте риск: используйте отдельный кошелек для новых и непроверенных DApp.
Пользуйтесь DApp в 100+ блокчейнах с Gem Wallet - полностью открытым некастодиальным кошельком, который хранит приватные ключи на вашем устройстве и не собирает персональные данные. Скачайте Gem Wallet и подключайтесь к приложениям с поддержкой WalletConnect, сохраняя полный контроль над ключами.


