Офчейн-подпись стоимостью 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 даёт атакующему право перевести — но не мешает вам перевести первыми. Скорость решает.