Как ошибка в коде может стоить миллионы: зачем нужен аудит смарт (умных)-контрактов
Проблемы с безопасностью являются одной из самых частых причин провала блокчейн-проектов. По данным за 2025 год, уязвимости в смарт (умных)-контрактах привели к убыткам на сумму около полумиллиарда долларов США. А согласно отчету Oak Security, совокупный ущерб от уязвимостей смарт (умных)-контрактов с 2020 года превысил $2,4 млрд.
Причем порядка 40% всех инцидентов пришлось на атаку повторного входа*, связанную с недостатком аудита смарт (умных)-контрактов.
* Атака повторного входа (Reentrancy Attack) — это уязвимость смарт (умного)-контракта, при которой злоумышленник может многократно вызвать функцию контракта до завершения ее первоначального выполнения. Как это работает:
- Смарт (умный)-контракт отправляет средства пользователю.
- До обновления своего внутреннего баланса контракт получает новый вызов от злоумышленника.
- Средства выводятся повторно.
- Процесс может повторяться много раз, пока средства не будут исчерпаны.
Один из самых известных примеров — взлом The DAO в 2016 году, когда из-за атаки повторного входа было похищено около 3,6 млн Ethereum.
Сильнее всего от проблем с аудитом смарт (умных)-контрактов пострадали экосистемы Ethereum, BNB Chain и NEAR Protocol — именно на них приходится подавляющее большинство успешных хакерских атак.
Что такое аудит смарт (умных)-контрактов?
Прежде чем понять, что представляет собой аудит смарт (умных)-контрактов, необходимо разобраться, что такое смарт (умные)-контракты и почему от них зависит безопасность блокчейн-проектов.
Смарт (умный)-контракт — это самоисполняющаяся программа в блокчейне, которая проверяет выполнение условий сделки и проводит операции между сторонами.
Смарт (умные)-контракты заменяют централизованных посредников, таких как брокеры и биржи, вот почему аудит смарт (умных)-контрактов критически важен для блокчейн-проектов.
Аудит смарт (умных)-контрактов представляет собой их комплексную проверку и анализ исходного кода с целью устранения уязвимостей, способных привести к взлому смарт (умных)-контрактов.
Аудит смарт (умных)-контрактов помогает выявить:
- Ошибки в коде децентрализованных протоколов;
- Непреднамеренные или заранее встроенные уязвимости для проведения атак;
- Неэффективные участки кода.
- Логические ошибки в работе смарт (умных)-контрактов, которые могут привести к некорректному выполнению операций;
- Ошибки в механизмах управления доступом, из-за которых злоумышленники могут получить права администратора или управлять средствами проекта;
- Уязвимости, связанные с взаимодействием нескольких смарт (умных)-контрактов между собой;
- Риски манипуляции ценами, оракулами и внешними источниками данных;
- Проблемы с обновляемостью смарт (умных)-контрактов, если проект использует прокси-контракты или другие механизмы изменения кода;
- Ошибки в токеномике (криптоэкономике), распределении комиссий, начислении наград или расчете залога;
- Несоответствие фактической работы кода заявленной бизнес-логике проекта.
Особая важность аудита смарт (умных)-контрактов для децентрализованных протоколов и приложений обуславливается тем, что операции в блокчейне являются необратимыми. Из-за этого средства, выведенные хакерами, практически невозможно вернуть.
Из чего состоит аудит смарт (умных)-контрактов и кто его проводит?
Количество и порядок мер при проведении аудита смарт (умных)-контрактов определяют сами компании, однако чаще всего он состоит из подготовительного этапа, анализа, оценки и подтверждения уязвимостей в коде, а также формирования отчета.
Однако список методов и инструментов для аудита смарт (умных)-контрактов и устранения "узких мест" проекта является достаточно разнообразным и включает:
- Совместный аудит смарт (умных)-контрактов. При таком подходе проект привлекает сразу несколько компаний для аудита смарт (умных)-контрактов. Это позволяет охватить больше векторов атак, чем если бы такую проверку делала только одна компания;
- Конкурсный аудит смарт (умных)-контрактов или Bug Bounty (охота за ошибками). Это метод, при котором проект устраивает конкурс среди аудиторов и платит вознаграждение тем, кто первым обнаружил критические уязвимости в исходном коде;
- Автоматизированный аудит смарт (умных)-контрактов. Компании используют программы, в том числе на основе искусственного интеллекта (ИИ), для поиска и устранения уязвимостей. Данный метод позволяет ускорить обнаружение ошибок, однако он сочетается с экспертными проверками;
- Закрытое тестирование. Этот способ включает создание специальной группы специалистов в области безопасности, которая будет совместно проводить аудит смарт (умных)-контрактов;
- Открытое тестирование. Если исходный код проекта открыт, то к аудиту смарт (умных)-контрактов могут присоединиться независимые специалисты. Чем больше внешних аудиторов задействовано в анализе безопасности проекта, тем меньше шанс упустить важные для проекта уязвимости.
После проведения аудита смарт (умных)-контрактов компания формирует отчет, в котором указаны все обнаруженные уязвимости и рекомендации по их устранению. Как правило, в таких отчетах все уязвимости разделены на категории:
- Критические, которые серьезно мешают безопасности и их необходимо срочно устранить;
- Серьезные, которые мешают работе и содержат логические ошибки, создающие возможность обнаружения "лазеек" для хакеров;
- Средней значимости: могут влиять на производительность и безопасность, но не являются критическими;
- Незначительные, которые указывают на неэффективные участки кода, но не ставят под угрозу безопасность проекта;
- Информационные, содержащие общие рекомендации по улучшению кода.
Аудит смарт (умных)-контрактов проводят специализированные аудиторские компании, например:
- CertiK;
- OpenZeppelin;
- Hacken;
- Quantstamp;
- BlockSec;
- SlowMist;
- ChainSecurity и другие.
Перечисленные компании проводят комплексный аудит смарт (умных)-контрактов по заказу. Стоимость такой услуги может достигать $10 000 и более в зависимости от условий и требований самого проекта.
Гарантирует ли аудит смарт (умных)-контрактов безопасность?
Парадокс заключается в том, что сам по себе аудит смарт (умных)-контрактов не дает каких-либо гарантий безопасности. Аудит смарт (умных)-контрактов лишь позволяет обратить внимание на проблемы, которые по тем или иным причинам не заметили разработчики проекта.
Еще в 2023 году в ходе собственного исследования специалисты AnChain.AI выяснили, что более 90% взломанных блокчейн-проектов, включая известный Wormhole, проходили аудит смарт (умных)-контрактов.
Многое зависит и от того, кто именно проводит аудит (смарт)-контрактов. Если проект экономит на этом и заказывает аудит смарт (умных)-контрактов у малоопытных компаний "для видимости", то в будущем с большой вероятностью это может привести к проблемам с безопасностью.
Из-за недостатка квалификации аудиторов некоторые пробелы в безопасности могут остаться незамеченными, а для провала проекта бывает достаточно всего одной пропущенной при аудите смарт (умных) контрактов уязвимости.
Существует также ряд других причин, из-за которых у проектов возникают провалы даже после аудита смарт (умных)-контрактов:
- Устаревший код. Некоторые проекты продолжают использовать старые версии смарт (умных)-контрактов, в которых могут быть уязвимости, даже после обновления протокола. Например, по этой причине был взломан известный протокол Yearn Finance;
- Атаки на цепочку поставок. Смарт (умные)-контракты являются лишь одной из возможных уязвимых точек криптовалютного проекта. Проблема заключается в том, что аудит смарт (умных)-контрактов может охватывать другие уязвимые компоненты проектов, такие как библиотеки кода или среды разработки, которые могут быть скомпрометированы;
- Проблемы актуализации. В криптовалютной индустрии регулярно появляются новые векторы атак, которые могут быть не учтены в аудите смарт (умных)-контрактов. Зачастую при проверке безопасности специалисты сосредотачиваются на известных методах атак и могут упустить из виду менее распространенные уязвимости. В связи с этим команда любого проекта должна периодически проводить новые аудиты смарт (умных)-контрактов.
- Неправильный подход к безопасности. Некоторые проекты рассматривают аудит смарт (умных)-контрактов как самодостаточную меру для обеспечения безопасности. Однако в действительности киберзащита представляет собой сложный, непрерывный и обновляемый процесс, который не ограничивается разовым аудитом смарт (умных)-контрактов;
- Человеческий фактор. Хотя с развитием технологий искусственного интеллекта процесс аудита смарт (умных)-контрактов становится все более автоматизированным, специалисты по-прежнему проводят его вручную. Аудиторы также могут пропустить ошибки в коде либо неверно интерпретировать код, что может привести к инцидентам с безопасностью.
Не следует также исключать уязвимости нулевого дня*, которые могут быть обнаружены и использованы злоумышленниками до или во время проведения аудита смарт (умных) контрактов.
* Уязвимость нулевого дня (Zero-Day Vulnerability) — это ранее неизвестная ошибка или слабое место в программном обеспечении, о котором еще не знают разработчики или специалисты по безопасности. Название "нулевой день" означает, что у разработчиков есть ноль дней на подготовку исправления, поскольку злоумышленники могут начать использовать уязвимость сразу после ее обнаружения. Особенности:
- отсутствует готовое исправление (патч);
- трудно обнаружить стандартными методами аудита;
- может использоваться до того, как станет публично известной;
- представляет высокий риск для безопасности проекта.
