Мы разработали EIP7702Proxy, облегченный прокси-контракт ERC-1967, предназначенный для использования в качестве базовой логики переадресации делегирования EIP-7702 для EOA... который решает некоторые проблемы, уникальные для делегированных учетных записей EIP-7702. Эта статья взята из статьи, написанной сообществом Boardlink, и составлена, скомпилирована и предоставлена ForesightNews. (Синопсис: Ethereum Pectra обновляет «хакерский флип», Wintermute предупреждает: EIP-7702 автоматизирует развертывание большого количества контрактов) (Справочное дополнение: «Проект безопасности на триллион долларов» от Ethereum Foundation выпускает первый отчет: Сортировка смарт-контрактов, инфраструктуры и облачной безопасности... Six Ecological Challenges EIP-7702 позволяет простым кошелькам Ethereum (EOA) модернизироваться до кошельков смарт-контрактов, обеспечивая большую безопасность, расширенные функции, возможности спонсорства газа и другие преимущества. Исторически сложилось так, что смарт-кошельки приходилось создавать с нуля, но с появлением EIP-7702 традиционные кошельки могут быть модернизированы и хранить все свои активы и ончейн-историю с тем же адресом кошелька. Это все равно, что переключиться со стационарного телефона на смартфон без необходимости получать новый номер. EOA модернизируется путем настройки «обозначения делегирования», т.е. указателя на смарт-контракт делегирования, а затем делегирования логики смарт-контракта для управления EOA. В результате обновленный EOA может иметь функции, устанавливать хранилище, выдавать события и выполнять все другие операции, которые может выполнять смарт-контракт. EOA может изменить или удалить этого делегата в любое время с помощью новой, подписанной авторизации EIP-7702. Несмотря на то, что это открывает множество новых возможностей, эта мощная функция также создает новые проблемы безопасности, которые требуют тщательного рассмотрения и инновационных решений. Чтобы EOA мог выступать в качестве кошелька смарт-контракта, мы разработали EIP7702Proxy, облегченный прокси-контракт ERC-1967, предназначенный для использования в качестве делегата EIP-7702 для EOA. В дополнение к базовой логической переадресации, выполняемой агентом, EIP7702Proxy включает в себя дополнительные функции и варианты проектирования, которые решают некоторые проблемы, уникальные для делегированных учетных записей EIP-7702. Одной из целей разработки EIP7702Proxy является поддержание как можно большей сопоставимости между «стандартным» смарт-кошельком Coinbase и делегированным смарт-кошельком Coinbase EIP-7702, что означает абстрагирование дополнительной сложности, необходимой для механизма EIP-7702, в выделенный прокси-сервер и продолжение полагаться на оригинальную реализацию CoinbaseSmartWallet. Решение этой проблемы может быть эффективно применено к любой логике реализации, а не только к реализации CoinbaseSmartWallet, а также помогает EOA оставаться в безопасности в среде с поддержкой 7702. Ниже мы представляем конкретные задачи и соответствующие проектные решения, которые позволяют нам безопасно адаптировать любую существующую реализацию кошелька смарт-контракта для обновлений EIP-7702. Проблема #1: Обеспечение безопасной инициализации Первое серьезное препятствие на пути реализации EIP-7702 связано с ограничениями инициализации. Традиционные кошельки смарт-контрактов, включая CoinbaseSmartWallet, обычно обрабатывают безопасную инициализацию (установление права собственности на учетную запись) атомарно во время их развертывания, как правило, через отдельный заводской контракт. Эта атомарность означает, что многие такие реализации имеют незащищенные функции инициализатора, которые могут быть вызваны только один раз. Однако конструкция EIP-7702 не позволяет выполнять инициализацию данных вызова во время процесса делегирования кода (эквивалентный этапу «развертывания»), поэтому это не может быть сделано атомарно. Такое разделение шагов создает критическое окно уязвимости. Когда контракт на внедрение «развертывается» в EOA через EIP-7702, нет никакой гарантии, что стандартная транзакция EVM для этого кошелька обновления и инициализации 7702 будет выполнена атомарно. С технической точки зрения, даже если это зафиксировано одновременно, код, устанавливающий авторизацию, может быть независимым от приложения транзакции инициализации, что может позволить злоумышленнику упреждающе выполнить транзакцию инициализации и заявить о праве собственности на смарт-аккаунт. Решение: Подпись EOA требуется для атомарной настройки реализации и инициализации Обратите внимание, что существующий смарт-кошелек Coinbase развертывается после прокси ERC-1967 с реализацией UUPSUpgradeable (фактическая логика CoinbaseSmartWallet). Код в фактическом адресе учетной записи является прокси-сервером, который использует обычное место хранения, определенное в ERC-1967, для хранения указателей на логику его реализации. Наше решение проблемы уязвимости инициализации в контексте 7702 включает в себя признание того, что любая логика реализации становится активной (и, следовательно, опасной) только тогда, когда агент фактически устанавливает соединение с ней. Таким образом, если мы не можем принудительно развернуть и инициализировать атомарность, мы можем принудительно настроить и инициализировать реализацию атомарности. Структура контракта EIP-7702CoinbaseSmartWallet и логический процесс делегирования В контексте EIP-7702 EOA сама является первоначальным органом для внесения любых изменений в свою учетную запись, и подпись должна быть предоставлена для авторизации любого владельца, который инициализирует и создает новую учетную запись Smart. Наш контракт EIP7702Proxy реализует функцию setImplementation, которая атомарно настраивает новые логические реализации и инициализирует учетные записи. Функция setImplementation: проверяет подпись из EOA, которая включает в себя ключевые данные, такие как адрес нового контракта реализации, инициализирующие данные вызова, адрес контракта валидатора, который будет оценивать безопасность конечного состояния учетной записи, и базовую защиту от воспроизведения подписи, такую как одноразовый номер и время истечения срока действия. Установите значение указателя ERC-1967 на новую реализацию и выполните предоставленные данные вызова в соответствии с новой логической реализацией. Вызовите функцию validateAccountState, которая должна быть реализована сертифицирующим органом, включенным в подпись. Валидатор — это специфичный для реализации контракт, который содержит логику для оценки того, считает ли он конечное состояние учетной записи безопасным. Например, для CoinbaseSmartWallet CoinbaseSmartWalletValidator проверяет, является ли статус владения учетной записи не пустым и, следовательно, больше не уязвим для произвольной инициализации. Проблема #2: Делегирование общего хранилища в EIP-7702 Самые сложные задачи EIP-7702 могут быть связаны с управлением хранением данных. EOA может в любое время повторно делегировать свою логику другому контракту или полностью удалить делегата. Все делегаты имеют общие адреса EOA на...
Содержание носит исключительно справочный характер и не является предложением или офертой. Консультации по инвестициям, налогообложению или юридическим вопросам не предоставляются. Более подробную информацию о рисках см. в разделе «Дисклеймер».
Обеспечение обновления Ethereum EIP-7702: агентская модель безопасного перехода от EOA к умному кошельку
Мы разработали EIP7702Proxy, облегченный прокси-контракт ERC-1967, предназначенный для использования в качестве базовой логики переадресации делегирования EIP-7702 для EOA... который решает некоторые проблемы, уникальные для делегированных учетных записей EIP-7702. Эта статья взята из статьи, написанной сообществом Boardlink, и составлена, скомпилирована и предоставлена ForesightNews. (Синопсис: Ethereum Pectra обновляет «хакерский флип», Wintermute предупреждает: EIP-7702 автоматизирует развертывание большого количества контрактов) (Справочное дополнение: «Проект безопасности на триллион долларов» от Ethereum Foundation выпускает первый отчет: Сортировка смарт-контрактов, инфраструктуры и облачной безопасности... Six Ecological Challenges EIP-7702 позволяет простым кошелькам Ethereum (EOA) модернизироваться до кошельков смарт-контрактов, обеспечивая большую безопасность, расширенные функции, возможности спонсорства газа и другие преимущества. Исторически сложилось так, что смарт-кошельки приходилось создавать с нуля, но с появлением EIP-7702 традиционные кошельки могут быть модернизированы и хранить все свои активы и ончейн-историю с тем же адресом кошелька. Это все равно, что переключиться со стационарного телефона на смартфон без необходимости получать новый номер. EOA модернизируется путем настройки «обозначения делегирования», т.е. указателя на смарт-контракт делегирования, а затем делегирования логики смарт-контракта для управления EOA. В результате обновленный EOA может иметь функции, устанавливать хранилище, выдавать события и выполнять все другие операции, которые может выполнять смарт-контракт. EOA может изменить или удалить этого делегата в любое время с помощью новой, подписанной авторизации EIP-7702. Несмотря на то, что это открывает множество новых возможностей, эта мощная функция также создает новые проблемы безопасности, которые требуют тщательного рассмотрения и инновационных решений. Чтобы EOA мог выступать в качестве кошелька смарт-контракта, мы разработали EIP7702Proxy, облегченный прокси-контракт ERC-1967, предназначенный для использования в качестве делегата EIP-7702 для EOA. В дополнение к базовой логической переадресации, выполняемой агентом, EIP7702Proxy включает в себя дополнительные функции и варианты проектирования, которые решают некоторые проблемы, уникальные для делегированных учетных записей EIP-7702. Одной из целей разработки EIP7702Proxy является поддержание как можно большей сопоставимости между «стандартным» смарт-кошельком Coinbase и делегированным смарт-кошельком Coinbase EIP-7702, что означает абстрагирование дополнительной сложности, необходимой для механизма EIP-7702, в выделенный прокси-сервер и продолжение полагаться на оригинальную реализацию CoinbaseSmartWallet. Решение этой проблемы может быть эффективно применено к любой логике реализации, а не только к реализации CoinbaseSmartWallet, а также помогает EOA оставаться в безопасности в среде с поддержкой 7702. Ниже мы представляем конкретные задачи и соответствующие проектные решения, которые позволяют нам безопасно адаптировать любую существующую реализацию кошелька смарт-контракта для обновлений EIP-7702. Проблема #1: Обеспечение безопасной инициализации Первое серьезное препятствие на пути реализации EIP-7702 связано с ограничениями инициализации. Традиционные кошельки смарт-контрактов, включая CoinbaseSmartWallet, обычно обрабатывают безопасную инициализацию (установление права собственности на учетную запись) атомарно во время их развертывания, как правило, через отдельный заводской контракт. Эта атомарность означает, что многие такие реализации имеют незащищенные функции инициализатора, которые могут быть вызваны только один раз. Однако конструкция EIP-7702 не позволяет выполнять инициализацию данных вызова во время процесса делегирования кода (эквивалентный этапу «развертывания»), поэтому это не может быть сделано атомарно. Такое разделение шагов создает критическое окно уязвимости. Когда контракт на внедрение «развертывается» в EOA через EIP-7702, нет никакой гарантии, что стандартная транзакция EVM для этого кошелька обновления и инициализации 7702 будет выполнена атомарно. С технической точки зрения, даже если это зафиксировано одновременно, код, устанавливающий авторизацию, может быть независимым от приложения транзакции инициализации, что может позволить злоумышленнику упреждающе выполнить транзакцию инициализации и заявить о праве собственности на смарт-аккаунт. Решение: Подпись EOA требуется для атомарной настройки реализации и инициализации Обратите внимание, что существующий смарт-кошелек Coinbase развертывается после прокси ERC-1967 с реализацией UUPSUpgradeable (фактическая логика CoinbaseSmartWallet). Код в фактическом адресе учетной записи является прокси-сервером, который использует обычное место хранения, определенное в ERC-1967, для хранения указателей на логику его реализации. Наше решение проблемы уязвимости инициализации в контексте 7702 включает в себя признание того, что любая логика реализации становится активной (и, следовательно, опасной) только тогда, когда агент фактически устанавливает соединение с ней. Таким образом, если мы не можем принудительно развернуть и инициализировать атомарность, мы можем принудительно настроить и инициализировать реализацию атомарности. Структура контракта EIP-7702CoinbaseSmartWallet и логический процесс делегирования В контексте EIP-7702 EOA сама является первоначальным органом для внесения любых изменений в свою учетную запись, и подпись должна быть предоставлена для авторизации любого владельца, который инициализирует и создает новую учетную запись Smart. Наш контракт EIP7702Proxy реализует функцию setImplementation, которая атомарно настраивает новые логические реализации и инициализирует учетные записи. Функция setImplementation: проверяет подпись из EOA, которая включает в себя ключевые данные, такие как адрес нового контракта реализации, инициализирующие данные вызова, адрес контракта валидатора, который будет оценивать безопасность конечного состояния учетной записи, и базовую защиту от воспроизведения подписи, такую как одноразовый номер и время истечения срока действия. Установите значение указателя ERC-1967 на новую реализацию и выполните предоставленные данные вызова в соответствии с новой логической реализацией. Вызовите функцию validateAccountState, которая должна быть реализована сертифицирующим органом, включенным в подпись. Валидатор — это специфичный для реализации контракт, который содержит логику для оценки того, считает ли он конечное состояние учетной записи безопасным. Например, для CoinbaseSmartWallet CoinbaseSmartWalletValidator проверяет, является ли статус владения учетной записи не пустым и, следовательно, больше не уязвим для произвольной инициализации. Проблема #2: Делегирование общего хранилища в EIP-7702 Самые сложные задачи EIP-7702 могут быть связаны с управлением хранением данных. EOA может в любое время повторно делегировать свою логику другому контракту или полностью удалить делегата. Все делегаты имеют общие адреса EOA на...