Офчейн-підпис вартістю 84 000 USDC

Грудень 2024. Дніпровський холдер заходить на «новий DEX з нульовими комісіями», який рекламують у Telegram-каналі. Сайт просить підпис з міткою Permit — без транзакції, без газу, без попереджень MetaMask. Він підписує.

Через одинадцять секунд 84 000 USDC зникають. Підпис Permit дав чужій адресі право списати весь баланс USDC, і дрейнер викликав transferFrom у ту ж секунду, як сигнатура була передана.

Чим небезпечний EIP-2612 Permit

EIP-2612 придумали для економії газу: замість окремої транзакції approve користувач підписує офчейн-повідомлення, а спендер включає цей підпис при виклику контракту. Підпис без газу, виглядає безпечно — MetaMask показує structured-data-промпт, а не транзакцію. Але ефект ідентичний безлімітному схваленню. Оскільки при підписі нічого в блокчейн не записується, revoke.cash не бачить цієї загрози.

Чотири мітки підпису, на яких варто завмерти

  • Permit — EIP-2612, безгазове схвалення ERC-20.
  • PermitSingle / PermitBatch — контракт Permit2 від Uniswap, ще потужніший.
  • setApprovalForAll — схвалення цілої NFT-колекції.
  • 0x1626ba7e або довільний hex — generic typed-data, гаманець не може пояснити, що ви підписуєте.

Якщо гаманець показує будь-яку з цих міток і сайт не верифікований мейнстрім, яким ви вже користувалися — відхиляйте підпис і закривайте вкладку.

Легітимні застосування

Реальні Permit-використання існують: Uniswap, 1inch, CowSwap, кілька великих lending-протоколів економлять користувачам газ через Permit та Permit2. Захист — не «ніколи не підписувати Permit», а «підписувати Permit лише за URL, який ви набрали самі, у протоколі, яким уже багато разів користувалися».

Якщо підписали і кошти ще на місці

У вас хвилини. Відкрийте той самий гаманець, переведіть весь баланс токена на свіжу адресу. Підпис Permit дає атакуючому право переказати — але не заважає вам переказати першим. Швидкість вирішує.