Краткий ответ

Подписи Permit (EIP-2612) и Permit2 — один из главных способов кражи криптовалюты в 2025–2026 годах. Опасность в том, что в окне кошелька такая подпись выглядит как бессмысленный набор символов, а на деле даёт злоумышленнику право перевести из вашего кошелька определённый токен в указанном объёме — бессрочно или до заданного срока. Вам не нужно ничего отправлять: у злоумышленника уже есть разрешение забрать средства самому. Permit2 делает ситуацию ещё хуже: одной подписью можно выдать доступ сразу к нескольким токенам.

Как это устроено

Обычное одобрение ERC-20 — это транзакция в блокчейне: вы её видите и платите за неё газ. EIP-2612 ввёл Permit как способ сэкономить на газе: вместо транзакции пользователь подписывает структурированное сообщение (EIP-712), которое разрешает указанному адресу (spender) тратить токены. Эта подпись действительна в блокчейне: любой, у кого она есть, может передать её в контракт токена, и контракт признает разрешение.

Для пользователя это выглядит так: всплывает окно с просьбой подписать сообщение с полями вроде «owner: 0xВЫ, spender: 0xЗЛОУМЫШЛЕННИК, value: max, deadline: 2099». Подписав его, вы вручаете злоумышленнику доказательство того, что разрешили ему перевести сколько угодно этого токена. Предъявить это доказательство в блокчейне он может в любой момент до истечения срока.

Чем опаснее Permit2

Uniswap запустил Permit2 в конце 2022 года как единый контракт для одобрений. Подпись Permit2 может разрешить доступ сразу к нескольким токенам, с отдельной суммой для каждого. Одна такая подпись способна открыть доступ к вашим USDC, USDT, WETH, stETH и другим токенам одновременно.

Кроме того, Permit2 умеет выполнять пакетные переводы, поэтому злоумышленник выводит сразу несколько активов за одно исполнение, а не по транзакции на каждый токен.

Почему такую подпись трудно распознать

Окно подписи выглядит примерно так:

Sign typed data?
Type: Permit
Owner: 0xYourAddress
Spender: 0x... (длинная шестнадцатеричная строка)
Value: 115792089237316195423570985008687907853269984665640564039457584007913129639935
Deadline: 99999999999

Человеку без подготовки это ни о чём не говорит. Огромное значение value — это 2^256-1, то есть «без ограничений». Огромный deadline означает «никогда не истекает». При этом многие кошельки показывают всё это просто как «Подтвердить подпись?», не объясняя последствий.

Что делают современные кошельки

Rabby Wallet показывает подписи Permit понятным текстом: «Вы разрешаете 0xSpender переводить из вашего кошелька USDC без ограничений и бессрочно. ВНИМАНИЕ: это равносильно прямому доступу к вашему балансу USDC». MetaMask до 2024 года такого не показывал, после 2024-го добавил похожие предупреждения.

Аппаратные кошельки (Trezor Safe 3 и новее, Ledger с обновлённой прошивкой) выводят разобранные поля Permit прямо на экран устройства и требуют подтверждения кнопкой.

Как защититься

Три правила.

Подписывайте Permit только в известных dApp, которым он действительно нужен (Uniswap, 1inch в режиме с Permit2). Если подпись Permit запрашивает случайная страница «получения аирдропа» или «проверки кошелька», откажитесь.

Смотрите на адрес spender. Это должен быть контракт самого dApp (на Etherscan он отмечен как проверенный), а не чей-то обычный кошелёк.

Раз в квартал заходите на revoke.cash и отзывайте незнакомые вам разрешения Permit2.

Дополнительное чтение: EIP-2612 Permit, Фишинг.