EIP-7702 предоставляет адресам возможности и гибкость, подобные смарт-контрактам, и все больше приложений на основе 7702 продолжают создаваться, что имеет решающее значение для привлечения большего числа людей в Web3 и улучшения пользовательского опыта.

Тем не менее, гибкость 7702 и незнание большинства пользователей о 7702 используются мошенническими группами, и недавно мы наблюдали, что некоторые пользователи, благодаря способности MetaMask 7702 выполнять массовые операции, вместо того чтобы авторизовать множество взаимодействий, стали жертвами фишинговой группы #InfernoDrainer, которая объединила их в одну транзакцию, что привело к краже активов.

Примечание: у MetaMask нет проблем с безопасностью, MetaMask ставит безопасность пользователей на первое место, предоставляя пользователям возможности, связанные с 7702, и реализует множество мер безопасности. Пользователи должны больше узнать о возможностях и связанных рисках 7702, чтобы предотвратить повторение таких инцидентов с безопасностью.

Один, принципы подписи авторизации Metamask 7702 Delagator и безопасный дизайн

1. Технический анализ

  • Пользователь авторизует уже развернутый контракт Делегатора, указывая поле code своего аккаунта на этот контракт. Текущий адрес официального контракта Делегатора MetaMask: 0x63c0c19a282a1B52b07dD5a65b58948A07DAE32B

  • Структура авторизации:(chainId, delegatorAddress, nonce, signature) записывается в authorization_list

  • Метод подписи: на нижнем уровне Metamask использует единую логику подписи для авторизаций, связанных с EIP-7702, то есть метод signEIP7702Authorization, для подписи данных авторизации digest7702 = keccak256(0x05 ‖ RLP(chainId, delegator, nonce)) с использованием ECDSA, создавая структуру подписи (v, r, s) и добавляя ее к последующей транзакции Type-4, чтобы реализовать авторизацию и обновление учетной записи, подробная реализация доступна по адресу: https://github.com/MetaMask/eth-sig-util/blob/main/src/sign-eip7702-authorization.ts

  • Метод проверки: уровень консенсуса завершает проверку через ecrecover(digest7702, sig) == tx.from.

  • Безопасный дизайн: веб-страница не может побудить пользователя авторизовать любой Делегатор, поскольку метод signEIP7702Authorization реализован только во внутреннем кошельке MetaMask, и не открывает вызов через window.ethereum на веб-странице. Методы подписи, доступные для веб-страниц, такие как eth_signTypedData_v4, не применимы для подписи авторизации EIP-7702, формат их подписи следующий:

А требуемый стандарт подписи для EIP-7702:

Поскольку eth_signTypedData_v4 всегда включает префикс 0x1901, а процесс вычисления хеш-значения полностью отличается от 7702, даже если создать хитроумный domainSeparator, primaryType и message, практически невозможно сделать так, чтобы digest712 == digest7702.

Таким образом, веб-версия не может подделать законную подпись авторизации 7702 с помощью этого метода. Кроме того, MetaMask также внедрил механизм белого списка для адресов Делегаторов, по умолчанию разрешая авторизацию только официальному Делегатору (0x63c0...32B) и запрещая DApp самостоятельно вводить адреса, что дополнительно предотвращает подделку пользователями данных о подписи злонамеренных авторизаций Делегаторов. EIP-7702 предоставляет адресам возможности и гибкость, подобные смарт-контрактам, и все больше приложений на основе 7702 продолжают создаваться, что имеет решающее значение для привлечения большего числа людей в Web3 и улучшения пользовательского опыта.

Тем не менее, гибкость 7702 и незнание большинства пользователей о 7702 используются мошенническими группами, и недавно мы наблюдали, что некоторые пользователи, благодаря способности MetaMask 7702 выполнять массовые операции, вместо того чтобы авторизовать множество взаимодействий, стали жертвами фишинговой группы #InfernoDrainer, которая объединила их в одну транзакцию, что привело к краже активов.

Примечание: у MetaMask нет проблем с безопасностью, MetaMask ставит безопасность пользователей на первое место, предоставляя пользователям возможности, связанные с 7702, и реализует множество мер безопасности. Пользователи должны больше узнать о возможностях и связанных рисках 7702, чтобы предотвратить повторение таких инцидентов с безопасностью.

Один, принципы подписи авторизации Metamask 7702 Delagator и безопасный дизайн

1. Технический анализ

  • Пользователь авторизует уже развернутый контракт Делегатора, указывая поле code своего аккаунта на этот контракт. Текущий адрес официального контракта Делегатора MetaMask: 0x63c0c19a282a1B52b07dD5a65b58948A07DAE32B

  • Структура авторизации:(chainId, delegatorAddress, nonce, signature) записывается в authorization_list

  • Метод подписи: на нижнем уровне Metamask использует единую логику подписи для авторизаций, связанных с EIP-7702, то есть метод signEIP7702Authorization, для подписи данных авторизации digest7702 = keccak256(0x05 ‖ RLP(chainId, delegator, nonce)) с использованием ECDSA, создавая структуру подписи (v, r, s) и добавляя ее к последующей транзакции Type-4, чтобы реализовать авторизацию и обновление учетной записи, подробная реализация доступна по адресу: https://github.com/MetaMask/eth-sig-util/blob/main/src/sign-eip7702-authorization.ts

  • Метод проверки: уровень консенсуса завершает проверку через ecrecover(digest7702, sig) == tx.from.

  • Безопасный дизайн: веб-страница не может побудить пользователя авторизовать любой Делегатор, поскольку метод signEIP7702Authorization реализован только во внутреннем кошельке MetaMask, и не открывает вызов через window.ethereum на веб-странице. Методы подписи, доступные для веб-страниц, такие как eth_signTypedData_v4, не применимы для подписи авторизации EIP-7702, формат их подписи следующий:

А требуемый стандарт подписи для EIP-7702:

Поскольку eth_signTypedData_v4 всегда включает префикс 0x1901, а процесс вычисления хеш-значения полностью отличается от 7702, даже если создать хитроумный domainSeparator, primaryType и message, практически невозможно сделать так, чтобы digest712 == digest7702.

Таким образом, веб-версия не может подделать законную подпись авторизации 7702 с помощью этого метода. Кроме того, MetaMask также внедрил механизм белого списка для адресов Делегаторов, по умолчанию разрешая авторизацию только официальному Делегатору (0x63c0...32B) и запрещая DApp самостоятельно вводить адреса, что дополнительно предотвращает подделку пользователями данных о подписи злонамеренных авторизаций Делегаторов.

2. Способ использования

В настоящее время в Metamask способы обновления существующего EOA до смарт-учетной записи 7702 (Smart Account) делятся на два типа: активное обновление и пассивное обновление.

Активное обновление означает, что пользователь нажимает кнопку «Переключить» на интерфейсе кошелька, чтобы авторизовать определенный контракт Делегатора.

Пассивное обновление происходит, когда пользователь взаимодействует с некоторыми DApp, поддерживающими 7702, Metamask автоматически выдает предупреждение после обнаружения соответствующих действий и предлагает пользователю завершить обновление.

2.1 Активное обновление:

  • Содержимое транзакции: включает только действие обновления учетной записи, то есть авторизацию определенного контракта Делегатора.

  • Процесс обновления: зайдите в интерфейс деталей учетной записи в кошельке, нажмите кнопку переключения на изображении ниже, чтобы обновить учетную запись пользователя на Ethereum Mainnet до смарт-учетной записи. После нажатия на переключение появится окно для подписи пользователем текущей транзакции обновления:

  • Запись авторизации: после подтверждения подождите, пока транзакция будет записана в блокчейн, успешная запись в блокчейн означает, что пользователь успешно обновлен до смарт-учетной записи, конкретную информацию о транзакции авторизации можно просмотреть на странице текущего адреса кошелька на etherscan в разделе **Authorizations (EIP-7702)**.


2. Способ использования

В настоящее время в Metamask способы обновления существующего EOA до смарт-учетной записи 7702 (Smart Account) делятся на два типа: активное обновление и пассивное обновление.

Активное обновление означает, что пользователь нажимает кнопку «Переключить» на интерфейсе кошелька, чтобы авторизовать определенный контракт Делегатора.

Пассивное обновление происходит, когда пользователь взаимодействует с некоторыми DApp, поддерживающими 7702, Metamask автоматически выдает предупреждение после обнаружения соответствующих действий и предлагает пользователю завершить обновление.

2.1 Активное обновление:

  • Содержимое транзакции: включает только действие обновления учетной записи, то есть авторизацию определенного контракта Делегатора.

  • Процесс обновления: зайдите в интерфейс деталей учетной записи в кошельке, нажмите кнопку переключения на изображении ниже, чтобы обновить учетную запись пользователя на Ethereum Mainnet до смарт-учетной записи. После нажатия на переключение появится окно для подписи пользователем текущей транзакции обновления:

  • Запись авторизации: после подтверждения подождите, пока транзакция будет записана в блокчейн, успешная запись в блокчейн означает, что пользователь успешно обновлен до смарт-учетной записи, конкретную информацию о транзакции авторизации можно просмотреть на странице текущего адреса кошелька на etherscan в разделе **Authorizations (EIP-7702)**.

2.2 Пассивное обновление

  • Содержимое транзакции: включает действие обновления учетной записи и массовые действия по взаимодействию с контрактами на цепи.

  • Процесс обновления: во время взаимодействия пользователя с некоторыми DApp на цепи, Metamask будет активно предлагать пользователю текущую транзакцию, которую можно завершить с помощью массовой отправки, обновив на смарт-учетную запись. Например, при обмене некоторыми токенами на Uniswap нажмите кнопку Использовать смарт-учетную запись, обновите до смарт-учетной записи, затем авторизация токенов и обмен будут выполнены в одной транзакции.

2.3 Вернуться к обычному EOA

Независимо от того, использует ли пользователь активное обновление или пассивное обновление для преобразования текущей учетной записи в смарт-учетную запись, связанный адрес контракта Делегатора будет постоянно храниться в цепи как текущая логика выполнения учетной записи.

Если пользователь хочет восстановить учетную запись как обычный EOA, ему нужно вручную инициировать операцию «Вернуться к EOA». Суть этой операции заключается в том, что через авторизацию EIP-7702 адрес (0) подается как новый адрес контракта Делегатора. Когда транзакция успешно записана в блокчейн, поле code учетной записи будет очищено, логика выполнения восстановится до стандартного пустого кода, а учетная запись вернется в состояние обычного EOA.

Зайдите в интерфейс деталей учетной записи в кошельке и нажмите кнопку переключения, чтобы переключить пользователя с Ethereum Mainnet обратно на обычный EOA.

После подтверждения подождите, пока транзакция будет записана в блокчейн, успешная запись в блокчейн означает, что пользователь переключился с смарт-учетной записи обратно на обычный EOA, конкретную информацию о транзакции также можно найти на странице текущего адреса кошелька на etherscan.

Два, примеры фишинговых атак 7702

24 мая #InfernoDrainer фишинговая группа использовала функцию массового выполнения контракта Metamask 7702-Delagator для массового получения авторизаций токенов пользователей (0xc6D2…06DC) и осуществила фишинговую атаку, потеряв более 146000 долларов в $HashAI $HUMANS $ParallelAI $NeuralAI $DSync $Zero1 $NodeAI $Sensay $Virtual.

  • Мошеннический адрес

0x0000db5c8B030ae20308ac975898E09741e70000 0x00008C22F9F6f3101533f520e229BbB54Be90000 0xa85d90B8Febc092E11E75Bf8F93a7090E2ed04DE 0xC83De81A2aa92640D8d68ddf3Fc6b4B853D77359 0x33dAD2bbb03Dca73a3d92FC2413A1F8D09c34181

  • Пример фишинговой транзакции

https://etherscan.io/tx/0x09c264618e93983510aaeb7aa2c91c8254a8b2ec66167438f3f6c28b866b6eba

  • Причина фишинга

Пользователь (0xc6D2…06DC) выполнил злонамеренную массовую авторизацию транзакций:

Хэш транзакции Ethereum: 0x1ddc8cecbc... | Etherscan

Вызов метода 0xe9ae5c53 от 0xc6D289d5...0d2E606DC на 0xc6D289d5...0d2E606DC | Успех | 23 мая 2025 14:31:35 (UTC)

etherscan.io

  • #InfernoDrainer и #PinkDrainer экспериментируют с более скрытными и более влиятельными схемами рыболовства с использованием 7702.

Согласно нашим исследованиям, в настоящее время фишинговые группировки #InfernoDrainer и #PinkDrainer исследуют и тестируют более скрытные и более влиятельные схемы рыболовства с использованием 7702, соответствующие адреса следующие, мы также опубликуем более подробный отчет позже:

Инферно Дрейнер:

0x0000db5c8B030ae20308ac975898E09741e70000

Розовый Дрейнер:

0xe49e04F40C272F405eCB9a668a73EEAD4b3B5624

Три, безопасные рекомендации

Поставщик кошелька:

  • Ссылка на реализацию и управление безопасностью 7702 Делегатора в MetaMask, запрещающая пользователям авторизовать любой Делегатор и разрешающая только операции в приложении. Напоминаем пользователям, что любые действия по авторизации подписи через вебсайт являются фишинговыми атаками.

  • Проверьте, соответствует ли цепь текущей сети, и предупредите пользователя о риске повторной атаки при использовании chainID 0 для подписи.

  • При подписании авторизации пользователем отображайте целевой контракт, при массовом выполнении через Делегатора показывайте конкретное содержимое вызова функции, чтобы снизить риск атак фишинга в интернете.

Пользователь:

  • Защита приватного ключа всегда является самой важной. Не ваши ключи, не ваши монеты.

  • Не авторизуйте Делегатора на основании каких-либо независимых веб-страниц, безопасная авторизация обычно происходит только в приложении, как в MetaMask.

  • При использовании любого кошелька для подписи внимательно ознакомьтесь с содержимым подписи, чтобы избежать слепой подписи или ошибочной подписи. После подтверждения подождите, пока транзакция будет записана в блокчейн, успешная запись в блокчейн означает, что пользователь переключился с смарт-учетной записи обратно на обычный EOA, конкретную информацию о транзакции также можно найти на странице текущего адреса кошелька на etherscan.

    Два, примеры фишинговых атак 7702

    24 мая #InfernoDrainer фишинговая группа использовала функцию массового выполнения контракта Metamask 7702-Delagator для массового получения авторизаций токенов пользователей (0xc6D2…06DC) и осуществила фишинговую атаку, потеряв более 146000 долларов в $HashAI $HUMANS $ParallelAI $NeuralAI $DSync $Zero1 $NodeAI $Sensay $Virtual.

    • Мошеннический адрес

    0x0000db5c8B030ae20308ac975898E09741e70000 0x00008C22F9F6f3101533f520e229BbB54Be90000 0xa85d90B8Febc092E11E75Bf8F93a7090E2ed04DE 0xC83De81A2aa92640D8d68ddf3Fc6b4B853D77359 0x33dAD2bbb03Dca73a3d92FC2413A1F8D09c34181

    • Пример фишинговой транзакции

    • Причина фишинга

    Пользователь (0xc6D2…06DC) выполнил злонамеренную массовую авторизацию транзакций:

    • #InfernoDrainer и #PinkDrainer экспериментируют с более скрытными и более влиятельными схемами рыболовства с использованием 7702.

    Согласно нашим исследованиям, в настоящее время фишинговые группировки #InfernoDrainer и #PinkDrainer исследуют и тестируют более скрытные и более влиятельные схемы рыболовства с использованием 7702, соответствующие адреса следующие, мы также опубликуем более подробный отчет позже:

    Инферно Дрейнер:

    0x0000db5c8B030ae20308ac975898E09741e70000

    Розовый Дрейнер:

    0xe49e04F40C272F405eCB9a668a73EEAD4b3B5624

    Три, безопасные рекомендации

    Поставщик кошелька:

    • Ссылка на реализацию и управление безопасностью 7702 Делегатора в MetaMask, запрещающая пользователям авторизовать любой Делегатор и разрешающая только операции в приложении. Напоминаем пользователям, что любые действия по авторизации подписи через вебсайт являются фишинговыми атаками.

    • Проверьте, соответствует ли цепь текущей сети, и предупредите пользователя о риске повторной атаки при использовании chainID 0 для подписи.

    • При подписании авторизации пользователем отображайте целевой контракт, при массовом выполнении через Делегатора показывайте конкретное содержимое вызова функции, чтобы снизить риск атак фишинга в интернете.

    Пользователь:

    • Защита приватного ключа всегда является самой важной. Не ваши ключи, не ваши монеты.

    • Не авторизуйте Делегатора на основании каких-либо независимых веб-страниц, безопасная авторизация обычно происходит только в приложении, как в MetaMask.

    • При использовании любого кошелька для подписи внимательно ознакомьтесь с содержимым подписи, чтобы избежать слепой подписи или ошибочной подписи.