June 2

DeFi. Безопасность. Что не так с EIP-7702 (EIP-3074) после Pectra и как бороться этой напастью?

EIP-7702

В сети появилось огромное число статей по данной теме - вот с такими заголовками:

Попробуем с этим разобраться. Всегд есть два базовых способа для анализа: от частного к общему и от общего к частному. Попробуем начать с первого.

Коротко

Цитирую: “Обновление Pectra привнесло в систему Ethereum EIP-3074, в котором появились новые операционные коды — AUTH и AUTHCALL. Эти коды позволяют владельцам частных ключей делегировать свои полномочия смарт-контрактам. Звучит вроде бы как шаг к улучшению абстракции аккаунтов, но не все так радужно. Критики указывают, что это открывает новые уязвимости — хакеры могут забрать все активы из кошелька, если пользователь случайно делегирует управление своим ключом”.

И далее: “Кроме того, обновление Pectra добавило еще один камень преткновения — EIP-7702, который повышает ставки еще больше. С помощью этой функции достаточно одного злонамеренного сообщения, чтобы временно делегировать полный доступ к аккаунту стороннему смарт-контракту. Если контракт окажется мошенническим, все активы — эфир, токены, NFTs — могут быть утеряны навсегда”. (Это уже похоже на взлом Bybit).

EIP-3074

По факту от него отказались, поэтому рассмотрим сразу 7702.

EIP-7702

Статистика:

Статистика №01. Dune

И дополнительно: bundlebear.com/eip7702-overview/all:

Статистика №02. BundleBear

Как видим - делегирование вполне реально и растёт (особенно - с учётом накопительного эффекта).

Используем две базовые ссылки:

EIP-7702 — это предложение по улучшению Ethereum, представленное в рамках обновления Pectra, которое вступило в силу 07 мая 2025 года. Оно позволяет внешне управляемым аккаунтам (EOA) временно выполнять функции смарт-контрактов в рамках одной транзакции, не требуя постоянного преобразования в смарт-аккаунт.

Основные фичи EIP-7702:

  • Новая структура транзакции (тип 0x04): EOA может подписать авторизацию, указывающую на адрес делегата — смарт-контракт, чью логику он хочет временно использовать. Это позволяет выполнять расширенные действия, такие как пакетная обработка транзакций, спонсорство газа и альтернативные методы аутентификации.
  • Совместимость с ERC-4337: EIP-7702 интегрируется с существующей инфраструктурой абстракции аккаунтов, не требуя хардфорков или новых опкодов.

Можно на это посмотреть (и) так, что EIP-7702:

  • объединяет несколько действий в одну транзакцию;
  • использует спонсируемый газ, чтобы не платить за комиссии;
  • настраивает лимиты трат;
  • восстанавливает доступ, если потеряны ключи.

Для обеспечения безопасности EIP-7702 есть:

  • Привязка к nonce: Каждая авторизация связана с текущим nonce аккаунта, предотвращая повторное использование.
  • Привязка к сети: Авторизации действительны только в пределах указанного chain ID, предотвращая их использование в других сетях.
  • Отзыв авторизаций: Владелец EOA может отозвать или заменить делегированную логику, создав новую авторизацию.

Про популярность расскажет лучше всего, как и обычно, статистика:

Статистика №03

Так существуют ли потенциальные риски и злоупотребления? Несмотря на преимущества, EIP-7702 уже столкнулся с проблемами безопасности:

  • По данным BlockBeats, более 80% авторизаций EIP-7702 использовались для автоматических атак, включая фишинг и кражу средств. Например, контракт 'CrimeEnjoyor' был использован для опустошения кошельков с утёкшими приватными ключами, что привело к потерям около $150,000.
  • Изменение предположений безопасности: EIP-7702 нарушает инвариант msg.sender == tx.origin, что может повлиять на смарт-контракты, полагающиеся на это условие для обеспечения безопасности.

Примеры атаки

Пример №01. x.com/SlowMist_Team/status/1927279062822641772. Сама транзакция: etherscan.io/tx/0x1ddc8cecbcaad5396fdf59ff8cddd8edd15f82f1e26779e581b7a4785a5f5e06#eventlog.

Её нашла компания SlowMist, специализирующаяся на безопасности блокчейна, которая и сообщила о фишинге, в результате которого адрес, обновлённый до стандарта EIP-7702, потерял $146,551 через вредоносные пакетные транзакции.

Суть:

Код

Сами аппрувы:

Аппрувы

Если обобщить, то данный инцидент подчёркивает важность социальной защиты и организационной при при взаимодействии с новыми стандартами и необходимость проведения тщательных проверок безопасности.

Пример №02. См. по ссылке: x.com/GoPlusSecurity/status/1924646924755534091. Суть: благодаря декомпиляции кода смарт-контракта было обнаружено следующее:
после того как пользователь авторизует вредоносного делегатора: 0x930fCc37d6042C79211eE18A02857cB1fd7F0D0B - происходит следующее:

Код

И вот что советуют исследователи после анализа кейса:

Вот ключевые меры безопасности:

  • Использовать официальные кошельки и расширения для авторизации по EIP-7702.
  • Не доверять ссылкам из писем и сторонних сайтов.
  • Проверяйте исходный код контрактов перед авторизацией.
  • Быть осторожными с закрытым (неопубликованным) кодом.
  • Внимательно проверять адреса делегаторов перед подтверждением.

Но попробуем расширить список защитных действий.

Само-защита

Поскольку пользователь видит только одну подпись, в которой могут быть объединены хоть 10+, то фактически получается, что видит он:

  • approve сразу на все токены;
  • transferFrom по каждому из них;
  • а помимо этого- кастомные действия, замаскированные под «легитимный» контрактный вызов — например, снятие и вывод стейкингов, claim() с последующим переводом, unstake() и т.д.

Поэтому теперь без доп. проверки и защиты нельзя совсем.

Список:

  1. Кошельки: MetaMask, Rabby, Frame - подтвердили АА по EIP-7702 и защиту по этой инновации.
  2. Проверка делегатов: через сканеры и др. сервисы:
    1. bundlebear.com/eip7702-authorized-contracts/all
    2. etherscan.io/tokenapprovalchecker
    3. revoke.cash/ru
  3. Анализ через решения навроде tenderly.co (пока - ограничено).
  4. Изучение через:
    1. x.com/slowmist_team
    2. x.com/goplussecurity
    3. x.com/realScamSniffer
    4. t.me/web3news
  5. И, конечно же, см. на логику исполнения транзакции.

Пока выглядит всё не очень, но как есть. Будем следить и развиваться вместе с Web 3.0 & Web3, а пока всё и

До!