
Как найти уязвимости интеллектуального контракта до эксплуатации
17 июля 2025 г.Таблица ссылок
Аннотация и 1. Введение
Фон
2.1 Ethereum Primer
2.2 Проверка адреса белого списка
2.3 Анализ Taint по интеллектуальным контрактам и 2,4 модели угрозы
Мотивирующий пример и проблемы
3.1 Мотивирующий пример
3.2 Проблемы
3.3 Ограничения существующих инструментов
Дизайн Avverifier и 4.1 Обзор
4.2 обозначения
4.3 Компонент № 1: График кода
4.4 Компонент № 2: симулятор EVM
4.5 Компонент № 3: детектор уязвимости
Оценка
5.1 Экспериментальная настройка и исследовательские вопросы
5.2 RQ1: эффективность и эффективность
5.3 RQ2: характеристики уязвимых контрактов реального мира
5.4 RQ3: обнаружение в реальном времени
Дискуссия
6.1 Угрозы для достоверности и 6.2 ограничения
6.3 Этическое рассмотрение
Связанная работа
Заключение, доступность и ссылки
5.4 RQ3: обнаружение в реальном времени
Мы стремимся развернуть Avverifier в качестве детектора в реальном времени. Таким образом, мы измерили несколько показателей производительности (см. §5.4.1). Кроме того, мы даем тематическое исследование, чтобы проиллюстрировать, как Avverifier может обнаружить уязвимость (см. §5.4.2).
5.4.1 Количественный анализ
Мы измеряем два реальных показателя производительности. Во-первых, мы сравниваем ставку создания контракта вдоль генерации блоков с производительностью Avverifier, который может пролить свет на отзывчивость и применимость Avverifier в реальном времени. Во -вторых, мы иллюстрируем корреляцию между длиной байт -кода и потребляемым временем, необходимым для анализа. Этот показатель указывает масштабируемость Avverifier с растущей сложностью и размером контрактов.
Ставка по созданию контрактов против обнаружения.Мы направили наше внимание на данные с ноября 2022 года по январь 2023 года, период
Времени, когда контракты в значительной степени развернуты (показано на рис. 3). Согласно нашей статистике, эти три месяца охватывают блоки с высотой от 15 870 000 до 16 518 000 человек, что составляет 289 238 развернутых контрактов. Другими словами, контракт 0,45 в среднем развертывается в каждом блоке. Что касается BSC, согласно широко известному браузеру BSC, BSCSCAN [15], мы можем рассчитать, что блок генерируется каждые 3S, и в каждом блоке BSC развернуты 2,1 контракта. Согласно результатам в RQ1, каждый контракт Ethereum занимает около 6,42 с. Следовательно, учитывая количество контракта, развернутое в каждом блоке, и скорость генерации блоков в Ethereum, одноядерный процессор может использоваться для развертывания Avverifier в качестве детектора в реальном времени. Что касается BSC, каждый блок тратит около 6.42с× 2,1 = 13,48с, больше времени, затрачиваемого генерацией блока. Тем не менее, методологии, принятые Avverifier, могут быть легко параллельными, например, анализ нескольких подозрительных функций одновременно. Следовательно, многоядерной машины достаточно.
МасштабируемостьПолем Чтобы оценить масштабируемость Avverifier, мы случайным образом выбираем 1000 контрактов из тех, которые были развернуты в течение последнего года. На рисунке 6 представлена связь между длиной байт -кода и потребляемым временем. Очевидно, что нет линейной корреляции или даже экспоненциальной между этими двумя метриками. Мы также можем заметить, что большинство случаев могут быть закончены в течение 20 с. Такая высокая эффективность обнаружения может быть связана с двумя точками. С одной стороны, логика обнаружения очень эффективна. Например, детектор может эффективно проверять подозрительные функции и может остановить анализ во времени, когда встречается уязвимость. С другой стороны, метод обнаружения имеет мало узких мест для производительности. В отличие от статических методов символического выполнения, симулятор может быстро и точно пройти путь, которые могут привести к уязвимостям. Следовательно, потраченное время AVVERIFIER на каждом случае не является прямо пропорционально длине байт -кодов, иллюстрируя его масштабируемость.
5.4.2 Пример из исследования: настоящий случай на раннем этаже
Мы иллюстрируем реальный случай, который помечен как уязвимый, когда Avverifier развернут в качестве детектора в реальном времени на BSC. Поскольку для этого случая нет исходного кода, в листинге 4 иллюстрирует его декомпилированную версию. Более того, из -за принципа неразглашения мы делаем небольшое синтаксически изменение, не изменяя его первоначальную семантику.
Как мы видим, L2 указывает, что VARG2 - это адрес, переданный из внешней среды (удовлетворяющийП1) При L3 функция вызывает скольжение, которое принимает varg2 в качестве целевого адреса (удовлетворяющийП2) Затем, на L4, требуется проверить возвращенное значение (удовлетворяющееP3) Наконец, в L5 в контракте ссылается перевод в перевод жетонов на адрес, упомянутый VARG0. Следовательно, злоумышленники могут развернуть контракт на обход проверки на V0 для истощения этого контракта.
Примечательно, что мы обнаружили эту уязвимость 18 мая 2023 года, в 6:10 UTC. Сделка атаки была инициирована через 1,5 часа после, в 7:41 UTC. Такой временной разрыв подчеркивает эту способность AVVERIFIER. Тем не менее, отсутствие автоматического механизма отклика эксплойта в рамках Avverifier предотвратило своевременное вмешательство, что привело к потере пользователя в 30 тысяч долларов США. Этот инцидент подчеркивает важность разработки инструмента автоматического реагирования для смягчения потенциальных финансовых убытков, вызванных уязвимостью проверки адреса.
Авторы:
(1) Tianle Sun, Университет науки и техники Хуажонга;
(2) Ningyu HE, Peking University;
(3) Цзян Сяо, Университет науки и техники Хуажонга;
(4) Yinliang Yue, лаборатория Zhongguancun;
(5) Сяпу Луо, Гонконгский политехнический университет;
(6) Хаою Ван, Университет науки и техники Хуажонга.
Эта статья есть
Оригинал