За первый квартал 2022 года хакеры увели $1,2 млрд из протоколов DeFi через уязвимости в смарт контрактах. Вызывает опасение тот факт, что несмотря на то, что существуют методы защиты смарт контрактов dApps от взломов и эксплойтов – сумма потерянных и выведенных средств продолжает расти. Это подрывает доверие у пользователей к криптосфере в целом и DeFi в частности — на них приходится львиная доля всех атак. Как обезопасить свой проект от эксплойта и взлома — рассказываем в статье.
Чем отличается эксплойт от взлома
Проще всего понять, чем отличаются эти два вида атак на смарт-контракт через пример. Представим, что на улице произошло два ограбления. В первом случае, ворам пришлось найти отмычку от замка, а после потрудиться над тем, чтобы взломать сейф. А во втором, злоумышленники просто вошли через открытое окно и обнаружили деньги в ящике письменного стола. Архитектура смарт контрактов бывает сложна, поэтому разработчики иногда случайно оставляют в нем «открытые окна» для хакеров. Поиск таких лазеек в смарт-контракте называют эксплойтом.
Есть несколько распространенных причин взломов и эксплойтов смарт контрактов.
Скомпрометированный ключ администратора. Смарт контракт претендует на полную децентрализацию и сам регулирует отношения между пользователями dApps. Но есть ограниченное число администраторов, которые имеют доступ к привилегированным функциям. Если хакер украдет ключ, он сможет получить контроль над смарт контрактом и украсть средства пользователей.
Ошибки в смарт-контракте. Как мы писали выше, код пишут люди, которые не могут быть застрахованы от ошибок. Есть разные типы лазеек в смарт контракте — иногда это сложная уязвимость, которую непросто обнаружить, иногда простая опечатка в строке кода. Но результат любой ошибки может исчисляться в миллионах долларов украденных средств.
Ошибки в логике смарт контракта. Некоторые проекты просто копируют сторонние протоколы из-за отсутствия опыта и знаний. Между тем смарт контракт включает все шаги и действия, которые совершает пользователь. И если какая-то часть логики этих действий нарушена, то под угрозой оказываются средства и данные пользователей.
Как защитить свое приложение от атак
Большинство проблем с безопасностью достаточно просто решаются. Ниже приведем несколько шагов, которые необходимо учитывать руководителям проекта при развертывании своего приложения или проекта в DeFi и Web 3.0
- Нанять опытную команду разработчиков. Безопасность проекта начинается с разработки надежного смарт контракта. Как бы не казалось, что уже существует достаточно готовых решений для развертки приложений в сетях блокчейна — шаблонные решения подходят не всем проектам. Кроме того, создание смарт-контракта не единственный сложный этап в дорожной карте – необходимо, чтобы команда умела провести тестирование проекта и работать с данными аудита смарт-контракта.
- Пройти модульные тестирования. Суть блокчейна в том, что его данные неизменны — если ошибки обнаружатся после запуска приложения их нельзя будет исправить. Поэтому необходимо заранее проверить функциональность смарт-контракта в условиях тестовой сети
- Пройти независимый аудит смарт контракта. Обычно он помогает выявить ошибки в коде, найти и оценить потенциальные уязвимости и проверить логику интерфейса. Если проект сложный и связан с большими суммами заблокированных средств пользователей – желательно пройти аудит сразу в нескольких аккредитованных фирмах. Самые известные аудиторы – Certik, Blaize, Hacken, SlowMist, Chainsulting.
- Обеспечить безопасность ключей администратора. Необходимо внимательно отнестись к хранению закрытых ключей и не доверять их третьим лицам. Лучше ввести многофакторную аутентификацию – доступ к смарт-контракту можно было получить с помощью не одного, а нескольких ключей. В этом случае, даже если какой-то из них будет скомпрометирован, злоумышленники не смогут получить доступ к функциям смарт контракта.
- Обратиться за помощью к сообществу или белым хакерам. Это необязательный шаг, но в некоторых случаях простого аудита может быть недостаточно. Например, для новых сетей второго уровня или многомиллиардных протоколов DeFi. Введение награды за найденные ошибки и уязвимости решит сразу несколько проблем – улучшит пользовательский опыт в приложении и поможет предотвратить потенциальный взлом протокола.
Многие из советов выше могут показаться очевидными, однако как показывает статистика преступлений в криптосфере, не все протоколы им следуют. Эксплойты и взломы смарт контрактов в конечном счете приводят к потере репутации, снижают доверие к отрасли и привлекают внимание регуляторов. Поэтому особенно важно следить за мерами безопасности своего проекта.