Если вдруг вам негде провести код-ревью вашего проекта, присылайте код в программу Bug Bounty – там ваши наработки как минимум кто-нибудь посмотрит ???? 

Такой мем появился у нас в команде продуктовой безопасности Ozon после второго запуска Bug Bounty программы. Как и во многих шутках, в этой есть доля правды: нашу программу по поиску уязвимостей мы стараемся развивать так, чтобы каждый багхантер гарантированно получал адекватный ответ на свою заявку в разумные сроки.  

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


История появления программы Bug Bounty в Ozon – достаточно стандартная. Команда информационной безопасности хотела узнавать об уязвимостях и была готова за это платить.  

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

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

  • API для автоматизации получения отчётов;  

  • карточка отчёта с достаточным количеством информации: полями для прикрепления тикета из баг-трекера, указания уровня критичности бага в соответствии с Common Vulnerability Scoring System (CVSS), даты создания тикета;  

  • возможность группировки отчётов по статусам.  

Мы изучили возможности разных площадок, поговорили с коллегами из других компаний, которые развивали программы Bug Bounty, обсудили вопрос внутри – и выбрали площадку BI.ZONE. 

Это что касается предыстории. А теперь давайте посмотрим, как сейчас устроена программа Bug Bounty Ozon.  

Внутри чёрного ящика: статусы отчётов  

Уведомления о новых отчётах мы получаем по двум каналам: почтовая рассылка и через поллинг.  

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

Процесс обработки отчёта выглядит так: 

  • получаем отчёт;  

  • проводим первичный анализ: 

    • если решили, что информация об уязвимости требует активных действий:

      • заводим RISK-тикет;

      • присваиваем отчёту статус «Пройден первичный триаж»; 

      • обсуждаем отчёт на еженедельной встрече в четверг;

      • обновляем RISK-тикет: уточняем уровень опасности уязвимости;

      • назначаем размер выплаты багхантеру;

      • переводим отчёт в статус «Уязвимость подтверждена»;

      • багхантер получает вознаграждение;

    • активных действий не требуется:

      • если отчёт содержит информацию об уязвимости, которая была описана ранее другим исследователем или о которой стало известно в результате внутреннего аудита безопасности, то переводим его в статус «Дубликат». Отчеты с таким статусам не подлежат выплате, но не стоит расстраиваться, в нашей Bug Bounty программе на площадке BI.ZONE всего 2 отчета получили такой статус;

      • если отчёт содержит информацию не об уязвимости, а о валидной ошибке интерфейса, то переводим его в статус «Информационный»;

      • если отчёт содержит информацию о поведении сайта или приложения, которое является нормальным, то переводим отчёт в статус «Не является уязвимостью»;

      • если отчёт не содержит информации об уязвимости и иной полезной информации, помечаем его как «Спам».

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

Управляешь тем, что измеряешь: внутренние метрики процесса обработки отчётов

Чтобы обеспечить заветное «ваш отчёт кто-то посмотрит», на нашей стороне в процессе обработки заявок мы мониторим две ключевые метрики: 

  • Среднее время на первую реакцию – разница между моментом получения отчёта и временем нашего первого комментария;  

  • Среднее время триажа – разница между моментом получения отчёта и моментом его перевода в статус «Не является уязвимостью»/«Дубликат»/«Информационный»/«Спам» или моментом создания тикета на устранение уязвимости. 

Прямо сейчас среднее время первой реакции на отчёт составляет менее четырёх часов, а среднее время оценки триажа – менее суток. 

Эволюция процесса реагирования на отчёты  

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

Версия 1: как-нибудь само 

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

В итоге обнаружили: отчёт, который может взять в работу любой, не берёт никто.  

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

Версия 2: дежурный 

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

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

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

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

Кроме того, случались конфликты с другими событиями из рабочего календаря дежурного. 

Версия 3: дежурные по циклу 

Новая итерация процесса случилась во время переезда с HackerOne на BI.ZONE. Переход на новую площадку послужил поводом для того, чтобы пересмотреть подход к дежурству. Мы стали распределять отчёту с помощью алгоритма round-robin: все люди из группы продуктовой безопасности получают заявки по очереди. 

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

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

Перед отправкой отчёта: шесть быстрых советов для багхантеров 

Давайте рассмотрим не только то, что происходит после отправки отчёта, но и то, что происходит до. Есть несколько советов, с оглядкой на наш опыт работы с программой Bug Bounty.  

Совет 1: не пренебрегайте предварительной подготовкой  

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

Для этого есть специальные ресурсы: PortSwigger, Hack The Box, TryHackMe и другие.  

Совет 2: ознакомьтесь с существующими отчётами  

Прежде чем формировать свой отчёт, есть смысл заглянуть в уже существующие (например, в отчёты со статусом «Disclosed» на HackerOne, доступные для просмотра даже без авторизации). Это поможет решить проблему боязни белого листа, когда неочевидно, что и как писать в заявке. Открытые отчёты других исследователей можно и нужно использовать для самообучения.  

Изучая отчёты, можно обнаружить, что уязвимости были обработаны не совсем корректным образом, а значит, их можно использовать ещё раз. Это повод отправить новый отчёт.

Совет 3: читайте правила 

Суть программы Bug Bounty заключается в выплате вознаграждений за найденные уязвимости, но не за всякую уязвимость полагается выплата: что-то прямо сейчас находится в процессе тестирования, какие-то домены в принципе менее важны, чем другие. 

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

Совет 4: изучайте советы по багхантингу 

Несколько полезных ссылок от коллег, у которых в компаниях есть программа Bug Bounty:  

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

Совет 5: обращайте внимание на свой рейтинг 

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

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

Совет 6 (главный): пробуйте! 

Выплаты, рейтинг, возможность внести вклад в улучшение продуктов, которыми пользуешься сам, – важные аспекты участия в программе Bug Bounty, но есть и кое-что ещё.  

Багхантер до работы над составлением отчёта об уязвимости и после – немного разные люди. В процессе формирования отчёта вы иссследуете, агрегируете информацию, систематизируете её, строите гипотезы, проверяете их, экспериментируете.  

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

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

Программа Bug Bounty Ozon – вот тут. Заглядывайте! 

Комментарии (8)


  1. leodrak26
    26.04.2023 12:47

    Интересно - помню сам делал Bug Bounty платформу, но не дошёл до конца, так-как быстро появились конкуренты