Прошлый год стал самым тяжелым по количеству взломов Web3: было похищено около 4 млрд. долларов США, в основном с децентрализованных финансовых платформ. Причиной этих событий почти всегда являются ошибки, эксплойты или другие проблемы в базовых смарт-контрактах, на которых работают эти сервисы. К счастью, разработчики уже имеют доступ к самому мощному инструменту для предотвращения атак - аудиту смарт-контрактов. Аудит предполагает проведение сторонними экспертами детального анализа всего кода, выявление недостатков в логике, возможных эксплойтов и способов их устранения.

Хотя это принципиально важно для команд разработчиков, не менее важно, чтобы с ними знакомились и обычные инвесторы. Это поможет значительно улучшить инвестиционные решения и убережет пользователей от вложения денег в продукт, который не соответствует требованиям.

Почему необходимо проводить аудит смарт-контрактов

Если аудит кода не проводится или проводится недостаточно тщательно, это может привести к плачевным результатам. Возьмем, к примеру, случай с крахом Terra-LUNA. Хотя код прошел аудит, аудиторы искали только конкретные недостатки в смарт-контрактах, но не учитывали общую картину того, как система будет работать в различных реальных экономических условиях.

Для того чтобы DeFi и Web3 получили глобальное распространение среди миллиардов пользователей, необходимо решить проблему "слона в комнате". Как возможно, чтобы у этих сервисов, обрабатывающих миллиарды долларов, было так много критических проблем? Проблема кроется в смарт-контрактах - коде, определяющем взаимодействие различных платформ и активов. В силу неизменяемости блокчейн очень важно, чтобы этот код был безупречен и работал именно так, как задумано. Если этого не сделать, то вполне возможно, что под угрозой окажется огромное количество ценностей.

Именно поэтому большинство проектов Web3 проводят один или несколько аудитов кода, прежде чем развернуть что-либо в свободном доступе. В ходе такого аудита технические специалисты проверяют все смарт-контракты на предмет наличия проблем с логикой их работы, взаимодействием друг с другом и возможными уязвимостями. Аудит может проводиться внутри компании, но для обеспечения беспристрастности и тщательности проверки считается оптимальной практика привлечения сторонней организации.

Аудит - это ручной процесс, но он может и должен быть усовершенствован с помощью инструментальных средств, технологий и автоматизации. Как правило, наиболее эффективным подходом является привлечение реальных специалистов для проведения окончательного обзора. Аудиторы сначала изучают более широкую инфраструктуру кода, чтобы понять, чего пытается достичь проект. Затем рассматриваются более конкретные участки кода, которые тестируются в различных условиях. Результаты этих проверок обобщаются, проходят последнюю проверку и в конечном итоге передаются команде разработчиков, а затем публикуются в Интернете для всеобщего обозрения.

Аудиторские отчеты - необходимая линия обороны для разработчиков, позволяющая не запустить неработающий сервис. Однако обычным пользователям и инвесторам тоже стоит их читать. Они могут дать критическое представление как о рисках, присущих использованию платформы или актива, так и о том, насколько тщательно и прозрачно команда решает эти риски. Эта информация очень важна, когда на кону стоят реальные деньги, поскольку она может означать разницу между выбором надежных услуг и потерей всего. Кроме того, отсутствие аудита качества также должно быть воспринято как тревожный сигнал, поскольку честные проекты хотят быть прозрачными в вопросах безопасности.

Как читать аудит смарт-контракта

Теперь объясним, что вы, скорее всего, увидите при рассмотрении результатов аудита. Результаты разных аудитов могут быть представлены по-разному, но все они должны иметь примерно одинаковые компоненты. Прежде всего, должен быть обзор, содержащий различную информацию об аудируемом проекте. Это может быть адрес смарт-контракта, информация об используемой версии компилятора, о том, на каком блокчейне он построен, а также некоторые внешние предположения, например, о привилегированных ролях и интеграциях, от которых зависит безопасность проекта. Это может быть полезно, если вы мало знакомы с проектом, в то время как другие могут уже знать большую часть этой информации.

Кроме того, важно проверить версию кода, которая подвергалась аудиту. Не исключено, что в будущем в код могут быть внесены изменения, которые не попадут на повторный аудит. Необходимо помнить, что любые изменения, внесенные после аудита, могут привести к появлению ошибок, поэтому важно обеспечить строгий контроль версий и аудит изменений.

Далее наступает настоящий "мясной" этап аудита - анализ всех результатов, полученных командой. Здесь должен быть список всех найденных ошибок и проблем, подробное описание проблемы и, скорее всего, предложения по ее устранению. Проблемы сортируются по категориям серьезности, обычно это незначительные, умеренные и критические. Незначительные проблемы, как правило, не подвергают риску финансовые средства, но должны быть устранены. Критические проблемы подразумевают непосредственную угрозу для активов и должны быть устранены немедленно.

Найденные ошибки также могут быть ранжированы по степени вероятности их использования. Это связано с тем, что некоторые эксплойты могут быть разрушительными, но их трудно реализовать. Другие могут быть достаточно простыми, но ничего не нарушающими. Задавая несколько параметров для оценки угроз, разработчики получают наилучшую оптику того, на что следует обратить внимание в первую очередь.

Даже если описания обнаруженных ошибок слишком техничны, в кратком резюме на простом английском языке должны быть изложены самые важные выводы и подведены итоги работы над проектом. В то время как подробное описание предназначено скорее для команды разработчиков, этот раздел будет наиболее простым для понимания большинством пользователей и должен быть достаточным для того, чтобы решить, насколько надежен тот или иной сервис.

Что часто обнаруживают аудиторы

Не существует недостатка в том, что может пойти не так с платформой или активом, управляемым смарт-контрактами. Уязвимости могут быть самыми разными и довольно сложными, однако существуют и общие виновники. Например, смарт-контракты, позволяющие владельцу майнить или сжигать токены, должны использоваться с осторожностью. Если эта функция реализована некорректно, злоумышленник может использовать ее для создания или уничтожения миллионных активов. К счастью, в начале этого года именно такая уязвимость была обнаружена в цепочке BNB биржи Binance до того, как злоумышленник смог ею воспользоваться.

Тогда возможны недостатки в способе верификации транзакций. Известно, что Nomad Bridge подвергся эксплойту, созданному в результате обычного обновления, которое позволяло любому человеку ретранслировать старые транзакции, просто подменив свой собственный адрес. Это привело к потере более 150 млн. долларов США, причем не одним злоумышленником, а множеством различных пользователей, поскольку эксплойт было невероятно легко воспроизвести.

Примеры можно продолжать, но теперь вы должны понимать важность того, что аудит безопасности привносит в платформы смарт-контрактов и протоколы блокчейн. Они защищают как разработчиков, так и пользователей, если их проводят доверенные третьи лица. Именно таким образом индустрия сможет гарантировать, что в 2023 году и в последующие годы не будет продолжаться тенденция, характерная для предыдущих лет, и криптовалюты смогут заслужить более высокую репутацию в глазах общественности.

Источник