DeFi. Безопасность. Что не так с EIP-7702 (EIP-3074) после Pectra и как бороться этой напастью?
В сети появилось огромное число статей по данной теме - вот с такими заголовками:
- Фрустрация учётной записи. Как обновление Pectra облегчило жизнь хакерам.
- Обновление Pectra в сети Ethereum привлекло мошенников.
- Внимание: обновление Ethereum Pectra может угрожать безопасности.
- С новым EIP-3074 в Pectra: риск потери активов без транзакций.
- Pectra и EIP-7702: как одна подпись может снести весь баланс.
Попробуем с этим разобраться. Всегд есть два базовых способа для анализа: от частного к общему и от общего к частному. Попробуем начать с первого.
Коротко
Цитирую: “Обновление Pectra привнесло в систему Ethereum EIP-3074, в котором появились новые операционные коды — AUTH и AUTHCALL. Эти коды позволяют владельцам частных ключей делегировать свои полномочия смарт-контрактам. Звучит вроде бы как шаг к улучшению абстракции аккаунтов, но не все так радужно. Критики указывают, что это открывает новые уязвимости — хакеры могут забрать все активы из кошелька, если пользователь случайно делегирует управление своим ключом”.
И далее: “Кроме того, обновление Pectra добавило еще один камень преткновения — EIP-7702, который повышает ставки еще больше. С помощью этой функции достаточно одного злонамеренного сообщения, чтобы временно делегировать полный доступ к аккаунту стороннему смарт-контракту. Если контракт окажется мошенническим, все активы — эфир, токены, NFTs — могут быть утеряны навсегда”. (Это уже похоже на взлом Bybit).
EIP-3074
По факту от него отказались, поэтому рассмотрим сразу 7702.
EIP-7702
И дополнительно: bundlebear.com/eip7702-overview/all:
Как видим - делегирование вполне реально и растёт (особенно - с учётом накопительного эффекта).
Используем две базовые ссылки:
- Для ознакомления: academy.binance.com/en/glossary/eip-7702
- Для погружения: eip7702.io
EIP-7702 — это предложение по улучшению Ethereum, представленное в рамках обновления Pectra, которое вступило в силу 07 мая 2025 года. Оно позволяет внешне управляемым аккаунтам (EOA) временно выполнять функции смарт-контрактов в рамках одной транзакции, не требуя постоянного преобразования в смарт-аккаунт.
- Новая структура транзакции (тип 0x04): EOA может подписать авторизацию, указывающую на адрес делегата — смарт-контракт, чью логику он хочет временно использовать. Это позволяет выполнять расширенные действия, такие как пакетная обработка транзакций, спонсорство газа и альтернативные методы аутентификации.
- Совместимость с ERC-4337: EIP-7702 интегрируется с существующей инфраструктурой абстракции аккаунтов, не требуя хардфорков или новых опкодов.
Можно на это посмотреть (и) так, что EIP-7702:
- объединяет несколько действий в одну транзакцию;
- использует спонсируемый газ, чтобы не платить за комиссии;
- настраивает лимиты трат;
- восстанавливает доступ, если потеряны ключи.
Для обеспечения безопасности EIP-7702 есть:
- Привязка к nonce: Каждая авторизация связана с текущим nonce аккаунта, предотвращая повторное использование.
- Привязка к сети: Авторизации действительны только в пределах указанного chain ID, предотвращая их использование в других сетях.
- Отзыв авторизаций: Владелец EOA может отозвать или заменить делегированную логику, создав новую авторизацию.
Про популярность расскажет лучше всего, как и обычно, статистика:
Так существуют ли потенциальные риски и злоупотребления? Несмотря на преимущества, 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() и т.д.
Поэтому теперь без доп. проверки и защиты нельзя совсем.
- Кошельки: MetaMask, Rabby, Frame - подтвердили АА по EIP-7702 и защиту по этой инновации.
- Проверка делегатов: через сканеры и др. сервисы:
- Анализ через решения навроде tenderly.co (пока - ограничено).
- Изучение через:
- И, конечно же, см. на логику исполнения транзакции.
Пока выглядит всё не очень, но как есть. Будем следить и развиваться вместе с Web 3.0 & Web3, а пока всё и