Анализ практик безопасности смарт-контрактов разработчиками

Анализ практик безопасности смарт-контрактов разработчиками 

Анализ практик безопасности смарт-контрактов разработчиками PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Время Читать: 5 минут

С тех пор, как DeFi начал стремительно расти, возникла новая волна атак на смарт-контракты, которые привели к потере сотен миллионов долларов. Из растущего количества взломов становится ясно, что безопасность имеет решающее значение для смарт-контрактов. 

Большинство уязвимостей можно предотвратить на этапе разработки контрактов, если следовать лучшим практикам. Проекты DeFi иногда спешат выйти на рынок, ставя безопасность на второй план. Есть разница между разработчиками на ранней стадии и опытными разработчиками. Опытный разработчик знаком с передовыми методами обеспечения безопасности, инструментами и знаниями о распространенных уязвимостях и может выявлять проблемы безопасности на ранней стадии разработки. 

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

В этой статье мы рассмотрим человеческий фактор, стоящий за безопасностью и конфиденциальностью смарт-контрактов, и проанализируем, почему разработчики до сих пор считаются «самым слабым звеном».

Что такое уязвимости смарт-контрактов

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

Некоторые распространенные уязвимости в смарт-контрактах на основе EVM включают: возвращение, целочисленное переполнение и неограниченный контроль доступа. Чтобы использовать контракт с повторным входом, делается вызов внешнего контракта; затем он вызывает повторный обратный вызов. Низкоуровневые операции, такие как «отправка», «перевод» и «вызов», вызывают тревогу, и это может привести к уязвимостям, если исключения не обрабатываются осторожно. 

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

Инструменты безопасности смарт-контрактов

На разных уровнях жизненного цикла разработки смарт-контрактов были приняты различные методы для обеспечения и повышения безопасности смарт-контрактов. 

Инструменты тестирования смарт-контрактов: Разработано несколько инструментов для анализа исходного кода контракта и сканирования известных проблем безопасности, таких как повторный вход, переполнение и т. д. Некоторые из наиболее широко используемых инструментов — это Oyente, Maian, MadMax и Vandal. 

Среды разработки и тестирования: Truffle — популярная среда разработки смарт-контрактов. С его помощью разработчики могут писать модульные и интеграционные тесты. Hardhat — еще одна среда разработки, помогающая запускать тесты, проверять код на наличие ошибок и взаимодействовать со смарт-контрактами; он работает в сети разработки. Это упрощает использование плагинов для покрытия кода, измерения газа, используемого для модульного теста, автоматической проверки контрактов на Etherscan и т. д. Ремикс — еще один набор для разработчиков; он широко используется благодаря браузерной IDE, которая поддерживает тестирование, разработку и развертывание смарт-контрактов. 

Аудит кода: Аудит смарт-контрактов помогает снизить риски, связанные с dAapp. Предпочтительно проводить аудит смарт-контрактов, когда контракты находятся на этапе тестирования. Некоторые инструменты, используемые для аудита Сурья, Мифриловыйи MythX. Хотя автоматизированного аудита недостаточно для снижения рисков, связанных с контрактами, рекомендуется проводить сторонние аудиты вручную от заслуживающей доверия фирмы, такой как QuillAudits. В ходе аудита уязвимости обнаруживаются тремя основными способами:

  1.  Извлечение функций из вредоносного кода и выполнение семантического сопоставления исходного кода;
  2.  Следуя математическому подходу к проверке полноты системы, здесь аудитор проверяет каждый возможный входной тест на соответствие всем потенциальным тестам, которые могут произойти;
  3.  Создание графа потока управления с логическими единицами контракта, с помощью которого аудитор проходит все пути кода, чтобы проверить недостатки логического дизайна.

Безопасная разработка смарт-контрактов

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

Инсайты по безопасности смарт-контрактов

Большинство разработчиков не считают безопасность главным приоритетом при разработке смарт-контрактов, потому что:

  1. Их просят сдать проект как можно скорее. Поэтому безопасность становится вторичной
  2. Иногда проекты разветвляются на другие популярные проекты 
  3. Кто-то из команды проводит аудит

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

Шаги, которые разработчики предпринимают для обеспечения безопасности смарт-контрактов.

Разработчики, которые заботятся о безопасности смарт-контрактов, используют различные методы на этапе разработки для снижения рисков, такие как:

  1. Читать между строк кода и думать с точки зрения злоумышленника. 
  2. Составление блок-схемы для анализа потока информации и поиска точек, в которых существуют резервные возможности; следовательно, наличие графического представления может решить многие логические проблемы. 
  3. Использование инструментов безопасности смарт-контрактов, некоторые из которых мы упоминали ранее. 

Некоторые ограничения инструментов безопасности смарт-контрактов нетривиальны, так как после развертывания контракта вам нужно написать конструктор, а затем протестировать контракт. Кроме того, ни один инструмент не может быть интегрирован в процесс разработки; вам нужно написать код в IDE, а затем использовать другой инструмент для его тестирования. Разработчикам будет проще протестировать код на компиляторе, чем использовать какой-либо другой инструмент. 

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

Заключение

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

14 Просмотры

Отметка времени:

Больше от Квиллхэш