Permit-фишинг USDT: как одна подпись в MetaMask опустошает кошелёк
Как работает permit-фишинг USDT через EIP-2612 и Permit2, реальные кейсы 2025 года на $6,5 млн, как проверить разрешения и отозвать их до того, как стало поздно.
Большинство людей боятся фишинга, который выглядит как фишинг: поддельный сайт, просьба ввести сид-фразу, что-то явно подозрительное. Permit-атаки работают иначе. Жертва заходит на страницу, которая выглядит как обычный DEX или NFT-минт, видит стандартное окно MetaMask с просьбой «подписать сообщение», нажимает «Подтвердить» - и всё. Никакой on-chain транзакции от жертвы, никакой оплаты газа, никакого очевидного момента ошибки. Просто пустой кошелёк.
По данным Scam Sniffer, за 2025 год через drainer-фишинг пострадало 106 000 человек на сумму $83,85 млн. Это в разы меньше, чем $494 млн годом ранее. Но не потому что атак стало меньше: они изменились. Крупных краж (от $1 млн) стало 11 вместо 30, зато мелких жертв больше. Средняя потеря упала с $1 488 до $790. Атаки сместились в сторону обычных пользователей, которые только пришли в крипту и не знают, что «подписать сообщение» может быть опаснее, чем отправить транзакцию.
Permit-подписи и Permit2 в 2025 году дали $8,72 млн из $22,98 млн потерь в инцидентах крупнее $1 млн - это 38% самых разрушительных краж. В 2024 году Permit-фишинг отвечал за 56,7% всех потерь от токен-фишинга. Это не экзотический вектор атаки. Это основной инструмент дрейнеров прямо сейчас.
Как off-chain подпись заменила on-chain approve - и почему это опасно
Чтобы DEX мог переместить ваши токены, ему нужно разрешение. Классический путь: сначала вы отправляете транзакцию approve(), которая записывает в блокчейн «этот контракт может тратить мои токены». Потом контракт делает transferFrom(). Две транзакции, два раза платите газ.
В марте 2020 года был принят EIP-2612, который добавил в стандарт ERC-20 функцию permit(). Идея: вместо on-chain транзакции вы просто подписываете сообщение офлайн по стандарту EIP-712. Подпись содержит структуру {owner, spender, value, nonce, deadline}, то есть кто дал разрешение, кому, на сколько токенов, с каким порядковым номером и до какого момента. Затем контракт принимает эту подпись как доказательство и сам записывает allowance.
Для пользователя это удобно: не нужна отдельная транзакция approve, меньше газа, быстрее. Для атакующего - идеально. Жертва подписывает сообщение в MetaMask (MetaMask показывает это как «Signature Request», без затрат газа), атакующий забирает подпись и сам транслирует её в сеть. Жертва не инициирует никакой on-chain транзакции. После трансляции контракт получает allowance и дренирует кошелёк.
Именно поэтому permit-фишинг так сложно заметить: пользователь видит обычный запрос подписи, а не транзакцию с суммой и комиссией. Подробнее о том, как устроены подобные схемы обмана, читайте в нашем обзоре типичных крипто-скамов.
Почему USDT нельзя подписать через обычный Permit - и при чём здесь Permit2
EIP-2612 работает только если функция permit() встроена прямо в контракт токена. USDC поддерживает её нативно. DAI поддерживает. А вот USDT - нет. Контракт Tether написан раньше, устроен иначе, и permit() там нет.
Казалось бы, USDT защищён. Но нет, потому что в ноябре 2022 года Uniswap Labs задеплоил Permit2 по адресу 0x000000000022D473030F116dDEE9F6B43aC78BA3. Это внешний контракт-обёртка, который умеет работать с любым ERC-20 токеном, включая USDT и WBTC. Схема такая: один раз вы одобряете (через обычный approve) этому контракту доступ к своим токенам, а дальше Permit2 сам управляет разрешениями через свои внутренние механизмы, уже по модели EIP-712 подписей.
К 2026 году Permit2 стал самым широко интегрированным approval-контрактом на всех EVM-совместимых сетях. Практически каждый современный DEX или агрегатор просит вас взаимодействовать через него. Это удобно для легитимных приложений, и это же делает его целью дрейнеров. Если вы когда-либо работали с Uniswap, вы, скорее всего, уже одобрили Permit2 доступ к своим токенам, включая USDT.
Четыре сценария drainer-атак: от фейкового DEX до captcha
Дрейнеры используют четыре основных паттерна, и важно понимать каждый.
Первый - классический unbounded approve. Вы нажимаете «Swap» на поддельном DEX, он просит одобрить токены. MetaMask показывает транзакцию approve с суммой 2^256-1 (фактически бесконечность) на адрес атакующего. Если вы одобрили - всё. Почти каждый dApp по умолчанию запрашивал именно такой неограниченный лимит, и многие пользователи просто привыкли нажимать «ОК».
Второй - нативный Permit (EIP-2612). Фейковый сайт просит «войти» или «верифицировать кошелёк». MetaMask открывает Signature Request без суммы газа. Внутри - permit-структура, дающая атакующему allowance на весь баланс USDC или DAI. Вы думаете, что просто логинитесь. Атакующий транслирует подпись и забирает токены.
Третий - Permit2 typed-data. Аналогичная история, но теперь через контракт Uniswap. Сайт имитирует swap-интерфейс, показывает «Вы получите 1 ETH», а в реальности запрашивает Permit2-подпись с полным доступом к USDT. Особенно коварно, что MetaMask отображает структуру данных, а не человекочитаемый результат операции. Мало кто разбирает JSON в момент подтверждения.
Четвёртый - замаскированный transferFrom или прямой call. Менее распространён, но встречается: атакующий оборачивает вредоносный вызов в интерфейс, который выглядит как mint или claim. Пользователь думает, что получает NFT или аирдроп, а транзакция списывает его токены.
Отдельный трюк, который работает поверх всех четырёх - ложное превью результата. Современные dApp-интерфейсы показывают симуляцию сделки: «вы получите X». Некоторые drainer-скрипты научились подделывать этот экран, показывая желаемый результат, тогда как настоящий calldata делает совсем другое.
Реальные кейсы: $6,5 млн за одну подпись
Цифры становятся понятнее на конкретных случаях.
Сентябрь 2025 года. Крупнейшая единичная кража за год: $6,5 млн в staked ETH и wrapped BTC. Одна permit-подпись. Подробности того, как жертва оказалась на фишинговом сайте, не раскрывались. Механика стандартная: Permit-style сообщение в MetaMask, ни одной on-chain транзакции от жертвы.
Май 2025 года. $3,13 млн wrapped BTC ушло через approval escalation - атаку, при которой первоначально одобренный лимит затем расширялся через серию манипуляций с allowance.
Февраль 2025 года. Группа Lazarus взломала крупную биржу на $1,46 млрд - другой масштаб и другой вектор (supply chain: вредоносный код внедрили в ПО провайдера кошелька, он имитировал approval-промпты для разработчиков). Это не классический drainer, но технически использовало тот же принцип: жертва видела легитимный запрос подтверждения, за которым стояла вредоносная операция.
В отдельном случае 2025-2026 годов трейдер потерял около $1 млн после подписания вредоносного Permit2-сообщения. Атакующий получил полный контроль над кошельком.
Сезонность важна: Q3 2025 (июль-сентябрь) дал $31,04 млн потерь и 40 000 жертв. Пик совпал с ростом Bitcoin и Ethereum. Во время бычьего рынка люди торопятся и меньше думают перед подписанием. Август стал самым дорогим месяцем: $12,17 млн потерь.
Суммарно с 2021 года approval-фишинг принёс задокументированные потери больше $1 млрд. По оценке Chainalysis в отчёте 2026 года, все on-chain мошенничества в 2025 году обошлись рынку минимум в $14 млрд.
Как выглядит вредоносный permit-запрос в MetaMask - на что смотреть
Когда MetaMask показывает Signature Request (не транзакцию, а именно запрос подписи), вы видите structured data. В норме пользователь пролистывает и нажимает «Sign». Именно на это и рассчитывает атакующий.
Поле spender - самое важное. Это адрес, который получит право тратить ваши токены. Если это не адрес известного протокола (Uniswap Router, Aave и т.д.) - стоп. Проверьте адрес в Etherscan до подтверждения.
Поле value - сколько токенов вы разрешаете потратить. Значение 115792089237316195423570985008687907853269984665640564039457584007913129639935 - это 2^256-1, то есть «всё что есть и будет». Легитимный swap-протокол обычно запрашивает ровно столько, сколько нужно для конкретной операции.
Поле deadline - до какого момента подпись действительна. Слишком далёкий дедлайн (годы вперёд) - красный флаг. Нормальный DEX ставит несколько минут или часов.
Само по себе наличие permit-запроса не означает атаку: это стандартный механизм. Проблема в том, что на фишинговом сайте spender будет адресом атакующего, value - максимальным, а deadline - далёким. Все три поля нужно читать перед подтверждением.
Как проверить активные разрешения и что с ними делать
По оценке Chainalysis, к 2026 году активных неограниченных approvals на скомпрометированных или брошенных кошельках накопилось на $2,4 млрд. Они не истекают сами по себе. Allowance живёт до тех пор, пока вы его не отзовёте вручную.
Три инструмента, которые помогут.
Revoke.cash - самый удобный. Подключаете кошелёк, выбираете сеть (поддерживает Ethereum, Polygon, BNB Chain, Arbitrum, Base и десятки других), видите список всех активных approvals с адресами контрактов и суммами. Каждое разрешение можно отозвать одной транзакцией. Сайт open-source, не просит приватный ключ.
Etherscan Token Approval Checker - если хотите проверить конкретный адрес без подключения кошелька. Вводите адрес, видите approvals. Отозвать отсюда тоже можно, но интерфейс чуть менее удобный.
De.Fi Scanner - агрегирует approvals по нескольким сетям сразу и помечает подозрительные контракты.
Для Permit2 важно: это единая точка. Если вы отзовёте approval на Permit2-контракт (адрес 0x000000000022D473030F116dDEE9F6B43aC78BA3), все разрешения, выданные через него, станут недействительными. Это удобно при зачистке, но после этого придётся заново одобрять легитимные dApp.
Проверьте кошелёк прямо сейчас, особенно если вы активно работали с DeFi в 2021-2023 годах. Именно тогда бесконечные approvals были нормой.
Пошаговая инструкция по отзыву разрешений
Отзыв занимает несколько минут и стоит копейки газа.
Заходите на revoke.cash. Нажимаете «Connect Wallet» - MetaMask, WalletConnect, любой поддерживаемый кошелёк. Выбираете нужную сеть в выпадающем меню (Ethereum, Arbitrum, Base - по очереди для каждой). Видите таблицу: имя токена, адрес контракта-получателя, лимит, дата выдачи.
Смотрите на колонку «Allowance». Если там «Unlimited» или очень большая сумма на контракт, который вы не узнаёте, это первый кандидат на отзыв. Нажимаете «Revoke», MetaMask просит подтвердить транзакцию с небольшой комиссией. Готово.
Для Permit2 отдельно: в том же интерфейсе Revoke.cash найдите разрешения с адресом 0x000000000022D473030F116dDEE9F6B43aC78BA3 в роли spender. Если вы больше не пользуетесь dApp, которые его используют, - отзывайте.
Главное правило: после любого инцидента (зашли на подозрительный сайт, случайно подписали что-то непонятное) сразу открывайте Revoke.cash и проверяйте свежие разрешения. Дренирование токенов происходит не мгновенно в момент подписи. Атакующий транслирует permit, а потом делает transferFrom. Иногда есть несколько минут, чтобы успеть отозвать allowance раньше.
Чек-лист безопасного подписания
Несколько правил, которые реально работают.
Проверяйте домен до подписания. Фишинговые сайты копируют интерфейс до пикселя, но домен будет другим: uniswap-app.io вместо app.uniswap.org, pancakeswap.finance.biz вместо pancakeswap.finance. Смотрите на адресную строку, а не на внешний вид страницы.
Читайте поля permit-запроса. Spender - куда идёт разрешение. Value - сколько. Deadline - до когда. Все три должны быть понятны и разумны для операции, которую вы делаете.
Используйте отдельный кошелёк для dApp. Горячий кошелёк с небольшим балансом - для экспериментов с DeFi. Основные активы - в холодном хранилище или отдельном адресе, который никогда не подписывает permit-запросы.
Ограничивайте approve по сумме. Вместо «Unlimited» вручную вписывайте ровно ту сумму, которая нужна для операции. В MetaMask это можно сделать через «Edit Permission».
Если сомневаетесь - не подписывайте. Любой легитимный протокол даст вам время разобраться. Срочность («подпишите в течение 60 секунд иначе офер сгорит») - классический признак манипуляции.
Почему индустрия drainer никуда не исчезла
Падение потерь на 83% в 2025 году выглядит как победа, но картина сложнее.
Число жертв снизилось на 68%, что говорит о росте осведомлённости среди опытных пользователей. Зато средняя потеря упала с $1 488 до $790: атакующие переключились на розничных пользователей с меньшими, но более доступными кошельками. Атаки стали массовее и дешевле в исполнении.
В январе 2026 года только на фишинг и социальную инженерию пришлось $370 млн потерь по данным CertiK, из которых $284 млн - один инцидент. Это говорит о том, что индустрия не деградировала, а разделилась. Высококвалифицированные группы работают по крупным целям, а массовый drainer-фишинг продолжает косить розничных пользователей.
Профессионализация атак видна в деталях. Ложные превью операций, имитация captcha, supply chain breaches через провайдеров кошельков - это не самодельные скрипты, это индустрия со своей специализацией. Drainer-as-a-service продаётся на теневых форумах, атакующим не нужно разбираться в EIP-2612, чтобы его эксплуатировать.
$2,4 млрд в активных неограниченных approvals на скомпрометированных кошельках никуда не делись. Они ждут, пока кто-то о них «вспомнит». Это не гипотетический риск, это конкретная сумма с конкретными адресами.
Источники
- Scam Sniffer - 2025 Annual Phishing Report: https://www.scamsniffer.io/reports/2025-annual-phishing-report
- Chainalysis - 2026 Crypto Crime Report: https://go.chainalysis.com/crypto-crime-report-2026.html
- EIP-2612 (Ethereum Improvement Proposals): https://eips.ethereum.org/EIPS/eip-2612
- Uniswap Labs - Permit2 and Universal Router: https://blog.uniswap.org/permit2-and-universal-router
- Revoke.cash - инструмент отзыва approvals: https://revoke.cash
- Etherscan Token Approval Checker: https://etherscan.io/tokenapprovalchecker
- De.Fi Scanner: https://de.fi/scanner
Обмен криптовалюты на наличные в Нижнем Новгороде - выгодный курс и живой оператор. Приходите в офис или пишите @obmen52bot.