Читать отчёт об аудите смарт-контракта начинают не с перечня уязвимостей, а с границы проверки. В первую очередь смотрят три вещи: какой именно коммит исходного кода проверялся, совпадает ли он с кодом, развёрнутым по адресу, которым вы пользуетесь, и какой статус получила каждая находка — устранена или признана и оставлена. Отчёт о другом коммите к вашему контракту отношения не имеет.
Читатели обычно листают отчёт до таблицы находок. Там зелёные отметки. Там успокоительные слова. А граница проверки описана на первой странице, и именно она определяет, относится ли документ к тому контракту, которому вы собираетесь выдать разрешение на расходование токенов.
Как выглядит ситуация со стороны пользователя
Последовательность знакомая. Проект публикует ссылку на аудит, в карточке стоит имя известной компании, страница выглядит солидно. Пользователь открывает документ, видит, что критических замечаний нет, и подписывает разрешение.
Проблема одна. Проверка относилась к другой версии кода. Между датой отчёта и развёртыванием прошло время, контракт пересобрали, добавили функцию, сменили адрес реализации. Все три события законны, документируются и никак не отражаются в старом отчёте — он остаётся правдивым применительно к тому, что проверялся, и бесполезным применительно к тому, что развёрнуто.

Признаки, по которым распознаётся расхождение
| На что смотреть | Признак порядка | Признак расхождения | Чем проверяется |
|---|---|---|---|
| Граница области аудита | Перечислены файлы и указан хеш ревизии | Написано «контракты проекта» без уточнения | Первые страницы отчёта, раздел об области проверки |
| Соответствие развёрнутому коду | Хеш ревизии совпадает с верифицированным исходником | Исходник по адресу не опубликован либо отличается | Карточка контракта в обозревателе сети |
| Конструкция контракта | Логика неизменяема, администратора нет | Прокси с адресом реализации, который можно сменить | Значение слота реализации в карточке контракта |
| Статус находок | Каждая помечена как устранённая, с номером правки | Часть помечена как признанная и оставленная без изменений | Итоговая таблица отчёта и комментарии разработчика |
| Хронология | Дата отчёта позже даты последней правки кода | Развёртывание или обновление прошло после отчёта | История транзакций контракта в обозревателе |
| Что в область не входило | Прямо перечислено: оракулы, экономика, права администратора | Умолчание, создающее впечатление полной проверки | Раздел об ограничениях и допущениях |
Четвёртая строка требует пояснения, потому что путает чаще остальных. Статус «признано» означает, что разработчик согласился с замечанием и решил ничего не менять. Это законная позиция, у неё бывают разумные основания, и к устранению она отношения не имеет.
Проверка за 60 секунд: что открыть и на что смотреть
- Откройте первые страницы отчёта и найдите хеш проверенной ревизии вместе со списком файлов. Нет хеша — выводы отчёта привязать не к чему.
- Откройте карточку контракта в обозревателе целевой сети и посмотрите, опубликован ли исходный код и совпадает ли он с проверенной ревизией.
- Проверьте, не является ли контракт прокси: у таких конструкций логика лежит по отдельному адресу, который администратор вправе сменить.
- Пролистайте итоговую таблицу находок и отделите устранённые от признанных и оставленных. Считайте значимыми только первые.
- Сравните дату отчёта с датой последнего обновления контракта в истории транзакций. Обновление после отчёта обнуляет его применимость.
- Найдите раздел об ограничениях и прочитайте, что в область проверки не входило. Этот абзац информативнее перечня уязвимостей.
Эти сведения пригодятся при чтении формулировок. Отчёт, в котором заявлен охват только автоматическим анализом, и отчёт с разбором бизнес-логики — документы разного веса, хотя оба называются аудитом. Разница видна в разделе о методологии. Не в заголовке.
Пошаговые действия, если деньги уже ушли
- Зафиксируйте факты: адрес контракта, хеш транзакции, время, какой отчёт вы читали и какую его версию. Скриншоты сохраните отдельно от переписки.
- Проверьте действующие разрешения адреса и отзовите те, что выданы контракту, в той сети, где они выдавались. Отзыв в соседних сетях их не затрагивает.
- Переведите остаток на адрес, которому разрешений никогда не выдавалось, и дальше работайте с новым адресом.
- Обратитесь в правоохранительные органы с собранными материалами. Сведения о движении средств по открытым данным сети прилагаются к заявлению.
- Сверьте организацию, стоявшую за проектом, с перечнями регулятора: эти сведения пригодятся и вам, и другим пострадавшим.
Как работает такое прослеживание и чего от него ждать реалистично, разобрано отдельно: как проследить движение украденных средств и подготовиться к худшему сценарию. По отчёту Chainalysis о криптопреступности, опубликованному 8 января 2026 года, нелегальные адреса получили за 2025 год не менее 154 млрд долларов при росте на 162 % год к году, а доля нелегальных операций остаётся ниже 1 % общего оборота.
Как закрыть дыру, чтобы не повторилось
Правило первое. Разрешение выдаётся на сумму операции. Неограниченная величина не подходит. Неограниченное право превращает любую будущую уязвимость контракта в полный доступ к вашему балансу токена.
Правило второе — отдельный адрес под взаимодействие с контрактами. Основное хранение остаётся на адресе, который никогда ничего не подписывал, кроме переводов на себя. Такая раскладка превращает худший исход из потери сбережений в потерю рабочего остатка, и обходится она в один дополнительный перевод.
Правило третье касается чтения запросов на подпись. Текст запроса показывает, что именно вы разрешаете, и расхождение между обещанием страницы и содержанием запроса — главный признак подмены: об этом подробно в разборе, как распознать вредоносную подпись транзакции.
Правило четвёртое — проверять источник ссылки на отчёт. Документ берут с сайта аудитора или из его публичного хранилища, а не из сообщения в чате и не из карточки проекта, где файл мог быть отредактирован. Способы подмены контекста вокруг адресов описаны в материале о том, как распознать отравление истории адресов и подготовиться к худшему сценарию.
Чек-лист
- Хеш проверенной ревизии найден в отчёте и записан
- Исходный код по адресу контракта опубликован и сверен с ревизией
- Проверено, прокси это или неизменяемый контракт
- Адрес реализации у прокси сверен со слотом в карточке контракта
- Находки разделены на устранённые и признанные без изменений
- Дата отчёта сопоставлена с датой последнего обновления контракта
- Раздел об ограничениях прочитан целиком
- Разрешение выдано на сумму операции и с отдельного адреса
Материалы по теме:
- Как распознать вредоносную подпись транзакции — что читать в запросе на подпись перед подтверждением.
- Как распознать отравление истории адресов и подготовиться к худшему сценарию — подмена контекста вокруг адресов.
- Как проследить движение украденных средств и подготовиться к худшему сценарию — что даёт разбор по открытым данным.
- Как защитить аккаунт от схем с восстановлением доступа — смежный кластер о давлении через поддержку.
Частые вопросы
Аудит есть. Значит, контракту можно доверять?
Аудит сообщает, что определённый набор файлов на определённой ревизии прошёл определённый набор проверок. Спецификация EEA EthTrust формулирует это прямо: сертификация не означает отсутствия уязвимостей. Доверие строится на сверке ревизии с развёрнутым кодом, статусе находок и перечне того, что в проверку не входило.
Что означает находка со статусом «признано»?
Что разработчик согласился с замечанием и оставил код как есть. Причины бывают разумные: риск принят осознанно, изменение ломает совместимость, вероятность реализации мала. Но для читателя это открытая позиция, а не устранённая. Считать такие строки закрытыми нельзя, и именно их стоит разобрать внимательнее всего.
Как понять, что аудит относится к развёрнутому контракту?
Сверьте хеш ревизии из отчёта с исходным кодом, опубликованным в карточке контракта в обозревателе сети. Если код не опубликован, сверять нечего. Отдельно проверьте, не прокси ли это: у таких контрактов логика хранится по адресу реализации, и администратор вправе заменить её после аудита.
Отчёт выглядит подлинным, но пришёл ссылкой из чата. Это важно?
Важно. Документ берут с сайта аудитора или из его публичного хранилища, где опубликован подлинный файл. Присланный файл мог быть отредактирован: меняется хеш ревизии, исчезают строки с открытыми находками, правится дата. Проверить это иначе, чем сверкой с первоисточником, нельзя.
Нужно ли читать раздел об ограничениях?
Это самая полезная часть документа. Там перечислено, что в область проверки не входило: экономика протокола, поведение внешних источников цен, права администратора, инфраструктура вне цепи. Перечень уязвимостей говорит о найденном, а раздел об ограничениях — о том, где никто не искал вовсе.
Вердикт
Отчёт об аудите — документ о конкретной ревизии кода, и его ценность определяется тем, насколько эта ревизия совпадает с развёрнутой. Сверка занимает минуту и отвечает на главный вопрос раньше, чем вы доберётесь до таблицы находок. В обращениях читателей потери связаны не с ошибками аудиторов, а с отчётом о другой версии контракта. Читайте первую страницу и раздел об ограничениях.
Разборы и предупреждения о свежих схемах публикуем в Telegram-канале Cryptium.
Источники: отчёт Chainalysis о криптопреступности за 2025 год и список Банка России о признаках нелегальной деятельности на финансовом рынке.
Обсуждение
Добавить комментарий