Время Читать: 5 минут
С тех пор, как DeFi начал стремительно расти, возникла новая волна атак на смарт-контракты, которые привели к потере сотен миллионов долларов. Из растущего количества взломов становится ясно, что безопасность имеет решающее значение для смарт-контрактов.
Большинство уязвимостей можно предотвратить на этапе разработки контрактов, если следовать лучшим практикам. Проекты DeFi иногда спешат выйти на рынок, ставя безопасность на второй план. Есть разница между разработчиками на ранней стадии и опытными разработчиками. Опытный разработчик знаком с передовыми методами обеспечения безопасности, инструментами и знаниями о распространенных уязвимостях и может выявлять проблемы безопасности на ранней стадии разработки.
Смарт-контракты — это цифровое представление договорных соглашений в коде. Выполнение этого кода проверяется и распространяется с помощью сетевых узлов в сети блокчейн.
В этой статье мы рассмотрим человеческий фактор, стоящий за безопасностью и конфиденциальностью смарт-контрактов, и проанализируем, почему разработчики до сих пор считаются «самым слабым звеном».
Что такое уязвимости смарт-контрактов
Поскольку смарт-контракты работают в распределенных сетях без разрешений, это вызывает уязвимости из-за сбоя при выполнении смарт-контракта. Поскольку средства заблокированы в этих контрактах, они становятся очень привлекательной целью для хакеров, и успешная атака может привести к тому, что хакеры убегут со средствами непосредственно из контрактов.
Некоторые распространенные уязвимости в смарт-контрактах на основе EVM включают: возвращение, целочисленное переполнение и неограниченный контроль доступа. Чтобы использовать контракт с повторным входом, делается вызов внешнего контракта; затем он вызывает повторный обратный вызов. Низкоуровневые операции, такие как «отправка», «перевод» и «вызов», вызывают тревогу, и это может привести к уязвимостям, если исключения не обрабатываются осторожно.
Инновации в области блокчейна постоянно развиваются, что приводит к недостаткам дизайна смарт-контрактов. Разработчикам, создающим децентрализованные приложения, приходится иметь дело с обновлениями на платформах, над которыми они работают. Таким образом, распространенные программные недостатки, такие как контроль доступа, неправильный расчет, состояние гонки и некоторые другие, могут усилиться на платформах блокчейна.
Инструменты безопасности смарт-контрактов
На разных уровнях жизненного цикла разработки смарт-контрактов были приняты различные методы для обеспечения и повышения безопасности смарт-контрактов.
Инструменты тестирования смарт-контрактов: Разработано несколько инструментов для анализа исходного кода контракта и сканирования известных проблем безопасности, таких как повторный вход, переполнение и т. д. Некоторые из наиболее широко используемых инструментов — это Oyente, Maian, MadMax и Vandal.
Среды разработки и тестирования: Truffle — популярная среда разработки смарт-контрактов. С его помощью разработчики могут писать модульные и интеграционные тесты. Hardhat — еще одна среда разработки, помогающая запускать тесты, проверять код на наличие ошибок и взаимодействовать со смарт-контрактами; он работает в сети разработки. Это упрощает использование плагинов для покрытия кода, измерения газа, используемого для модульного теста, автоматической проверки контрактов на Etherscan и т. д. Ремикс — еще один набор для разработчиков; он широко используется благодаря браузерной IDE, которая поддерживает тестирование, разработку и развертывание смарт-контрактов.
Аудит кода: Аудит смарт-контрактов помогает снизить риски, связанные с dAapp. Предпочтительно проводить аудит смарт-контрактов, когда контракты находятся на этапе тестирования. Некоторые инструменты, используемые для аудита Сурья, Мифриловыйи MythX. Хотя автоматизированного аудита недостаточно для снижения рисков, связанных с контрактами, рекомендуется проводить сторонние аудиты вручную от заслуживающей доверия фирмы, такой как QuillAudits. В ходе аудита уязвимости обнаруживаются тремя основными способами:
- Извлечение функций из вредоносного кода и выполнение семантического сопоставления исходного кода;
- Следуя математическому подходу к проверке полноты системы, здесь аудитор проверяет каждый возможный входной тест на соответствие всем потенциальным тестам, которые могут произойти;
- Создание графа потока управления с логическими единицами контракта, с помощью которого аудитор проходит все пути кода, чтобы проверить недостатки логического дизайна.
Безопасная разработка смарт-контрактов
Если мы внимательно посмотрим на недавние эксплойты смарт-контрактов, большее количество уязвимостей возникло из-за ошибок разработчиков. Следовательно, избегание лазеек в смарт-контрактах означает безопасную разработку смарт-контрактов с учетом пользователей в течение жизненного цикла разработки. Многие разработчики на ранних стадиях не считают безопасность основным фактором и не осведомлены о ресурсах и инструментах для обеспечения безопасности смарт-контрактов.
Инсайты по безопасности смарт-контрактов
Большинство разработчиков не считают безопасность главным приоритетом при разработке смарт-контрактов, потому что:
- Их просят сдать проект как можно скорее. Поэтому безопасность становится вторичной
- Иногда проекты разветвляются на другие популярные проекты
- Кто-то из команды проводит аудит
Кроме того, мы обычно слышим, как разработчики говорят, что Solidity имеет некоторые неотъемлемые ограничения в обеспечении безопасности. Он отличается от основного языка тем, что функции не определены явно. Существуют также трудности с выполнением правильных манипуляций со строками и массивами, поскольку в Solidity отсутствует прямая языковая/библиотекарная поддержка.
Шаги, которые разработчики предпринимают для обеспечения безопасности смарт-контрактов.
Разработчики, которые заботятся о безопасности смарт-контрактов, используют различные методы на этапе разработки для снижения рисков, такие как:
- Читать между строк кода и думать с точки зрения злоумышленника.
- Составление блок-схемы для анализа потока информации и поиска точек, в которых существуют резервные возможности; следовательно, наличие графического представления может решить многие логические проблемы.
- Использование инструментов безопасности смарт-контрактов, некоторые из которых мы упоминали ранее.
Некоторые ограничения инструментов безопасности смарт-контрактов нетривиальны, так как после развертывания контракта вам нужно написать конструктор, а затем протестировать контракт. Кроме того, ни один инструмент не может быть интегрирован в процесс разработки; вам нужно написать код в IDE, а затем использовать другой инструмент для его тестирования. Разработчикам будет проще протестировать код на компиляторе, чем использовать какой-либо другой инструмент.
Мы также видели, что разработчики, имеющие предварительные знания о смарт-контрактах и аудите, как правило, лучше проверяют код и лучше осведомлены о передовых методах обеспечения безопасности. Это также помогает избежать известных уязвимостей в контракте. Многие новые разработчики недооценивают безопасность и не считают ее приоритетом, потому что в основном развертывают свои проекты в тестовых сетях, где ошибки и лазейки в контрактах не имеют реального влияния.
Заключение
Восприятие и практика безопасности разработчиков смарт-контрактов в основном полагаются на внешний аудит для обеспечения безопасности их проектов. Поскольку они оценивают безопасность вручную и часто не имеют ресурсов и инструментов. В связи с недавним ростом числа проектов DeFi и связанных с ними атак на безопасность начинающим разработчикам необходимо заранее воспользоваться поддержкой инструментов для снижения рисков.
14 Просмотры
- SEO-контент и PR-распределение. Получите усиление сегодня.
- Платоблокчейн. Интеллект метавселенной Web3. Расширение знаний. Доступ здесь.
- Источник: https://blog.quillhash.com/2023/01/13/analysis-of-smart-contract-security-practices-by-developers/
- a
- О нас
- доступ
- принял
- После
- против
- соглашения
- Все
- анализ
- анализировать
- и
- Другой
- кроме
- Приложения
- подхода
- массив
- гайд
- помогает
- связанный
- Атакующий
- нападки
- привлекательный
- аудит
- аудит
- аудит
- Автоматизированный
- автоматически
- избегающий
- осведомленность
- , так как:
- становится
- за
- ЛУЧШЕЕ
- лучшие практики
- Лучшая
- между
- блокчейн
- Сеть блокирующих сетей
- Блокчейн пространство
- браузер
- ошибки
- Строительство
- призывают
- заботится
- нести
- проведение
- случаев
- Причины
- осторожно
- График
- контроль
- Очистить
- тесно
- код
- Общий
- состояние
- дирижирует
- Рассматривать
- считается
- контракт
- контрактов
- контроль
- чехол для варгана
- Создающий
- критической
- сделка
- децентрализованная
- Децентрализованные приложения
- Defi
- дефи проекты
- доставить
- развертывание
- развертывание
- Проект
- обнаруженный
- развитый
- Застройщик
- застройщиков
- развивающийся
- Развитие
- разница
- различный
- затруднения
- Интернет
- направлять
- непосредственно
- распределенный
- дело
- долларов
- в течение
- Рано
- ранняя стадия
- появившийся
- обеспечивать
- Окружающая среда
- средах
- и т.д
- Etherscan
- развивается
- Исследует
- выполнение
- опытные
- Эксплуатировать
- использует
- и, что лучший способ
- облегчает
- Ошибка
- Особенности
- цифры
- Фирма
- недостатки
- поток
- следовать
- следует
- после
- вилка
- Рамки
- от
- Функции
- средства
- ГАЗ
- график
- мотыга
- Хакеры
- происходить
- имеющий
- помощь
- помогает
- здесь
- Удар
- HTML
- HTTPS
- человек
- Сотни
- сотни миллионов
- определения
- Влияние
- in
- включают
- информация
- свойственный
- вход
- интегрированный
- интеграции.
- взаимодействующий
- Запускает
- вопросы
- IT
- Сохранить
- хранение
- знания
- известный
- Отсутствие
- язык
- больше
- вести
- ведущий
- уровни
- ЖИЗНЬЮ
- недостатки
- линий
- запертый
- посмотреть
- лазейки
- от
- сделанный
- Главная
- Mainstream
- Создание
- руководство
- вручную
- многих
- рынок
- согласование
- математический
- означает
- проводить измерение
- упомянутый
- методы
- может быть
- миллионы
- против
- ошибки
- смягчать
- БОЛЕЕ
- самых
- Необходимость
- сеть
- сетей
- Новые
- узлы
- новички
- номер
- произошло
- Операционный отдел
- Другое
- Другое
- перспектива
- фаза
- Платформы
- Платон
- Платон Интеллектуальные данные
- ПлатонДанные
- плагины
- пунктов
- Популярное
- возможности,
- возможное
- потенциал
- практиками
- предпочтительный
- Предварительный
- приоритет
- политикой конфиденциальности.
- процесс
- Проект
- проектов
- правильный
- Квиллхэш
- Гонки
- реальные
- последний
- уменьшить
- Связанный
- Ремикс
- представление
- Полезные ресурсы
- Итоги
- обзоре
- Рост
- повышение
- рисках,
- Run
- Бег
- сканирование
- закаленный
- Во-вторых
- безопасный
- безопасность
- несколько
- умный
- умный контракт
- Безопасность смарт-контрактов
- Смарт-контракты
- Software
- основательность
- РЕШАТЬ
- некоторые
- Источник
- исходный код
- Space
- Этап
- и политические лидеры
- По-прежнему
- Успешно
- такие
- достаточный
- suite
- поддержка
- Поддержка
- взять
- цель
- команда
- тестXNUMX
- Тестирование
- тестов
- Ассоциация
- их
- следовательно
- мышление
- сторонние
- три
- Через
- время
- в
- инструментом
- инструменты
- топ
- заслуживающий доверия
- Ед. изм
- единиц
- Updates
- использование
- пользователей
- обычно
- различный
- проверено
- проверить
- Уязвимости
- Wave
- способы
- , которые
- в то время как
- КТО
- широко
- будете
- работает
- записывать
- написать код
- Ты
- зефирнет