Время Читать: 5 минут
Мир Web3 — это мир протоколов и стандартов. Вы наверняка сталкивались с несколькими стандартами ERC. Одними из самых известных стандартов ERC являются 20 и 721, которые предназначены для токенов и NFT соответственно. Но Web3 этим не ограничивается.
Мы видим регулярные обновления и обновления в Web3. Одним из последних обновлений был ERC 4337, развернутый в основной сети Ethereum в марте 2023 года. Не каждое обновление выполняется сразу; то же самое верно и для ERC 4337. В этом блоге мы узнаем об уязвимостях в разделе стандарта «Операции пользователей» и их влиянии. Во-первых, давайте начнем с краткого введения в стандарт ERC 4337.
Что такое ERC 4337?
В отличие от сети Биткойн, Эфириум поддерживает смарт-контракты в цепочке, что позволяет Ethereum иметь два разных типа учетных записей: одну транзакционную или операционную учетную запись. Кроме того, смарт-контракты имеют собственное пространство, почти как учетная запись. Эти два типа учетных записей в Ethereum имеют свои собственные функции.
Большинство кошельков, работающих с Ethereum, являются EOA, что означает учетные записи пользователей, а не смарт-контракты. У этого типа учетных записей есть свои ограничения. Одно ограничение включает в себя исключительную зависимость пользователя от закрытых ключей для доступа к учетным записям и требование всех подписей для транзакций. Эти ограничения побудили ввести ERC 4337.
ERC 4337 пытается обеспечить абстракцию учетной записи, комбинируя лучшие из двух функций типа учетной записи. Да, учетные записи EOA и смарт-контрактов. Это стало возможным благодаря единому контракту, который может одновременно передавать токены и создавать контракты, а ERC 4337 является стандартом, способствующим этому удивительному новому продвижению.
Уязвимость упаковки UserOperation?
Все в этом стандарте и проекте прекрасно, но что пошло не так? Ну, была проблема с реализацией, которая привела к несогласованным хэшам в зависимости от метода, используемого для подписи. Это приводит к конфликту порядков, особенно к расходящимся хэшам для одних и тех же пользовательских операций и конфликтующим хэшам для разных пользовательских операций.
Затронутые регионы были ограничены двумя уязвимостями: уязвимостью упаковки EntryPoint и уязвимостью упаковки VerifyingPaymaster. Подробнее об этом позже. Давайте сначала иметь общее представление, а потом узнаем о них по отдельности.
Давайте посмотрим на UserOperation.sol: -
Вы видите, что параметр UserOperation, Calldata, передается в качестве аргумента функции pack. Давайте изучим структуру: -
Это поля, которые содержит структура UserOperation. Чтобы скопировать эту большую часть данных вызова в память, сегменты кода используют ассемблер. Некоторые методы контрактов предназначены для захвата всех полей UserOperation, включая поля переменного размера, также называемые динамическими полями в кодировке ABI. Например, динамическое кодирование в этой структуре — «initCode», «callData» и «paymasterAndData».
Некоторые методы не могут включать «paymasterAndData», поскольку это поле еще не определено или не объявлено. Методы используют для этого удобное поле '.offset', предоставляемое динамическим типам данных. Но контракты, использующие аргументы в кодировке ABI, не проверяют порядок, в котором определены поля, и действительность смещений. Можно построить допустимое представление пользовательских операций в Calldata с необычными свойствами хеш-функции.
Уязвимость упаковки EntryPoint
Проблема с UserOperation затрагивает и некоторые другие части стандарта, уязвимость EntryPoint Packing — одна из них. Когда между EntryPoint и контрактом кошелька используется другая схема хеширования или используется нестандартная кодировка операций пользователя, мы видим расхождение хэшей.
Риск проявляется как EntryPoint. Теперь одна пользовательская операция может быть представлена несколькими «хэшами операций пользователя», а один и тот же «хеш операций пользователя» может представлять несколько пользовательских операций. Теперь это может создать некоторые нежелательные эффекты. Давайте обсудим, какое влияние это может иметь.
Erc 4337 все еще находится на очень ранней стадии, так как он был выпущен только в марте, поэтому влияние этих уязвимостей полностью не известно. Трудно описать потенциальное воздействие с высоты птичьего полета. Более того, влияние зависит от внедрения упаковщиков, индексаторов, обозревателей пользовательских операций и других сервисов вне сети. Давайте рассмотрим несколько проблем, которые вызывает эта уязвимость.
- Это может сбить пользователя с толку, поскольку хэш пользовательской операции может измениться между временем отправки и включением. Это явление неизвестно большинству кошельков, поэтому они могут не учитывать эту разницу.
- Кошельки могут быть изменены и спроектированы так, чтобы преднамеренно избежать индексации, установив одинаковые хэши операций пользователя.
- Мы можем увидеть неправильное обращение с данными и ключами, если автономная служба, отслеживающая включение пользовательской операции, пропускает включение данной пользовательской операции.
Проверка уязвимости Paymaster Packing
Никто не любит заказывать что-то в интернет-магазинах и получать совершенно другой продукт. То же самое и в Web3, но эта уязвимость ухудшает работу пользователя. Пользователь мог изменить или изменить содержимое между моментом подписания и включением в цепочку. Причина, по которой это происходит, заключается в том, что две разные пользовательские операции возвращают один и тот же хеш из функции VerifyingPaymaster.getHash().
Функция VerifyingPaymaster.getHash() принимает несколько аргументов, таких как «UserOperation», которая является структурой, «validUnitl», значение uint48 и значение validAfter другого значения uint48. Проблема различного содержимого между временем подписания и временем включения влияет на взаимодействие с пользователем и общую безопасность. Давайте обсудим некоторые проблемы, которые он вызывает.
- Подписанты вне сети, которые подписываются в формате с кодировкой ABI после получения пользовательских операций, или подписывающие стороны с интеграцией контрактов для подготовки данных для подписи становятся уязвимыми.
- Хэш можно изменить, чтобы охватить меньше элементов, чем ожидалось, что может привести к тому, что некоторые статические поля, такие как initCode и т. д., будут исключены из хеша. Это может привести к другому использованию, чем предполагалось для спонсорских подписей казначея.
- Мы можем увидеть нарушение и обход правил, изменив userOp.initCode и userOp.callData после получения подписи. Это позволит использовать нативный токен казначея для целей, отличных от чеканки безгазового NFT.
Заключение
Благодаря постоянному совершенствованию и развитию мы станем свидетелями многих замечательных вещей, и ERC 4337 — одна из них. В то время как разработка и продвижение безопасности — это то, что мы никогда не можем поставить под угрозу. Приятно отметить, как быстро были обнаружены уязвимости в стандарте, и проводятся непрерывные исследования и разработки, чтобы сделать его безопасным.
Важно отметить, что даже некоторые из самых крупных и известных организаций, использующих Web3, могут совершать ошибки, связанные с безопасностью, и, конечно же, другие протоколы тоже их допускают. Непрерывный рост Инциденты Web3 в последние годы очевидна.
Универсальное решение для защиты вас, ваших пользователей и вашего протокола от таких угроз безопасности проходит аудит. Мы, QuillAudits, являемся одним из ведущих поставщиков услуг в области аудита смарт-контрактов и безопасности блокчейна. Посетите наш веб-сайт, чтобы узнать больше и защитить свой проект. И следите за обновлениями, чтобы получать больше таких информативных блогов
34 Просмотры
- SEO-контент и PR-распределение. Получите усиление сегодня.
- Платоблокчейн. Интеллект метавселенной Web3. Расширение знаний. Доступ здесь.
- Чеканка будущего с Эдриенн Эшли. Доступ здесь.
- Источник: https://blog.quillhash.com/2023/04/24/understanding-erc-4337-user-operation-packing-vulnerability/
- :является
- :нет
- 20
- 2023
- a
- О нас
- доступ
- Учетная запись
- абстракция аккаунта
- Учетные записи
- через
- дополнение
- продвижение
- После
- Все
- причислены
- изменен
- an
- и
- Другой
- МЫ
- аргумент
- Аргументы
- AS
- сборка
- At
- попытки
- аудит
- аудит
- основанный
- BE
- , так как:
- становиться
- не являетесь
- ЛУЧШЕЕ
- между
- Крупнейшая
- блокчейн
- Безопасность блочной цепи
- Блог
- нарушение
- Строительство
- но
- by
- под названием
- CAN
- не могу
- захватить
- Вызывать
- Причины
- цепь
- изменение
- изменения
- код
- комбинируя
- как
- скомпрометированы
- Обеспокоенность
- заблуждение
- строить
- содержание
- (CIJ)
- контракт
- контрактов
- удобство
- может
- чехол для варгана
- Создайте
- данным
- определенный
- зависит
- развернуть
- описывать
- предназначенный
- развивающийся
- Развитие
- разница
- различный
- обсуждать
- Дивергенция
- do
- динамический
- Рано
- ранняя стадия
- эффекты
- элементы
- пользоваться
- полностью
- ERC-4337
- и т.д
- Эфириума
- ОСНОВНАЯ СЕТЬ Эфириума
- Даже
- Каждая
- пример
- исключенный
- ожидаемый
- опыт
- Больше
- Исследователи
- Глаза
- облегчающий
- знаменитый
- Особенности
- несколько
- поле
- Поля
- Найдите
- Во-первых,
- Что касается
- формат
- найденный
- от
- полностью
- функция
- функциональные возможности
- функционирование
- Общие
- получить
- получающий
- данный
- Go
- будет
- происходит
- Жесткий
- хэш
- Хеширования
- Есть
- Как
- HTTPS
- Влияние
- Воздействие
- реализация
- Осуществляющий
- важную
- in
- включают
- включает в себя
- В том числе
- включение
- в отдельности
- информативный
- интеграций
- намереваться
- намеренно
- в
- Введение
- вопрос
- вопросы
- IT
- всего
- ключи
- известный
- большой
- Фамилия
- последний
- вести
- УЧИТЬСЯ
- такое как
- ограничение
- недостатки
- Ограниченный
- посмотреть
- сделанный
- mainnet
- сделать
- ДЕЛАЕТ
- многих
- Март
- макс-ширина
- Май..
- означает
- Память
- метод
- методы
- может быть
- чеканка
- плохое обращение
- промахов
- ошибки
- модифицировало
- Мониторинг
- БОЛЕЕ
- самых
- с разными
- родной
- Родной токен
- сеть
- Новые
- NFT
- сейчас
- of
- on
- ONE
- онлайн
- интернет-магазины
- OP
- операция
- оперативный
- Операционный отдел
- or
- заказ
- Организации
- Другое
- Другие протоколы
- наши
- за
- общий
- собственный
- Упаковывать
- параметр
- особенно
- части
- Прошло
- явление
- Платон
- Платон Интеллектуальные данные
- ПлатонДанные
- возможное
- потенциал
- Подготовить
- частная
- Частные ключи
- Продукт
- Проект
- свойства
- для защиты
- протокол
- протоколы
- обеспечивать
- при условии
- поставщики
- целей
- быстро
- Квиллхэш
- повышения
- причина
- получение
- по
- районы
- регулярный
- выпустил
- опора
- представлять
- представление
- представленный
- исследованиям
- исследование и разработка
- результат
- возвращают
- Рост
- Снижение
- условиями,
- то же
- схема
- Раздел
- безопасный
- обеспеченный
- безопасность
- Угрозы безопасности
- посмотреть
- сегментами
- обслуживание
- поставщики услуг
- Услуги
- установка
- несколько
- Шоппинг
- подпись
- Подписи
- подписание
- одновременно
- одинарной
- умный
- умный контракт
- Смарт-контракты
- So
- SOL
- Решение
- некоторые
- удалось
- Space
- спонсорство
- Этап
- стандарт
- стандартов
- Начало
- оставаться
- По-прежнему
- представление
- успешный
- такие
- Поддержка
- безусловно,
- принимает
- чем
- который
- Ассоциация
- их
- Их
- Там.
- Эти
- они
- вещи
- этой
- те
- угрозы
- время
- в
- знак
- Лексемы
- слишком
- топ
- совершать сделки
- транзакционный
- Сделки
- правда
- Типы
- понимание
- нежелательный
- Обновление ПО
- Updates
- обновления
- использование
- используемый
- Информация о пользователе
- Пользовательский опыт
- пользователей
- VALIDATE
- ценностное
- очень
- Вид
- Войти
- Уязвимости
- уязвимость
- Уязвимый
- Кошелек
- Кошельки
- законопроект
- we
- Web3
- Вебсайт
- ЧТО Ж
- известный
- были
- Что
- когда
- который
- в то время как
- зачем
- будете
- Свидетель
- Мир
- Неправильно
- лет
- Ты
- ВАШЕ
- зефирнет