Detecting Functional Bugs in Smart Contract through LLM-powered and Bug-Oriented Compose Analysis
Binbin Zhao, Xingshuang Lin, Yuan Tian, Saman Zonouz, Na Ruan, Jiliang Li, Raheem Beyah, Shouling Ji
2025
Разбор статьи ч.1
Авторы определяют три ключевые проблемы, которые надо решить для детекции функциональных багов в автоматическом режиме:
1) Определить бизнес логику. Требуется аккуратно извлечь высокоуровневую бизнес логику из кода.
2) Создать баг чекер. Бизнес логика - это очень абстрактная вещь, поэтому второй задачей становится её деконструкция и создание баг-чекеров.
3) Детектировать функциональные баги. Для этого авторы разработали методику применения баг чекеров для их эффективного использования.
Решение задачи началось с сборки фреймворка для работы с LLM. В корне этой сборки лежит идея использования промптов для двух агентов: аудитора и атакующего. Далее их ответы смешиваются по определенным правилам. Затем, полученный результат используется для создания чекера инвариантов (для этого есть 6 шаблонов). На третьей стадии через чекеры пропускают потенциально опасные функции. Схема работы фреймворка показана на втором изображении.
Использование двухагентной системы позволяет снизить влияние галлюцинаций в итоговой выдаче (попробуйте закинуть любую нестандартную функцию из смарт-контракта нейронке, и последовательно сказать, что тут есть уязвимость, есть уязвимость, но не такая, нет уязвимости и вы увидите насколько ненадежна выдача агента, я пробовал недавно)
Авторы назвали свою систему PromFuzz и выложили датасет к ней и саму стратегию в открытый доступ
В таблице, приложенной к посту, представлены категории и подвиды атак, с которыми велась работа.
-- Манипуляция ценой оракула. Самый "дорогой" вектор атаки, топ-1 из года в год
- Неавторизованное поведение
- Ненадежная логика расчетов
- Некорректный механизм контроля
Авторы отмечают, что они не первые, кто использует LLM для решения задачи, но первые, кто выработал стратегию, которая дает консистентный результат. В работе использовалась GPT-4-turbo.
Post #14
188


- ❤ 1