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

Что на самом деле делает подпись Permit

Пользователь подписывает структурированное сообщение EIP-712 со смыслом: «Я разрешаю адресу X потратить до Y токенов Z с моего адреса; разрешение действует до момента T». Такая подпись — действительное доказательство для блокчейна: любой, у кого она есть, может передать её в контракт токена, и контракт признает разрешение без предварительной транзакции approve.

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

Как появился Permit2

В конце 2022 года Uniswap запустил Permit2 — обновлённую систему разрешений. Permit2 — это единый контракт одобрений, которым может пользоваться любое приложение, с более тонкими настройками (лимиты на транзакцию, пакетные операции, сроки действия). Фишинг через подписи работает и здесь, только с дополнительной опасностью: подпись Permit2 может действовать сразу для многих токенов.

К середине 2024 года Permit2 стал основным механизмом одобрений в Uniswap и многих других dApp на Ethereum.

Как выглядит атака в 2026 году

Пользователь попадает на поддельный интерфейс — клон DEX, фишинговую страницу «получите аирдроп» или взломанный настоящий dApp. Интерфейс просит подключить кошелёк, а затем запрашивает не транзакцию, а «подпись». В окне кошелька она выглядит как хеш или набор полей структурированных данных.

Если пользователь подписывает, злоумышленник забирает подпись и ждёт — часто несколько дней, — прежде чем её использовать. Задержка намеренная: так у человека не складывается связь между «я три дня назад подписал что-то странное» и «у меня только что пропали USDC».

Что действительно защищает

Три уровня защиты.

Первый: читайте каждую подпись вне блокчейна. Rabby Wallet, MetaMask (начиная с обновления мая 2024 года) и современные прошивки Ledger и Trezor показывают поля подписи Permit в понятном человеку виде. Если в поле spender стоит незнакомый адрес, не подписывайте.

Второй: выбирайте DEX-агрегаторы, которые не используют одобрения только через подпись. 1inch работает через обычное одобрение в блокчейне (газа и хлопот больше, зато одобрение видно в истории транзакций). Так же устроены и некоторые небольшие DEX.

Третий: регулярно отзывайте разрешения. Раз в квартал заходите на revoke.cash и отзывайте все разрешения Permit2, которые не можете опознать. Это и есть на практике «проверка ваших одобрений».

Оговорка про аппаратные кошельки

Аппаратные кошельки показывают подписи EIP-712, но по-разному. Ledger Nano S Plus выводит структурированные данные на маленький экран; Trezor Safe 5 — крупным текстом на цветном сенсорном экране. На каком бы устройстве вы ни работали, со структурированными подписями не торопитесь: атака укладывается в ту секунду-другую между «вроде всё нормально, жму подтвердить» и «а это было вредоносное одобрение».

Дополнительное чтение: setApprovalForAll, Фишинг, revoke.cash.