Последнее обновление сети Ethereum, Pectra, представило новые мощные функции, направленные на улучшение масштабируемости и функциональности смарт-аккаунтов, но оно также открыло новый опасный вектор атаки, который может позволить хакерам выводить средства из кошельков пользователей, используя только оффчейн-подпись.
В рамках обновления Pectra, которое было запущено 7 мая в эпоху 364032 , злоумышленники могут использовать новый тип транзакции, чтобы получить контроль над внешними счетами (EOA), не требуя от пользователя подписания ончейн-транзакции.
Арда Усман, аудитор смарт-контрактов Solidity, подтвердил, что «злоумышленник получает возможность слить средства EOA, используя только подписанное оффчейн-сообщение (без прямой ончейн-транзакции, подписанной пользователем)».
Риск создает Ethereum Improvement Proposal (EIP)-7702, основной компонент обновления Pectra. Ethereum Improvement Proposal вводит транзакцию SetCode (тип 0x04), которая позволяет пользователям делегировать контроль над своим кошельком другому контракту, просто подписав сообщение.
Если злоумышленник получит эту подпись — например, через фишинговый сайт — он сможет перезаписать код кошелька небольшим прокси-сервером, который будет перенаправлять вызовы на свой вредоносный контракт.
«После того, как код установлен, — пояснил Усман, — злоумышленник может вызвать этот код для перевода ETH или токенов со счета — и все это без подписания пользователем обычной транзакции перевода».
Кошельки можно изменять с помощью оффчейн-подписи
Егор Рудица, исследователь блокчейна в Hacken, отметил, что этот новый тип транзакций, представленный Pectra, позволяет устанавливать произвольный код на счет пользователя, по сути превращая его кошелек в программируемый смарт-контракт.
«Этот тип транзакции позволяет пользователю устанавливать произвольный код (смарт-контракт), чтобы иметь возможность выполнять операции от имени пользователя», — сказал Рудица.
До появления Pectra кошельки нельзя было изменять без транзакции, подписанной непосредственно пользователем. Теперь простая оффчейн-подпись может установить код, который делегирует полный контроль контракту злоумышленника.
«До появления Pectra пользователям нужно было отправлять транзакцию (а не подписывать сообщение), чтобы разрешить перевод своих средств... После появления Pectra любая операция может быть выполнена из контракта, одобренного пользователем с помощью SET_CODE», — пояснил Рудица.
Угроза реальна и непосредственна.
«Pectra активировалась 7 мая 2025 года. С этого момента любая действительная подпись делегирования становится действенной», — предупредил Усман.
Он добавил, что смарт-контракты, полагающиеся на устаревшие предположения, такие как использование tx.origin или базовых проверок только EOA, особенно уязвимы.
Кошельки и интерфейсы, которые не могут обнаружить или правильно представить эти новые типы транзакций, подвергаются наибольшему риску. Рудиця предупредил, что «кошельки уязвимы, если они не анализируют типы транзакций Ethereum», особенно тип транзакции 0x04.
Он подчеркнул, что системы кошельков должны четко отображать запросы на делегирование и отмечать любые подозрительные адреса.
Эту новую форму атаки можно легко реализовать с помощью обычных оффчейн-взаимодействий, таких как фишинговые письма, поддельные децентрализованные приложения или мошенничество в Discord.
«Мы считаем, что это будет самый популярный вектор атаки в отношении этих критических изменений, введенных Pectra, — сказал Рудиця. — С этого момента пользователи должны тщательно проверять то, что они собираются подписать».
Аппаратные кошельки не безопаснее
Аппаратные кошельки больше не являются изначально более безопасными, сказал Рудица. Он добавил, что аппаратные кошельки отныне подвергаются такому же риску, как и горячие кошельки, с точки зрения подписи вредоносных сообщений:
«Если это сделать, все средства исчезнут в один момент».
Есть способы оставаться в безопасности, но они требуют осведомленности.
«Пользователи не должны подписывать сообщения, которые они не понимают», — посоветовал Рудица.
Он также призвал разработчиков кошельков давать четкие предупреждения, когда пользователей просят подписать сообщение о делегировании.
Особую осторожность следует проявлять в отношении новых форматов подписи делегирования, введенных EIP-7702, которые несовместимы с существующими стандартами EIP-191 или EIP-712. Эти сообщения часто выглядят как простые 32-байтовые хэши и могут обходить обычные предупреждения кошелька.
«Если сообщение включает ваш nonce аккаунта, это, вероятно, напрямую влияет на ваш аккаунт, — предупредил Усман. — Обычные сообщения о входе или оффчейн-обязательства обычно не включают ваш nonce».
Увеличивая риск, EIP-7702 допускает подписи с chain_id = 0, что означает, что подписанное сообщение может быть воспроизведено в любой цепочке, совместимой с Ethereum.
«Поймите, его можно использовать где угодно», — сказал Усман.
В то время как кошельки с несколькими подписями остаются более безопасными в рамках этого обновления благодаря необходимости наличия нескольких подписантов, кошельки с одним ключом — аппаратные или иные — должны использовать новые инструменты анализа подписей и предупреждающие инструменты для предотвращения потенциальной эксплуатации.
Наряду с EIP-7702, Pectra также включила EIP-7251, который увеличил лимит ставок валидатора Ethereum с 32 до 2048 ETH, и EIP-7691, который увеличивает количество блоков данных на блок для лучшей масштабируемости уровня 2.