Большинство групп аудита безопасности Web3 по-прежнему полагаются на комбинацию статических проверок и двухнедельных ручных проверок. Эта модель мгновенно выходит из строя при столкновении с высокоскоростной экосистемой L2, такой как Base (Chain ID 8453), где...
Автономный аудит смарт-контрактов: обход AST и проверка CEI
Большинство групп аудита безопасности Web3 по-прежнему полагаются на комбинацию статических проверок и двухнедельных ручных проверок. Эта модель мгновенно выходит из строя, когда сталкивается с высокоскоростными экосистемами L2, такими как Base (Chain ID 8453), где протоколы развертывают десятки контрактов в день в погоне за ликвидностью.
Чистые LLM (даже GPT-4 или Claude 3.5 Sonnet) имеют фатальный уровень галлюцинаций при чтении необработанного управления потоком Solidity: они думают, что состояние было обновлено, хотя на самом деле EVM выполнил повторный вход в предыдущем кадре выполнения.
Детерминированное решение — не добавлять инженерную подсказку. Решение состоит в том, чтобы программно сопоставить абстрактное синтаксическое дерево компилятора Solidity (AST), проверить шаблон «Проверки-эффекты-взаимодействия» (CEI) и выполнить автономные действия в цепочке только тогда, когда контракт подтвержден как безопасный.
Слабое место: нарушение CEI
Шаблон «Проверки-Эффекты-Взаимодействия» — самое старое правило в EVM:
Проверка условий (Проверки).
Изменение внутреннего состояния (Эффекты).
Вызов внешних контрактов (Взаимодействий).
Если шаг 3 выполняется до шага 2, резервная функция злоумышленника может снова вызвать функцию.
