Отчёт об уязвимости оценивают по одному критерию: может ли команда воспроизвести проблему по вашему описанию. Всё остальное вторично. Сообщение вида «в контракте есть дыра, пишите в личные сообщения» не принимается нигде, а подробный разбор с шагами воспроизведения и оценкой последствий рассматривается в приоритетном порядке даже от неизвестного исследователя.

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

Что обязательно включить

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

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

Схема из четырёх шагов: от воспроизведения в тестнете до отправки отчёта
Схема из четырёх шагов: от воспроизведения в тестнете до отправки отчёта

Структура отчёта

Раздел Что в нём
Краткое описание Суть проблемы в двух-трёх предложениях
Шаги воспроизведения Последовательность действий, приводящая к проблеме
Оценка последствий Что может потерять протокол или пользователи и в каком объёме
Доказательство Код, транзакция в тестовой сети, запись экрана

Куда отправлять

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

Если выделенного канала нет, пишите на официальный контакт с пометкой о характере сообщения. Детали передавайте только после подтверждения от команды.

Правила ответственного раскрытия

Стандартная практика предполагает, что вы сообщаете о проблеме, даёте команде разумный срок на исправление и публикуете детали только после устранения или по истечении согласованного периода. Нарушение этого порядка переводит исследование в другую категорию с совсем иными последствиями.

Чего делать нельзя

  • Эксплуатировать уязвимость на реальных средствах для доказательства
  • Публиковать детали до исправления или без согласования сроков
  • Требовать вознаграждение как условие раскрытия информации
  • Тестировать на основной сети, если возможна проверка в тестовой

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

Дубликаты и приоритет подачи

Вознаграждение получает тот, кто сообщил первым, и если проблему уже нашли до вас, отчёт закроют как дубликат, и это нормальная практика, а не несправедливость. Отсюда простое правило: не откладывайте отправку ради более красивого оформления.

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

Оценка критичности

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

Сроки и ожидания

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

Что делать при отказе

Команда может не согласиться с вашей оценкой критичности или счесть сценарий нереалистичным, и спорить стоит фактами: уточнить, какое именно условие признано невыполнимым, и показать, как оно достигается на практике.

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

Налоговая сторона вознаграждения

Полученная выплата является доходом и подлежит декларированию, при этом для российского резидента порядок зависит от формы выплаты и статуса плательщика, поэтому вопрос стоит прояснить до получения крупной суммы. Сохраняйте переписку и подтверждение операции как основание для расчёта.

Смежные темы разобраны у нас. Вот основные. Общий раздел — раздачи и активности. Шире — статьи про криптокошельки. Полезный отзыв разбирает материал как оставить полезный отзыв в сообществе, а чтение контракта — статья как читать данные смарт-контракта.

Вопросы и ответы

Что делать, если программы вознаграждений нет?

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

Как доказать находку без эксплуатации?

Развернуть копию контракта в тестовой сети и продемонстрировать проблему там, а это стандартная практика: результат идентичен, реальные средства не затронуты, а команда получает воспроизводимый пример. Ссылку на тестовую транзакцию прикладывают к отчёту.

Можно ли сообщить анонимно?

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

Вердикт

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

Контракты и операции проверяйте напрямую. Блокчейн-обозреватель Etherscan и репозитории проектов с описанием программ раскрытия дают исходный код и правила подачи отчётов.

Артём Васильев, автор Cryptium. Разбор раздач, активностей и сообществ. Больше материалов — в Telegram-канале t.me/cryptiumru.