Разрешения на токены, которые используются в DeFi-протоколах, могут обернуться кражей средств, если они неограниченные и бессрочные. Рассказываем, как это работает и как защититься от рисков
Каждый, кто хоть раз менял токены на децентрализованной бирже (DEX) или вносил деньги в децентрализованное финансовое приложение (DeFi), сталкивался с двумя подтверждениями транзакции подряд. Первое — разрешение на использование токена, второе — сама операция. Многие не придают этому значения, но именно с такими разрешениями связана одна из самых массовых схем кражи криптовалюты — фишинг подписей (signature phishing) или фейковые подтверждения транзакций.
Разрешение на токен (token approval) — это право, которое пользователь дает смарт-контракту, на распоряжение определенными токенами в кошельке. Без него приложение или биржа ничего не сможет сделать с активами, даже если кошелек подключен к интерфейсу.
Важно понимать разницу: подключение кошелька к сайту — это не разрешение. Это просто функция показа адреса, которая дает приложению увидеть баланс. А чтобы списать токены, нужна отдельная транзакция в блокчейне — за нее пользователь платит комиссию в сети как и за остальные операции в блокчейне.
rbc.group
Технически это выглядит так: пользователь подписывает разрешение, где указывает, какому приложению и какую сумму токенов разрешено использовать. После этого контракт может списывать средства с кошелька в пределах одобренного лимита, не спрашивая каких-либо дополнительных одобрений.
Ограниченные и безлимитные
Разрешения бывают двух видов. Первый — ограниченное, где пользователь одобряет конкретную сумму, например 500 USDT на одну сделку. Как только лимит исчерпан, для следующей операции нужны новое разрешение и уплата новых комиссионных сборов.
Второй — неограниченное, где пользователь дает смарт-контракту право списать весь баланс по этому токену бессрочно. Большинство приложений запрашивают именно такое разрешение по умолчанию просто потому, что так удобнее и не нужно подписывать каждую транзакцию заново.
И вот здесь кроется главная проблема. Неограниченное разрешение не имеет срока или предела действия. Если контракт взломают в будущем или пользователь подпишет разрешение на фишинговом сайте, злоумышленник сможет вывести все токены без дополнительного одобрения. А пользователь часто даже не знает о существовании такого разрешения, пока не пропадут средства.
Как это используют мошенники
Для кражи подписей злоумышленники могут использовать сразу несколько вариантов атаки на кошельки. Такие вредносные смарт-контракты и программы принято называть дрейнер (drainer).
Чаще всего создается поддельный сайт известного протокола, фальшивая ссылка на бесплатную раздачу токенов или якобы привлекательный новый проект. Выглядит все правдоподобно — знакомый дизайн, похожий интернет-адрес или обещания быстрой прибыли.
Затем сайт просит подписать транзакцию или сообщение якобы для подключения, обмена или получения награды. Но на деле такая подпись дает мошенникам доступ к токенам, после чего буквально за секунды опустошается адрес жертвы.
И стоит отметить, что с точки зрения блокчейна все выглядит справедливо: пользователь сам подписал разрешение, контракт выполнил то, на что был уполномочен. И отменить такую транзакцию на уровне протокола уже невозможно.
Как защититься
Главное правило для защиты от такого типа атак — проверять сайты и приложения. Мошенники копируют интерфейсы популярных протоколов или создают на первый взгляд качественные сервисы. Поэтому надежнее заходить через закладки страниц в браузере, а не по ссылкам из поиска, соцсетей или личных сообщений. А новые сайты стоит внимательно изучить, осознавая все риски, перед первым подключением.
Второе — внимательно читать условия подписи. Если запрос на подпись содержит информацию о токенах и суммах, это не вход в систему, а запрос на разрешение транзакций.
Третье — не давать разрешений больше, чем нужно. Если приложение позволяет указать лимит, пользователю следует указывать сумму под конкретную операцию, а не весь баланс. Это неудобнее, но потери в случае взлома будут ограничены.
И четвертое — периодически проверять активные разрешения. Если пользователь часто использует DeFi-приложения, то за несколько месяцев могут накопиться десятки разрешений. И их рекомендуется периодически отзывать.
Помимо личных мер по обеспечению безопасности, проблемой занимаются и разработчики протоколов. Например, в Ethereum запустили новый открытый стандарт Clear Signing, который должен сделать подтверждение транзакций в Ethereum более понятным и безопасным для пользователей.
Решение позволяет показывать понятное описание операции вместо набора технических данных. Например, пользователь увидит «обмен 1000 USDC на 0,42 $ETH через Uniswap» вместо длинной строки кода.
Как отозвать разрешение на токены
Отозвать разрешение можно через блокчейн-эксплорер или специальные сервисы по типу Revoke или De.fi. Также нужно иметь в виду, что отзыв подписи — это отдельная транзакция с комиссией в сети операции. Отзыв не вернет уже украденные токены, но закроет доступ к вашему кошельку на будущее.
Отдельно стоит помнить: разрешения на траты работают только с токенами стандарта ERC-20 или NFT-токенов, но не дают доступа к нативной криптовалюте блокчейна вроде $ETH в Ethereum или POL в Polygon. А вот ее обернутые-версии (WETH, WPOL) — это уже токены, и их могут списать через такое разрешение.
Подписывайтесь на страницы новостей криптовалют -










