Перед крупным переводом отчёт об аудите смарт-контракта читают с конца — с реестра находок. Там две графы, которые решают всё: уровень опасности и статус устранения. Находка со статусом «принято к сведению» означает, что уязвимость признана и оставлена как есть. Для мелкой суммы это терпимо, для крупной — нет. Порядок чтения такой: найти реестр, отобрать неустранённые находки высоких уровней, прочесть обоснование разработчика, сопоставить его со своей суммой.
Как выглядит схема со стороны жертвы
Проверка выглядит убедительно и занимает секунды. Человек открывает страницу проекта, видит слово «аудировано» и логотип известной компании, после чего подписывает перевод на сумму годового дохода. Отчёт он не открывал. Ни строки. В обращениях читателей это самая частая последовательность при крупных потерях.
Второй вариант — отчёт открыт, но прочитан выборочно. Внимание цепляется за итоговую фразу о том, что критических уязвимостей не обнаружено, и дальше чтение заканчивается. Между тем в реестре висят две находки высокого уровня со статусом «принято к сведению», а в пояснении разработчик написал, что исправление ломает совместимость и отложено.
Третий вариант — подмена предмета. Логотип аудитора стоит на сайте, но отчёт относится к другому контракту того же проекта: к токену, а не к хранилищу; к прежней версии, а не к текущей. Формально никто не обманул. Фактически проверенного кода вы не касаетесь.
Признаки, по которым распознаётся подмена
Начните с шапки. В ней должны стоять название аудируемого компонента, версия, дата начала и окончания работ, фамилии или идентификаторы аудиторов. Отчёт без даты — не отчёт.
Дальше реестр. Нормальный реестр содержит и исправленные, и неисправленные находки, а также находки низкого уровня: их наличие говорит о работе, а не о небрежности. Отчёт, в котором нет ни одной находки, вызывает больше вопросов, чем отчёт с двадцатью.
| Статус находки в реестре | Что он означает по существу | Как влияет на крупный перевод | Что проверить дополнительно |
|---|---|---|---|
| Исправлена, подтверждено повторной проверкой | Код изменён, аудитор проверил правку и зафиксировал результат | Не влияет при условии, что проверялась текущая версия кода | Совпадает ли версия из отчёта с той, что развёрнута в сети |
| Исправлена частично | Снижена вероятность или последствия, сама причина сохранена | Допустимо для небольших сумм, требует разбора для крупных | Какая часть сценария осталась рабочей и при каких условиях |
| Принята к сведению, изменений нет | Разработчик согласился с находкой и решил её не исправлять | Прямой риск: сценарий остаётся достижимым по описанию аудитора | Обоснование разработчика и наличие внешних ограничений вроде лимитов |
| Отклонена как вне предмета проверки | Аудитор считает, что находка относится к другому компоненту | Риск не снят, а перенесён: компонент остался непроверенным | Есть ли отдельный отчёт на тот компонент и какой у него срок |
Уровни опасности сопоставляют со своей суммой. Не с чужой. Находка среднего уровня, позволяющая заморозить средства на неопределённый срок, для долгого хранения опаснее критической, требующей редкого совпадения условий.
Проверка за 60 секунд: что открыть и на что смотреть
- Найдите сам файл отчёта, а не упоминание о нём. Отсутствие файла закрывает вопрос о крупном переводе.
- Откройте шапку: название компонента, версия, даты работ. Сверьте компонент с тем, куда идут ваши средства.
- Перейдите к реестру находок и отсортируйте его по уровню опасности. Читайте сверху вниз, без пропусков.
- Выпишите все находки со статусом «принята к сведению» и «исправлена частично». Это и есть остаточный риск. Ваш, не чужой.
- Прочтите обоснования разработчика по каждой выписанной находке. Отсутствие обоснования хуже неудобного обоснования.

Отдельно смотрят на то, что вы подписываете при входе. Окно подтверждения говорит о правах, которые получает контракт, и разбор о том, как распознать вредоносную подпись транзакции, показывает, какие формулировки несовместимы с крупной суммой.
Пошаговые действия, если деньги уже ушли
Порядок действий после потери на контракте отличается от порядка после кражи ключа. Ключ при вас, адрес рабочий, но средства ушли по механике самого контракта.
- Зафиксируйте состояние: идентификатор вашей операции, адрес контракта, номер блока, время в UTC, суммы.
- Сохраните копию отчёта об аудите и страницу проекта целиком. Содержимое сайта меняется в первые часы после инцидента.
- Отзовите выданные контракту разрешения на расход токенов. Это не возвращает списанное, но закрывает дальнейший доступ.
- Подайте заявление в орган внутренних дел. По статье 144 Уголовно-процессуального кодекса решение принимается в срок до трёх суток, с продлением до десяти, а при документальных проверках — до тридцати суток.
- Если инциденту предшествовал перевод с карты, уведомите банк. Признаки операции без добровольного согласия клиента описаны в аналитике Банка России по информационной безопасности.
Остаток на том же адресе оценивают отдельно и без спешки. Разбор о том, как проследить движение украденных средств и оценить остаточный риск, даёт схему расчёта, пригодную и для контрактных потерь.
Как закрыть дыру, чтобы не повторилось
Первое — правило разбивки суммы. Крупный перевод делят на пробный и основной: сначала минимальная сумма, проверка полного цикла с выводом, затем остальное. Задержка в сутки стоит дешевле любой находки из реестра.
Второе — собственный предел. Он касается неустранённых находок. Например: ни одной находки высокого уровня со статусом «принята к сведению» при сумме выше месячного дохода. Предел записывают заранее, пока доходность предложения не влияет на арифметику.
Третье — отдельный адрес под взаимодействие с контрактами, чтобы находка в чужом коде не достала до хранения; подход описан в разборе о том, как выделить отдельное устройство под криптооперации и настроить уведомления. Четвёртое — понимание структуры продукта, в который вы входите: материал о том, как работает структурный продукт SharkFin с защитой капитала, показывает, насколько условия выплаты зависят от кода и от эмитента одновременно.
Чек-лист
- Файл отчёта найден и открыт, а не упоминание об аудите на сайте
- Компонент и версия из шапки совпадают с тем, куда идут средства
- Даты начала и окончания работ зафиксированы
- Реестр находок отсортирован по уровню опасности
- Находки со статусами «принята к сведению» и «исправлена частично» выписаны
- Обоснования разработчика по каждой неустранённой находке прочитаны
- Собственный предел по неустранённым находкам определён до перевода
- Крупная сумма разбита на пробную и основную части
Материалы по теме:
- Как распознать вредоносную подпись транзакции — какие права вы отдаёте контракту при входе
- Как проследить движение украденных средств и оценить остаточный риск — расчёт после контрактной потери
- Как выделить отдельное устройство под криптооперации и настроить уведомления — отдельный контур для контрактов
- Как работает структурный продукт SharkFin с защитой капитала — зависимость выплаты от кода и эмитента
Частые вопросы
Что означает статус «принята к сведению»?
Аудитор нашёл уязвимость, разработчик с находкой согласился и решил её не исправлять. Причины бывают разумными: правка ломает совместимость, сценарий требует редких условий, риск закрыт организационно. Но сам сценарий остаётся достижимым, поэтому для крупной суммы эту строку читают вместе с обоснованием и считают остаточным риском.
Отчёт без находок — хороший знак?
Скорее настораживающий. Полноценная проверка почти всегда даёт находки низкого и информационного уровня: стиль кода, недостающие проверки входных данных, расхождения документации и реализации. Их отсутствие говорит либо об узких границах проверки, либо о поверхностной работе, и в обоих случаях требует уточнения.
Сколько аудитов достаточно перед крупным переводом?
Число отчётов значит меньше, чем их свежесть и совпадение с развёрнутым кодом. Два отчёта разных команд на текущую версию полезнее пяти отчётов на прежние версии. Главный вопрос всегда один: относится ли проверка к тому контракту, которому вы собираетесь дать права на свои средства.
Можно ли полагаться на оценку уровня опасности из отчёта?
Как на ориентир — да, как на приговор — нет. Уровень отражает риск для проекта в целом, а не для вашей ситуации. Находка, допускающая заморозку средств, в долгом хранении опаснее, чем в активной торговле, поэтому собственный пересчёт по своему сценарию использования обязателен.
Вердикт
Отчёт об аудите отвечает не на вопрос «безопасно ли», а на вопрос «что известно и что с этим сделали». Реестр находок с графой статуса показывает это за минуту, и дальше арифметика становится вашей: сопоставить неустранённые сценарии с суммой перевода. Пробный перевод перед основным остаётся самой дешёвой страховкой из существующих. Логотип аудитора на сайте проекта к ней отношения не имеет.
Разборы отчётов и предупреждения о подменённых компонентах публикуем в нашем Telegram-канале.
Обсуждение
Добавить комментарий