Час читання: 5 протокол
Світ Web3 – це світ протоколів і стандартів. Ви напевно стикалися з кількома стандартами ERC. Одними з найвідоміших стандартів ERC є 20 і 721, які стосуються токенів і NFT відповідно. Але Web3 не обмежується цим.
Ми бачимо регулярні оновлення та оновлення Web3. Одним із останніх оновлень став ERC 4337, розгорнутий у мережі Ethereum Mainnet у березні 2023 року. Не кожне оновлення є успішним за один раз; те ж саме стосується ERC 4337. У цьому блозі ми дізнаємося про вразливості, що стосуються розділу «Користувальницькі операції» стандарту, та їхній вплив. Спочатку давайте почнемо з короткого вступу до стандарту ERC 4337.
Що таке ERC 4337?
На відміну від мережі Bitcoin, Ethereum підтримує розумні контракти в ланцюжку, завдяки чому Ethereum має два різних типи облікових записів: транзакційний або операційний. Крім того, розумні контракти мають власний простір, майже як обліковий запис. Ці два типи облікових записів в Ethereum мають власні функції.
Більшість гаманців, що працюють з Ethereum, є обліковими записами EOA, що означає облікові записи користувачів, а не облікові записи смарт-контрактів. Облікові записи такого типу мають свої обмеження. Одне з обмежень полягає в тому, що користувач покладається виключно на особисті ключі для доступу до облікових записів і вимагає всіх підписів для транзакцій. Ці обмеження спонукали до впровадження ERC 4337.
ERC 4337 намагається забезпечити абстракцію облікового запису, поєднуючи найкращі з двох функцій типу облікового запису. Так, облікові записи EOA та смарт-контрактів. Це стало можливим завдяки єдиному контракту, який може здійснювати транзакції токенів і створювати контракти одночасно, а ERC 4337 є стандартом, який полегшує цей приголомшливий новий прогрес.
Уразливість упаковки UserOperation?
Усе в цьому стандарті та проекті чудове, але що пішло не так? Що ж, виникла проблема реалізації, яка призвела до непослідовних хешів на основі методу, використаного для підпису. Це призводить до зіткнень порядків, зокрема розбіжних хешів для одних і тих самих UserOperations і збігаючих хешів для різних UserOperations.
Уражені регіони були обмежені двома вразливими місцями: EntryPoint Packing Vulnerability та VerifyingPaymaster Packing Vulnerability. Про це пізніше. Давайте спочатку матимемо загальне розуміння, а потім дізнаємося про них окремо.
Давайте подивимося на UserOperation.sol:-
Ви бачите, що параметр UserOperation, Calldata, передається як аргумент функції pack. Давайте дослідимо структуру: -
Це поля, які містить структура UserOperation. Щоб скопіювати цю велику частину Calldata в пам’ять, сегменти коду використовують збірку. Деякі методи контрактів мають намір охопити всі поля UserOperation, включаючи поля змінного розміру, які також називаються динамічними полями в кодуванні ABI. Наприклад, динамічне кодування в цій структурі — «initCode», «callData» і «paymasterAndData».
Деякі методи не можуть включати 'paymasterAndData', оскільки це поле ще не визначено або оголошено. Для цього в методах використовується зручне поле «.offset», надане для динамічних типів даних. Але контракти, які використовують ABI-кодовані аргументи, не перевіряють порядок визначення полів і дійсність зсувів. Можна побудувати дійсне представлення операцій користувача в Calldata з незвичними властивостями хешу.
Уразливість упаковки EntryPoint
Проблема з UserOperation також впливає на деякі інші частини стандарту, уразливість EntryPoint Packing є однією з них. Коли між EntryPoint і контрактом гаманця використовується інша схема хешування або використовується нестандартне кодування операцій користувача, ми бачимо розбіжність хешів.
Ризик виявляється як EntryPoint. Тепер одна операція користувача може бути представлена декількома «хешами операцій користувача», а той самий «хеш операцій користувача» може представляти кілька операцій користувача. Тепер це може створити деякі небажані ефекти. Давайте обговоримо, який вплив це може мати.
Erc 4337 все ще знаходиться на дуже ранній стадії, оскільки він був випущений у березні, тому вплив цих уразливостей не повністю відомий. Важко описати потенційний вплив з висоти пташиного польоту. Більше того, вплив залежить від впровадження групувальників, індексаторів, дослідників операцій користувачів та інших служб поза мережею. Давайте розглянемо кілька проблем, які викликає ця вразливість.
- Це може призвести до збентеження користувача, оскільки хеш операції користувача може змінюватися між часом подання та часом включення. Це явище невідоме більшості гаманців, тому вони можуть не пояснити цю різницю.
- Гаманці можна змінити та спроектувати так, щоб навмисно уникнути індексації, встановивши однакові хеші операцій користувача.
- Ми можемо спостерігати неправильну обробку даних і ключів, якщо стороння служба, яка відстежує включення операцій користувача, пропускає включення певної операції користувача.
Уразливість VerifyingPaymaster Packing
Ніхто не любить замовляти щось в інтернет-магазинах і отримувати зовсім інший продукт. Те ж саме в Web3, але ця вразливість погіршує взаємодію з користувачем. Користувач міг змінити або змінити вміст між часом підписання та включенням у ланцюг. Причина, чому це відбувається, полягає в тому, що дві різні операції користувача повертають однаковий хеш із функції VerifyingPaymaster.getHash().
Функція VerifyingPaymaster.getHash() приймає кілька аргументів, наприклад 'UserOperation', який є структурою, 'validUnitl', значення uint48 і validAfter інше значення uint48. Проблема різного вмісту між часом підписання та часом включення впливає на роботу користувача та загальну безпеку. Давайте обговоримо кілька проблем, які це викликає.
- Підписувачі поза мережею, які підписують у форматі, закодованому ABI, після отримання операцій користувача, або підписувачі з інтеграцією контрактів для підготовки даних для підпису стають уразливими.
- Хеш можна змінити, щоб охопити менше елементів, ніж очікувалося, що може призвести до того, що деякі статичні поля, наприклад initCode тощо, будуть виключені з хешу. Це може призвести до іншого використання спонсорських підписів платника.
- Ми можемо побачити порушення та обхід правил, змінивши userOp.initCode та userOp.callData після отримання підпису. Це дозволить використовувати нативний токен платіжника для інших цілей, окрім карбування безгазових NFT.
Висновок
З постійним прогресом і розвитком ми станемо свідками багатьох чудових речей, і ERC 4337 є однією з них. Хоча розробка та вдосконалення безпеки — це те, що ми ніколи не можемо йти на компроміс. Приголомшливо відзначити, як швидко вразливості були знайдені в стандарті, і ведуться постійні дослідження та розробки, щоб зробити його безпечним.
Важливо зазначити, що навіть деякі з найбільших і найвідоміших організацій, які будують Web3, можуть допускати помилки, пов’язані з безпекою, і, безперечно, інші протоколи також допускають їх. Безперервне підвищення в Інциденти Web3 за останні кілька років очевидна.
Універсальне рішення для захисту вас, ваших користувачів і вашого протоколу від таких загроз безпеці йде на перевірку. Ми, QuillAudits, є одним із найкращих постачальників послуг з аудиту смарт-контрактів і безпеки блокчейну. Відвідайте наш веб-сайт, щоб дізнатися більше та захистити свій проект. Залишайтеся з нами, щоб насолоджуватися такими інформативними блогами
34 думки
- Розповсюдження контенту та PR на основі SEO. Отримайте посилення сьогодні.
- Платоблокчейн. Web3 Metaverse Intelligence. Розширені знання. Доступ тут.
- Карбування майбутнього з Адріенн Ешлі. Доступ тут.
- джерело: https://blog.quillhash.com/2023/04/24/understanding-erc-4337-user-operation-packing-vulnerability/
- :є
- : ні
- 20
- 2023
- a
- МЕНЮ
- доступ
- рахунки
- абстракція рахунку
- Рахунки
- через
- доповнення
- просування
- після
- ВСІ
- Також
- змінений
- an
- та
- Інший
- ЕСТЬ
- аргумент
- аргументація
- AS
- збірка
- At
- Спроби
- аудит
- аудит
- заснований
- BE
- оскільки
- ставати
- буття
- КРАЩЕ
- між
- найбільший
- blockchain
- Захист блокчейну
- Блог
- порушення
- Створюємо
- але
- by
- званий
- CAN
- не може
- захоплення
- Викликати
- Причини
- ланцюг
- зміна
- заміна
- код
- об'єднання
- Приходити
- компроміс
- Турбота
- заплутаний
- будувати
- зміст
- безперервний
- контракт
- контрактів
- зручність
- може
- обкладинка
- створювати
- дані
- певний
- залежить
- розгорнути
- описувати
- призначений
- розвивається
- розробка
- різниця
- різний
- обговорювати
- Дивергенція
- do
- динамічний
- Рано
- початкова стадія
- ефекти
- елементи
- користуватися
- повністю
- ERC-4337
- і т.д.
- Ефіріума
- ГОЛОВНА МЕРЕЖЕ ETHEREUM
- Навіть
- Кожен
- приклад
- виключений
- очікуваний
- досвід
- дослідити
- Дослідників
- очей
- сприяння
- знаменитий
- риси
- кілька
- поле
- Поля
- знайти
- Перший
- для
- формат
- знайдений
- від
- повністю
- функція
- функціональні можливості
- функціонування
- Загальне
- отримати
- отримання
- даний
- Go
- буде
- відбувається
- Жорсткий
- мішанина
- хешування
- Мати
- Як
- HTTPS
- Impact
- Вплив
- реалізація
- реалізації
- важливо
- in
- включати
- includes
- У тому числі
- включення
- Індивідуально
- інформативний
- інтеграцій
- мати намір
- навмисно
- в
- Вступ
- питання
- питання
- IT
- просто
- ключі
- відомий
- великий
- останній
- останній
- вести
- УЧИТЬСЯ
- як
- обмеження
- недоліки
- обмеженою
- подивитися
- made
- основна мережа
- зробити
- РОБОТИ
- багато
- березня
- макс-ширина
- Може..
- засоби
- пам'ять
- метод
- методика
- може бути
- карбування
- неправильне поводження
- промахів
- помилки
- модифікований
- моніторинг
- більше
- найбільш
- множинний
- рідний
- Рідний жетон
- мережу
- Нові
- НФТ
- зараз
- of
- on
- ONE
- онлайн
- інтернет-магазини
- OP
- операція
- оперативний
- операції
- or
- порядок
- організації
- Інше
- Інші протоколи
- наші
- над
- загальний
- власний
- Pack
- параметр
- особливо
- частини
- Пройшов
- явище
- plato
- Інформація про дані Платона
- PlatoData
- це можливо
- потенціал
- Готувати
- приватний
- Приватні ключі
- Product
- проект
- властивості
- захист
- протокол
- протоколи
- забезпечувати
- за умови
- провайдери
- цілей
- швидко
- Квілхаш
- піднімається
- причина
- отримання
- про
- райони
- регулярний
- випущений
- опора
- представляти
- подання
- представлений
- дослідження
- дослідження і розробка
- результат
- повертати
- Зростання
- Risk
- Правила
- то ж
- схема
- розділ
- безпечний
- Забезпечений
- безпеку
- Загрози безпеці
- побачити
- сегменти
- обслуговування
- постачальники послуг
- Послуги
- установка
- кілька
- покупка
- підпис
- Signatures
- підписання
- одночасно
- один
- розумний
- розумний контракт
- Спритні контракти
- So
- SOL
- рішення
- деякі
- що в сім'ї щось
- Простір
- спонсорство
- Стажування
- standard
- стандартів
- старт
- залишатися
- Як і раніше
- уявлення
- успішний
- такі
- Опори
- напевно
- приймає
- ніж
- Що
- Команда
- їх
- Їх
- Там.
- Ці
- вони
- речі
- це
- ті
- загрози
- час
- до
- знак
- Жетони
- занадто
- топ
- трансакцію
- транзакційний
- Transactions
- правда
- Типи
- розуміння
- небажаний
- Оновити
- Updates
- оновлення
- використання
- використовуваний
- користувач
- User Experience
- користувачі
- ПЕРЕВІР
- значення
- дуже
- вид
- візит
- Уразливості
- вразливість
- Вразливий
- Wallet
- Гаманці
- було
- we
- Web3
- веб-сайт
- ДОБРЕ
- добре відомі
- були
- Що
- коли
- який
- в той час як
- чому
- волі
- з
- свідок
- світ
- Неправильно
- років
- Ти
- вашу
- зефірнет