Как оценить отчет об аудите смарт-контракта
Отчет об аудите смарт-контракта — не гарантия безопасности. Узнайте, как проверить охват, находки, исправления и репутацию аудитора, а также тревожные признаки поддельных аудитов.
Чтобы оценить отчет об аудите смарт-контракта, убедитесь, что он подлинный и опубликован самим аудитором, проверьте, что его охват включает реально развернутые контракты, прочитайте критические и высокие находки и выясните, исправлена ли каждая из них, а также отметьте, что аудит явно не охватывал. Аудит — это снимок конкретного кода, а не гарантия того, что проект безопасен или честен.
Проекты часто подают пометку «прошел аудит» как знак доверия. Одни аудиты тщательные и содержательные, другие узкие, устаревшие или поддельные. Если вы знаете, как читать отчет, вы увидите разницу примерно за пятнадцать минут.
Что такое аудит смарт-контракта
Аудит смарт-контракта — это проверка безопасности, в ходе которой специалисты читают код проекта, тестируют его и ищут уязвимости, такие как reentrancy, ошибки контроля доступа, математические ошибки и логические недочеты. Затем они публикуют отчет, где перечисляют найденное, оценивают серьезность каждой проблемы и описывают реакцию команды. По теме: Эксплойты смарт-контрактов.
Аудиты ценны, потому что смарт-контракты трудно изменить после развертывания, а хранят они нередко крупные суммы. Но аудиторы работают в условиях ограниченного времени, проверяют только то, что им передали, и могут пропустить тонкие проблемы. Многие взломанные протоколы проходили аудит.
Разделы типичного отчета об аудите
| Раздел | На что смотреть |
|---|---|
| Резюме | Название аудитора, проект, даты, общий вывод |
| Охват | Точные файлы, контракты, хеш коммита или проверенные развернутые адреса |
| Методология | Ручная проверка, автоматизированные инструменты, тестирование, формальная верификация |
| Находки | Каждая проблема с уровнем серьезности, описанием и рекомендацией |
| Статус | Исправлена ли каждая находка, принята к сведению или оспорена |
| Отказ от ответственности | Ограничения проверки |
Пошагово: как оценить отчет
1. Убедитесь, что отчет подлинный
Поддельные аудиты — известная мошенническая тактика. Ищите отчет на официальном сайте или в GitHub аудитора, переходя туда самостоятельно. Если аудитор никогда не слышал о проекте или отчет существует только в виде PDF на сайте проекта, считайте его непроверенным. В нашем руководстве о поддельных аудитах перечислены распространенные уловки.
2. Сверьте охват с тем, что развернуто
В отчете должен быть указан коммит кода или адреса контрактов. Проверьте в обозревателе блоков, что развернутые контракты совпадают. Частые пробелы:
- Аудит охватывал более раннюю версию, а код потом изменился.
- Проверялся только контракт токена, но не контракты стейкинга, хранилищ или мостов, где лежат средства пользователей.
- Контракты обновляемые, поэтому код могут позже заменить.
3. Сначала прочитайте серьезные находки
Переходите сразу к критическим и высоким проблемам. По каждой спросите себя:
- Отмечена ли она как устраненная и проверил ли аудитор исправление?
- Если она «принята к сведению», а не исправлена, чем это объясняет команда?
- Касается ли она прав администратора, например возможности выпускать токены, приостанавливать переводы или выводить средства?
Принятые к сведению проблемы централизации часто важнее для инвесторов, чем ошибки в коде. Владелец, способный выпускать неограниченное количество токенов, — это риск, даже если код работает идеально.
4. Проверьте даты
Отметьте, когда проводился аудит, и сравните это с датой развертывания и последующими обновлениями. Старый аудит часто обновляемого протокола мало что говорит о сегодняшнем коде.
5. Оцените аудитора
Обращайте внимание на аудиторов с публичной историей работы, подробными опубликованными отчетами и исследователями безопасности, названными по именам. Одностраничный отчет без подробностей от фирмы, которая проверяет сотни токенов в месяц, весит меньше.
6. Прочитайте отказ от ответственности и ограничения
В отказе от ответственности обычно сказано, что аудит не охватывает экономическую модель, внесетевые компоненты, оракулы, код фронтенда и будущие изменения. Именно в этих областях происходят многие реальные потери.
Как понимать уровни серьезности
Большинство аудиторов используют похожую шкалу, хотя определения у разных фирм различаются:
| Серьезность | Типичное значение | Насколько это должно вас беспокоить |
|---|---|---|
| Критическая | Возможна прямая потеря или кража средств | Должна быть исправлена до запуска; если не устранена — держитесь подальше |
| Высокая | Серьезная потеря средств или неработающие ключевые функции при определенных условиях | Должна быть исправлена; проверьте, что аудитор это подтвердил |
| Средняя | Проблемы в особых обстоятельствах или значительная централизация | Читайте внимательно, особенно находки о полномочиях администратора |
| Низкая | Мелкие проблемы с ограниченным влиянием | Обычно допустимо, если принято к сведению |
| Информационная | Качество кода, эффективность по газу, лучшие практики | Редко волнует пользователей |
Отчет с большим количеством находок — не обязательно плохая новость. Это может означать, что аудитор был тщательным, а команда исправила проблемы до запуска. Важно, насколько серьезно то, что осталось неустраненным, и как отреагировала команда. Команда, которая оспаривает каждую находку или молча игнорирует серьезные, многое говорит о своей культуре безопасности.
Тревожные признаки в отчетах об аудите
- Нет подробностей об охвате, хеша коммита или адресов контрактов.
- Критические проблемы помечены как «принятые к сведению» без исправления.
- Находки о правах владельца, которые проект преуменьшает.
- Отчет размещен только у проекта.
- Маркетинговые заявления вроде «100% безопасно» или «полностью защищено аудитом».
- Аудит датирован задолго до крупных изменений кода.
Чего аудит вам не скажет
Даже сильный аудит не отвечает на вопросы:
- Реальна ли команда и можно ли ей доверять — см. как проверить, реальна ли криптокоманда.
- Заблокирована ли ликвидность или ее могут вывести.
- Справедливы ли предложение токена и графики разблокировки.
- Может ли экономическая модель протокола не выдержать нагрузки.
Сочетайте аудит с другими проверками: публичной программой bug bounty, несколькими независимыми аудитами, временем работы без инцидентов и прозрачными правами администратора.
Итог
Отчет об аудите полезен как доказательство только тогда, когда он подлинный, актуальный и охватывает контракты, которыми вы действительно пользуетесь. Проверьте источник, сверьте охват, прочитайте серьезные находки и то, как их устранили, и обратите внимание на то, что осталось за рамками. Используйте его как одну из составляющих своего исследования, но никогда как доказательство безопасности проекта.
Частые вопросы
Означает ли аудит, что криптопроект безопасен?
Нет. Аудит — это проверка конкретного кода в конкретный момент конкретной командой. Он может пропустить ошибки, ничего не говорит о честности команды или токеномике и не охватывает код, измененный после проверки. Многие взломанные протоколы проходили аудит. Считайте аудит одним из доказательств, а не гарантией.
Как понять, что отчет об аудите настоящий?
Найдите отчет на собственном сайте или в официальном GitHub аудитора, а не только на сайте проекта. Убедитесь, что адреса контрактов или коммит кода в отчете совпадают с тем, что развернуто. Некоторые аудиторы позволяют проверить отчеты напрямую. PDF-файла, который существует только в каналах проекта, недостаточно.
Что означают уровни серьезности в аудите?
Обычно аудиторы классифицируют находки как критические, высокие, средние, низкие и информационные. Критические и высокие проблемы могут привести к потере средств или неработоспособности протокола. Важнее всего то, были ли эти серьезные находки исправлены и подтвердил ли аудитор исправление в повторной проверке.
Достаточно ли одного аудита?
Для крупных протоколов, хранящих значительные средства пользователей, один аудит часто считается минимумом. Несколько независимых аудитов, публичная программа bug bounty, формальная верификация ключевых компонентов и долгая история без инцидентов вместе дают гораздо более весомые доказательства, чем любой отдельный отчет.
