Аудит смарт-контракта: ручной разбор логики, тесты и отчёт с исправлениями
Аудит не ставит печать «безопасно». Он находит то, что успели найти за отведённое время, и честно описывает, что осталось за рамками. Проверим ваш контракт вручную и тестами, разложим находки по уровням риска и проверим исправления.
от 39 900 ₽
стоимость пакетов
2–3 недели
срок типового проекта
3
отраслевых модуля в калькуляторе
Перед проверкой фиксируем объём: конкретный коммит, список файлов, используемые библиотеки и предположения о внешних контрактах. Без этого отчёт быстро устаревает, ведь любой новый коммит меняет картину. Также просим описание того, как контракт должен работать. Большая часть серьёзных находок — не опечатки, а расхождения между задуманной механикой и тем, что на самом деле записано в коде.
Работа идёт в несколько проходов. Автоматические анализаторы находят известные шаблоны ошибок, но дают много ложных срабатываний и не понимают бизнес-логику. Ручной разбор проходит по каждой функции, изменяющей состояние: кто может её вызвать, что будет при повторном вызове, при нулевой сумме, при чужом токене со странным поведением. Для ключевых свойств пишем инвариантные тесты, которые фаззер пытается нарушить.
Наша проверка — внутренний аудит студии, полезный перед запуском небольшого проекта или как подготовка к внешнему аудиту. Если в контракте будут храниться значительные средства пользователей, рекомендуем дополнительно независимую аудиторскую команду; через партнёров организуем и это. Ни одна проверка не доказывает отсутствие уязвимостей, поэтому в отчёте отдельно описываем, какие меры ограничат ущерб.
Кто что делает во время аудита
Заказчик
Замораживает коммит, даёт описание механики и отвечает на вопросы о задуманном поведении.
Ведущий аудитор
Строит модель угроз, разбирает логику вручную и отвечает за итоговые формулировки отчёта.
Второй инженер
Независимо проходит критичные функции и пишет инвариантные тесты, чтобы не опираться на одну точку зрения.
Разработчики заказчика
Вносят исправления отдельными коммитами, чтобы каждую правку можно было проверить.
Классы ошибок и защитные приёмы
Описываем концептуально: что проверяем и как это закрывается в коде.
| Класс | В чём суть | Как защищаются |
|---|---|---|
| Повторный вход | Внешний вызов происходит до обновления состояния | Порядок «проверки — изменения — взаимодействия», защита ReentrancyGuard |
| Права доступа | Административная функция доступна не тому адресу | Явные роли, мультиподпись, тесты вызовов без прав |
| Манипуляция оракулом | Цена берётся из источника, который легко сдвинуть одной сделкой | Усреднённые цены, несколько источников, проверка свежести |
| Повтор подписи | Одна подпись принимается несколько раз или в другой сети | Счётчик nonce, идентификатор сети и домен EIP-712 |
| Нестандартные токены | Токен с комиссией или без возвращаемого значения ломает учёт | SafeERC20, сверка фактически полученной суммы |
Калькулятор
Аудит смарт-контракта — расчёт стоимости
Отраслевые модули уже отмечены. Уберите лишнее или добавьте нужное — сумма в счёте будет та же, что в смете.
Выберите пакет
Добавьте нужное
Ваша смета
Стоимость работ
57 800 ₽
Срок: 2–3 недели
Счёт сейчас: 28 900 ₽ — предоплата 50%, остаток после приёмки
Без регистрации. Счёт и анкета придут на почту сразу. Гарантия 3 месяца после запуска.
Что передать до начала проверки
Чем полнее пакет, тем больше времени уходит на поиск ошибок, а не на выяснение замысла.
- Ссылку на репозиторий и номер коммита.
- Описание механики и ролей.
- Существующие тесты и инструкции по запуску.
- Список внешних контрактов и оракулов.
- Известные компромиссы, которые вы сознательно приняли.
- Сеть и планируемую дату развёртывания.
Процесс
Порядок работ
- 1
Спецификация
Описываем механику, роли, лимиты и то, что запрещено менять после запуска.
- 2
Архитектура
Сеть, стандарты, схема обновления, кто держит ключи администратора.
- 3
Код и тесты
Контракты на проверенных библиотеках, тесты граничных случаев и инвариантов.
- 4
Тестовая сеть
Вы проверяете сценарии своими кошельками до выхода в основную сеть.
- 5
Запуск
Деплой, верификация исходников, передача прав на мультиподпись.
- 6
Сопровождение
Мониторинг, разбор обращений пользователей, обновления по процедуре.
Вопросы и ответы
Вопросы об аудите смарт-контрактов
После аудита контракт точно безопасен?
Нет. Аудит уменьшает число ошибок, но не доказывает их отсутствие. Проверка ограничена временем, объёмом и предположениями о внешних системах. Поэтому кроме исправлений советуем лимиты, паузу на мультиподписи и мониторинг: они ограничивают последствия той ошибки, которую никто не заметил.
Чем ваш аудит отличается от внешнего?
Внутренний аудит студии полезен для небольших проектов и как подготовка: после него внешние аудиторы тратят время на сложные вопросы, а не на очевидные замечания. Для проектов, где хранятся крупные суммы пользователей, независимая проверка сторонней командой даёт больше доверия, и мы её рекомендуем.
Проверяете чужие развёрнутые контракты?
Проверяем код, который вы разрабатываете или которым владеете, либо контракты, с которыми ваш продукт собирается взаимодействовать, для оценки рисков. Поиск уязвимостей в чужих протоколах с целью атаки и составление эксплойтов мы не делаем.
Что будет в отчёте?
Объём проверки с указанием коммита, описание каждой находки с уровнем риска, местом в коде, последствиями и рекомендацией, а также раздел о том, что проверено не было. После исправлений обновляем статус: исправлено, частично исправлено или принято заказчиком как известный риск.
Источники и проверка сведений
Смотрите также
Похожие решения
Спросите что угодно о заказе: сколько будет стоить ваш проект, что входит в пакет, как платить, какие документы получите.