BTC 78615.3$
ETH 2473.24$
Tether (USDT) 1$
Toncoin (TON) 0$
telegram vk
telegram vk Х
Russian English

Все об аудите смарт-контрактов

Дата публикации: 15.11.2024
7234
Поделись с друзьями!
1

Основные советы по проведению эффективного и тщательного аудита Ethereum

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

2

Документация: понимание потока

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

  • Обзор протокола: для начала, разберитесь в сути протокола. Это децентрализованная биржа (DEX), кредитная платформа или, может быть, рынок NFT? Это поможет понять, где, скорее всего, будут большие риски.
  • Архитектурная схема: Схема покажет, как все взаимодействует, и поможет визуализировать происходящее. Это облегчает понимание того, куда утекают деньги и какие части протокола могут дать уязвимости.
  • Обзор ключевых контрактов: Документация обычно указывает на основные контракты и их функции. Рекомендуется составить их список, чтобы знать, на чем сосредоточить внимание при изучении кода
3

Определение основных контрактов

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

  • Управление стоимостью: Ищите контракты, которые управляют фондами. Это могут быть хранилища, стекинг пулы или резервы. Они являются главной целью для взломщиков
  • Контроль доступа: Затем следует проверить какие контракты управляют разрешениями или административными функциями. Если кто-то завладеет ими, он может нанести большой ущерб.
  • Proxy Contracts: Если протокол использует обновляемые контракты (что довольно распространено), рекомендуется обратить внимание на proxy contract. Они контролируют, как обновляются контракты, и  могут возникнуть неприятности если что-то пойдет не так.
4

Картографирование дерева зависимостей

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

  • Зависимости и взаимодействия: некоторые контракты зависят от других. Если начать от работы которых зависит работа остальных, вы будете в выигрышном положении. Составление этого плана (даже если это просто простой список) поможет отслеживать какой из контрактов от какого  зависит.
  • Наследование и интерфейсы: Иногда контракт наследует функции от другого или взаимодействует через интерфейсы. Уязвимости часто проникают через этот унаследованный код, поэтому стоит проверить его структуру
5

Сосредоточение на общественных и внешних функциях

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

  • Точки входа: Проверьте все публичные/внешние функции. Убедитесь, что  они  надлежащим образом контролируются. Это означает проверку надлежащей авторизация — чтобы убедиться, что только нужные люди могут вносить изменения.
  • Проблемы повторного входа: мониторьте уязвимости повторного входа. Они случаются, когда злоумышленник может повторно вызывать функцию до момента завершения первой функции. Хороший способ предотвратить это — следовать шаблону «проверки-эффекты-взаимодействия».
6

Анализ функций с высоким риском

Есть некоторые функции, которые просто по своей природе более рискованные — перевод, внесение или снятие средств. Именно их  нужно сделать приоритетными во время аудита.

  • Функции передачи: у функций передачи  должен быть надлежащий контроль доступа, непроверенной функцией передачи могут  легко воспользоваться.
  • Изменения состояния: изменения состояния (в основном, изменения способа хранения данных) должны происходить до внешних вызовов. Это другой способ предотвращения проблемы повторного входа
  • Оптимизация газа: высокие затраты на газ иногда могут приводить к сбою транзакций. Если в контракте есть дорогостоящие циклы, они могут быть