Ласкаво просимо назад до Sherlock's Vulnerability Spotlight, де ми висвітлюємо вражаючу вразливість, виявлену під час аудиту Шерлока. Цього тижня ми розглянемо випадок відмови в обслуговуванні, виявлений у конкурсі @GMX_IO від @0xdeadbeef____ та @IllIllI000. Кредит @int0x1catedCode за розбивку.
Короткий опис вразливості: Вразливість дозволяє зловмиснику маніпулювати потоком виконання замовлень, надаючи фальшиві довжини причин відкату, які не відповідають фактичним даним. Це призводить до того, що обробка помилок протоколу зчитує неправильні області пам'яті, потенційно порушуючи процес виконання або викликаючи неочікувану поведінку під час обробки невдалих замовлень.
Етапи атаки: 1. Етап налаштування Розгорніть шкідливий контракт, який реалізує настроювану поведінку відкату Шкідливий контракт повинен бути викликаний цільовим протоколом (наприклад, як обробник зворотного виклику). 2. Створюйте шкідливі дані для відкату Структура повертає дані з фальсифікованим параметром length. 3. Виконання ордера за допомогою протоколу Створіть замовлення, яке запустить взаємодію зі шкідливим контрактом Коли протокол обробляє замовлення та викликає шкідливий контракт, він повертається зі створеними даними. Обробка помилок протоколу намагається розшифрувати причину відкату, використовуючи довжину фальшивки. 4. Тригер переповнення пам'яті зчитування Протокол зчитує пам'ять на основі параметра fake length Це призводить до того, що він читає за фактичними межами даних відкату.
Які наслідки? Відмова в обслуговуванні: замовлення можуть не виконуватися належним чином, блокуючи законні операції протоколу, такі як ліквідація пошкоджених позицій Збої у виконанні замовлень: пакетна обробка замовлень може бути припинена, що вплине на кількох користувачів Проблема з газом: обробка неправильно сформованих даних про відкат може споживати надмірну кількість газу
Першопричина: 1. Неперевірені параметри довжини: протокол довіряє значенню довжини, наданому в даних відкату без перевірки 2. Відсутність перевірок меж: немає перевірки того, що заявлена довжина відповідає фактичному розміру даних
Пом'якшення наслідків: 1. Завжди перевіряйте довжину даних Revert 2. Запровадьте обмеження максимальної довжини
Ми пишаємося тим, що допомогли убезпечити @GMX_IO завдяки цьому відкриттю. Коли це конче потрібно убезпечити, Шерлок – правильний вибір.
Показати оригінал
1,94 тис.
11
Вміст на цій сторінці надається третіми сторонами. Якщо не вказано інше, OKX не є автором цитованих статей і не претендує на авторські права на матеріали. Вміст надається виключно з інформаційною метою і не відображає поглядів OKX. Він не є схваленням жодних дій і не має розглядатися як інвестиційна порада або заохочення купувати чи продавати цифрові активи. Короткий виклад вмісту чи інша інформація, створена генеративним ШІ, можуть бути неточними або суперечливими. Прочитайте статтю за посиланням, щоб дізнатися більше. OKX не несе відповідальності за вміст, розміщений на сторонніх сайтах. Утримування цифрових активів, зокрема стейблкоїнів і NFT, пов’язане з високим ризиком, а вартість таких активів може сильно коливатися. Перш ніж торгувати цифровими активами або утримувати їх, ретельно оцініть свій фінансовий стан.