Привет, Хабр!

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

Мое «поле»:

Платформа Bug Bounty:

Standoff365 (АО «Позитив Текнолоджиз»)

Выбранный объект исследования:

мессенджер MAX (Экосистема VK, разработчик: ООО «Коммуникационная Платформа»)

Вкратце о себе:
Я — не хакер. Однако 20-летний стаж самообучения всему, что связано с компьютерами, сетями, программированием, безопасностью и сопутствующим вопросам — полагаю, дают мне по праву назвать себя «IT‑эрудитом». Я могу предметно поспорить на различные увлекательные темы с дипломированным специалистом имеющим бОльший опыт и знания, написать какую‑то поделку на разных ЯП, проанализировать и подправить чужой код, сгенерировать идею по оптимизации/юзабилити, ну и сабж — поискать уязвимости в чьем‑то ПО. То бишь — я «в теме». В чем не шарю сегодня — начинаю разбираться завтра, методом гугления, вопросов и ответов в профильных сообществах. Ввиду статуса «самоучка» — могу согрешить с терминологией, поэтому по ходу статьи прошу понять и простить мое возможное «просторечие» и «быдловатость»..)
Дополнительно хочу отметить, что главная моя цель в жизни — созидание, а не разрушение, посему моя заинтересованность в вопросе «как сломать?» направлена исключительно на «как защитить?».

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

Дополнительно отмечу, что:

  • данная публикация не является жалобой, а представляет собой анализ процесса взаимодействия с вендором и арбитражем в рамках публичной программы;

  • все описанные факты подтверждены перепиской, скриншотами и видео, а выводы сделаны на основе объективных событий, а не эмоций;

  • черновик был направлен на ознакомление в Standoff365 - возражений по существу и по части раскрытия уязвимостей не последовало;

  • никакие технические детали эксплуатации не раскрываются - только уровень, достаточный для оценки действий сторон;

С чем я столкнулся

Сначала я нашел первую уязвимость. Как положено — зарепортил на площадке.
От вендора без долгих раздумий с его стороны получил статус «Информативный».
Проанализировал отчет и уяснил свою первую ошибку: уязвимость была описана мной «абстрактно» и действительно выглядела в отчете просто как «информация о чем‑то..».

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

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

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

Что еще любопытно: несмотря на то, что вендор и арбитр сошлись во мнении «уязвимостью не считаем» — мой вопрос о раскрытии данного отчета получил отрицательный ответ (почему бы и нет, если это «не уязвимость»?), потому что «вендор оставляет за собой право..».

Следующий мой отчет содержал комплекс из трех разных (более серьезных) уязвимостей. Рассматривался вендором уже дольше (неделю) и...

«Дубль».

Аргументы вендора:

  • По одной уязвимости: ссылка на отчет другого багхантера, раскрывающего иной вектор с совершенно другим CWE.

  • По второй: скриншот внутреннего трекера с сомнительным заголовком, больше напоминающим «узелок на память», без каких‑либо деталей. Причём, под указанный заголовок можно было бы подвести 5–6 различных «похожих» уязвимостей.

  • По третьей уязвимости: просто «дубль»... Без объяснений.. Без аргументов.. (очевидно потому, что две других уязвимости по мнению вендора оказались «дублями»).

Оторопев от такого — открыл апелляцию в арбитраже.

К моему изумлению арбитр и в этом случае по итогу оказался «согласен с вендором», и несмотря на то, что:

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

  • озвучил вопросы о легитимности и силе «скрина из внутреннего трекера вендора с заголовком ни‑о-чем» (в положениях платформы явно указано, что признание уязвимости дубликатом может быть только в случае явно подтверждающих подробностей).

  • прямой вопрос о закрытии дубликатом уязвимости без каких‑либо доказательств (просто «за компанию» без какой‑либо дифференциации) -

позиция арбитража осталась «неизменной».

Более того — в процессе[!] обсуждения в данную ветку мне пришло любопытное письмо от руководства арбитража уязвимостей с «окончательным резюме»: «..арбитраж завершён, коммуникация по кейсу закрыта..» и «напутствием» в виде: «..настоятельно не рекомендуем разглашать какую‑либо информацию об отчетах без согласия вендора..» и «добивающей» цитатой из положений: «Участник не вправе разглашать какие‑либо сведения об Уязвимости, обнаруженной у Клиента, при отсутствии согласия Клиента на такое разглашение» (хотя в принципе о каком‑то «публичном разглашении» речи совершенно не шло).

Коллапс...

Подаю следующий отчет (по критичности — наиболее высокий).

«Отклонен». Аргумент вендора: «PoC не соответствует правилам».

Контраргументирую: «уязвимость воспроизводится и другими способами, не запрещенными правилами».

Вендор: «наша позиция неизменна»...

Что поделать.. Снова топаю в арбитраж..

Как вы думаете — какой ответ?)
Угадали: «мы согласны с позицией вендора» (день сурка, в общем)).

Показываю арбитру PoC, «не запрещенный правилами» и раскрывающий уязвимость — в ответ полная тишина.

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

В недоумении снова заглядываю в «правила программы» и.. Ха‑ха‑хах.. Вендор их «пофиксил» (ну хоть какой‑то «баг» я помог исправить и то хорошо), причём так, что пункты стали «безоговорочными»..

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

Патовая ситуация — согласитесь?

Сходил в официальный телеграм‑чат standoff365, задал вопрос:

Как быть, если вендор и арбитраж прописали «нет», а я считаю свои находки ценными и легитимными?

Ответ от «бывалых»: «никак, отдыхай, наслаждайся жизнью..».

Но я настойчив... Погуглил. Интернет выдал аналогичное резюме, так как права этичных хакеров в нашей стране почему‑то особо никем не регулируются...

В отличие от США или ЕС, где исследователь может обратиться в CERT, в суд или даже в СМИ, если вендор игнорирует критическую уязвимость — у нас нет ни закона, ни практики, ни защиты. В России отсутствует чёткий правовой механизм защиты этичных исследователей, что создаёт риски для национальной кибербезопасности.
Ты можешь потратить недели на PoC, юридические ссылки, видео — а тебе ответят: «Это дубль», «Это не наша проблема», «Арбитраж завершён».
И всё. Ты остаёшься один на один с системой, которая не даёт тебе права на защиту.

Данный статус‑кво позволяет легитимным площадкам и вендору легко манипулировать и «слать лесом» этичных хакеров, пригрозив «последствиями, вплоть до уголовной ответственности» (несмотря на соблюдение условий программы), что я и ощутил на собственной шкуре.

А ведь именно такие люди — последний щит перед тем, как уязвимость найдет реальный злоумышленник, который не будет читать «правила программы» (и это должно быть критично и особ��нно важно для государственных систем).

Сижу, размышляю на тему: «а что дальше?». У меня на руках уязы, в рассмотрении и признании которых отказано без технического обоснования (хорошо, что не сказали «гуляй мальчик, а то милицию на тебя вызовем»)).
Кстати говоря — все найденные мной уязвимости оказались потенциально нарушающими законы РФ.

И здесь меня осенило!

Возвращаюсь к переписке:

«..не рекомендуем разглашать какую‑либо информацию об отчетах..» (привожу дословно, и здесь наверное имелось ввиду «об уязвимостях„)“»

Перечитываю положения о программах:

«..Участник не вправе разглашать какие‑либо сведения об Уязвимости [да, точно — „уязвимости“], обнаруженной у Клиента, при отсутствии согласия Клиента на такое разглашение..»

И думаю, а как это понимать? «Серая зона» какая‑то выходит...
«какие‑либо», «совсем никакие?», «ни в коем случае?»..
(судя по формулировке, мне наверное нельзя даже писать всуе на Хабре: «я нашел уязу в MAX„))

А если, к примеру вендор написал в своем приложении функцию, тихо ворующую деньги или интим‑фото из смартфона пользователя — это нельзя разглашать?
Извините, — не согласен.“»

Я понимаю, что разглашение деталей широкой публике — да, это неэтично, некрасиво, опасно, уголовно‑наказуемо.

Но мне так кажется, что если взять, к примеру Роскомнадзор, ФСТЭК, Минцифры, Роспотребнадзор и другие аналогичные инстанции — вряд ли можно их назвать «широкой публикой».

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

Итог:

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

И мне пришла мысль (формирую концепцию): предложить «наверх» на законном уровне как‑то учесть подобные случаи и исключить их в корне, установив более высокую степень прозрачности, лояльности на подобных площадках и:

  • обязать платформы баг баунти внести в свои правила корректировки касательно разглашения («..не вправе разглашать никому, кроме контролирующих органов в случае нарушения законодательства..»),

  • дать понять багхантерам, что они имеют такое право (например, в процессе регистрации),

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

  • рекомендовать (а возможно даже «обязать и закрепить в правилах») платформам баг баунти — внести корректировки в «скрипты взаимодействия» и в целом тактику отношений с багхатерами:

(поясню на приёмах давления и уловок, через которые прошел сам):

  • «Мягкий бан» через молчание: игнорирование прямых вопросов с «да/нет»

  • Подмена понятий: например о фактическом CWE или конкретный случай: в переписке мне сказали: «не разглашайте сведения об отчётах», хотя в Положениях речь идёт только об «уязвимостях». Это прием «расширения» запрета, и он давит на неуверенного багхантера

  • Изменение правил постфактум: чтобы исключить мой отчёт и последующие аналогичные (несмотря на полемику «мы рассматриваем версию правил на день подачи отчета» — по факту и в конкретике слов вендора и арбитража читалась уже иная позиция)

  • Формальный «дубликат» без доказательств — просто чтобы закрыть тему,

  • Угроза баном и УК РФ за «разглашение», хотя я и не собирался раскрывать уязвимости широкой публике,

  • Передача шаблонного ответа от техлида через маркетолога — для создания иллюзии диалога.

  • Мягкое, но настойчивое убеждение меня в «ненужности» указания имен вендора и площадки, а также понуждение к раскрытию технических деталей уязвимостей (этого если честно совсем не понял) при рассмотрении данной статьи маркетологом Standoff365 на предмет нарушения правил (хотя я не просил «рекомендаций и указаний» по написанию данной статьи)

  • Фамильярное обращение на «ты» (очевидно взятое на вооружение для подчеркивания «мы такие большие, а ты такой маленький») — не думаю, что «зайдёт» каждому. Мне, в контексте спора по нерешённым вопросам — не зашло. Но, это конечно уже мелочи (хотя из подобных «мелочей» и складывается общий «пресс» для неуверенного в себе багхантера)

    NB: (Полагаю, что этот список далеко не полный. И (подчеркну) это вовсе не «список жалоб» а просто констатация фактов, которая возможна будет полезна другим багхантерам. Сам я не лыком шит — принял эти удары достойно, намотал на ус, сделал свои выводы)

Подчеркну, что всё это — не эмоции, а документированные практики, которые:

  • демотивируют исследователей,

  • подрывают доверие к bug bounty в РФ,

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

За сим, пожалуй, пока всё...

Всем «белым» желаю удачных исследований, встречной лояльности вендора и достойной мотивации за труд ;-)

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