Оригинал: Beosin
9 июня Anthropic официально выпустила публичную версию Claude Fable 5 под названием Mythos. Ранее Mythos продемонстрировала выдающиеся способности в поиске уязвимостей безопасности, оперативно выявляя скрытые уязвимости внутри систем, что привлекло значительное внимание в сфере кибербезопасности.
Недавний инцидент с Zcash стал типичным примером использования ИИ для поиска уязвимостей в блокчейне. Исследователь безопасности Тейлор Хорнби с помощью модели Anthropic Claude Opus 4.8 обнаружил за несколько часов уязвимость soundness в приватном пуле Orchard, которая оставалась незамеченной в течение четырех лет, несмотря на многочисленные предыдущие ручные аудиты. Теоретически эта уязвимость позволяла чеканить неограниченное количество необнаруживаемых поддельных ZEC, что напрямую привело к падению цены ZEC почти на 40%.
В настоящее время ИИ демонстрирует поразительную эффективность в сопоставлении шаблонов кода, массовой первоначальной проверке и других областях. Интеграция ИИ в процессы аудита безопасности блокчейна и смарт-контрактов становится трендом в индустрии безопасности Web3. В этой статье, на основе реальных примеров уязвимостей и тестирования Fable 5, анализируются сильные и слабые стороны ИИ в аудите смарт-контрактов.
Ситуации, в которых ИИ-аудит имеет преимущества
Пример анализа: Коллизия слотов хранения
В одном контракте одновременно использовались два следующих компонента:
1. Пользовательское отображение rewards mapping (для записи вознаграждений, доступных пользователю)
2. Библиотека ReentrancyGuard от Solady (для предотвращения атак повторного входа)
При этом расположение хранилищ двух компонентов вошло в конфликт.
ReentrancyGuard от Solady в целях максимальной оптимизации газа использует фиксированные слоты хранения с низкими номерами (обычно получаемые через специфические вычисления, близкие к константам). Типичная логика модификатора nonReentrant:
// Упрощенная версия
modifier nonReentrant() {
// При входе записываем в сторожевой слот значение 0xff...ff (Страж)
assembly {
if eq(sload(REENTRANCY_GUARD_SLOT), 2) { revert(...) } // 2 представляет состояние "заблокировано"
sstore(REENTRANCY_GUARD_SLOT, 2) // заблокировано
}
_;
// Восстановление при завершении функции
assembly { sstore(REENTRANCY_GUARD_SLOT, 1) }
}
Пользовательское rewards mapping:
mapping(address => uint256) public rewards;
Из-за правил расположения хранилищ в Solidity (первый слот mapping вычисляется на основе позиции его объявления), первый слот rewards mapping оказался идентичным фиксированному сторожевому слоту ReentrancyGuard.
Процесс атаки (подробные шаги):
1. Злоумышленник вызывает функцию getReward()
2. Срабатывает модификатор nonReentrant, записывая в сторожевой слот значение 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff (все единицы)
3. Код контракта затем читает rewards[адрес_атакующего] — но из-за коллизии слотов он фактически читает значение 0xff...ff из сторожевого слота
4. Контракт решает, что "начислена огромная награда", и переводит эту сумму ETH атакующему, одновременно пытаясь обнулить rewards[атакующий] (что снова записывается в тот же сторожевой слот)
5. Поскольку модификатор восстанавливает значение слота при завершении функции, атакующий может повторно вызвать getReward()
6. Атакующий циклически вызывает функцию 200 раз, каждый раз успешно извлекая фиксированную сумму ETH, пока контракт не будет опустошен.
Важно отметить, что это не "атака повторного входа" (reentrancy attack) в традиционном понимании. Это механизм защиты самого ReentrancyGuard, который из-за коллизии хранения был использован в обратном направлении, превратившись в уязвимость для бесконечного получения наград. При ручном аудите крайне редко углубляются в раскладку хранилищ сторонних библиотек построчно, в то время как ИИ может мгновенно сравнить версии библиотек и точно сопоставить слоты хранения, напрямую выявляя такие "скрытые коллизионные" уязвимости.
Ситуации, в которых ИИ-аудит имеет недостатки
Fable 5 показывает отличные результаты в обнаружении уязвимостей в одиночных контрактах, чистом синтаксисе кода, уязвимостях на уровне хранилищ. Однако при работе с семантикой комбинаций протоколов, многоконтрактными комбинированными атаками, все еще наблюдаются очевидные ограничения. Мы использовали последнюю публичную версию Fable 5 для повторного тестирования контрактов, связанных с инцидентом атаки на Curve LlamaLend sDOLA, и результаты подтвердили эту проблему.
Список контрактов, участвовавших в этом аудите: crvUSD Controller.vy, sDOLA.sol, ERC4626.sol и другие. Fable 5 не смог идентифицировать ключевые риски, соответствующие этой атаке:


Этот инцидент представляет собой типичную уязвимость комбинирования нескольких протоколов. Синтаксис и логика кода в каждом отдельном контракте не вызывали проблем, но злоумышленник использовал взаимодействие нескольких протоколов для построения цепочки атаки:
1. С помощью инструмента flash loan злоумышленник манипулировал ценой в пуле ликвидности Curve, искусственно занижая цену актива sDOLA (доли сейфа ERC-4626);
2. Множество залоговых позиций, использующих sDOLA в качестве обеспечения, достигли порога ликвидации;
3. Атакующий выполнил операции ликвидации оптом, получив прибыль.
Такие уязвимости возникают из-за комбинации нескольких протоколов DeFi и требуют от ИИ/аудиторов способности к комплексному анализу всей бизнес-логики и экономических моделей протоколов. В настоящее время аудит ИИ все еще недостаточно силен в области семантики комбинирования нескольких протоколов.
Заключение
Как видно из тестов на реальных примерах, Fable 5 в стандартизированных, детализированных сценариях, таких как конфликты слотов хранения, уязвимости шаблонов кода, логические дефекты в одиночных контрактах, массовая первоначальная проверка кода, может эффективно находить скрытые уязвимости, которые легко упускаются при ручном аудите. Однако при обработке семантики комбинаций протоколов, экономических моделей DeFi, многоконтрактных скоординированных атак, сложных уязвимостей бизнес-логики, ИИ с трудом понимает бизнес-сущность ончейн-экосистемы и пути построения комбинированных атак. Эта часть по-прежнему требует анализа под руководством профессиональных аудиторов безопасности.
В повседневной аудиторской работе в Beosin уже создан зрелый процесс аудита, сочетающий ИИ и экспертов по безопасности. Это не только значительно повышает эффективность аудита, но и позволяет лучше выявлять потенциальные риски в деталях и сложные уязвимости бизнес-логики, делая аудиторскую работу более эффективной, всесторонней и глубокой.





