Добро пожаловать обратно в "Вспышку уязвимостей Шерлока", где мы подчеркиваем значимую уязвимость, обнаруженную во время аудита Шерлока. На этой неделе мы рассматриваем атаку типа "отказ в обслуживании", найденную в конкурсе @GMX_IO от @0xdeadbeef____ и @IllIllI000. Благодарим @int0x1catedCode за разбор.
Резюме уязвимости: Уязвимость позволяет злоумышленнику манипулировать порядком выполнения операций, предоставляя фальшивые длины причин отката, которые не соответствуют фактическим данным. Это приводит к тому, что обработка ошибок протокола считывает неправильные области памяти, что потенциально нарушает процесс выполнения или вызывает неожиданные поведения при обработке неудачных заказов.
Шаги атаки: 1. Этап настройки Разверните вредоносный контракт, который реализует пользовательское поведение отката. Вредоносный контракт должен быть вызываемым целевым протоколом (например, в качестве обработчика обратного вызова). 2. Создание вредоносных данных отката Структурируйте данные отката с поддельным параметром длины. 3. Выполнение заказа через протокол Создайте заказ, который вызовет взаимодействие с вредоносным контрактом. Когда протокол обрабатывает заказ и вызывает вредоносный контракт, он откатывается с созданными данными. Обработка ошибок протокола пытается декодировать причину отката, используя поддельную длину. 4. Вызов переполнения чтения памяти Протокол читает память на основе поддельного параметра длины. Это приводит к тому, что он читает за пределами фактических границ данных отката.
Каков эффект? Отказ в обслуживании: Заказы могут не выполняться должным образом, блокируя законные операции протокола, такие как ликвидация плохих позиций. Нарушение выполнения заказов: Пакетная обработка заказов может быть приостановлена, что повлияет на нескольких пользователей. Газовое огорчение: Обработка неправильно сформированных данных отката может потреблять чрезмерное количество газа.
Коренная причина: 1. Неконтролируемые параметры длины: Протокол доверяет значению длины, указанному в данных отката, без проверки 2. Отсутствие проверок границ: Нет проверки того, что заявленная длина соответствует фактическому размеру данных
Смягчение: 1. Всегда проверяйте длину данных для отката 2. Реализуйте максимальные ограничения длины
Мы гордимся тем, что помогли обеспечить безопасность @GMX_IO благодаря этому открытию. Когда безопасность имеет первостепенное значение, Шерлок — правильный выбор.
Показать оригинал
1,79 тыс.
11
Содержание этой страницы предоставляется третьими сторонами. OKX не является автором цитируемых статей и не имеет на них авторских прав, если не указано иное. Материалы предоставляются исключительно в информационных целях и не отражают мнения OKX. Материалы не являются инвестиционным советом и призывом к покупке или продаже цифровых активов. Раздел использует ИИ для создания обзоров и кратких содержаний предоставленных материалов. Обратите внимание, что информация, сгенерированная ИИ, может быть неточной и непоследовательной. Для получения полной информации изучите соответствующую оригинальную статью. OKX не несет ответственности за материалы, содержащиеся на сторонних сайтах. Цифровые активы, в том числе стейблкоины и NFT, подвержены высокому риску, а их стоимость может сильно колебаться. Перед торговлей и покупкой цифровых активов оцените ваше финансовое состояние и принимайте только взвешенные решения.