Привет, Хабр!
Не так давно я влился в компанию «белых хакеров», и несмотря на то, что считаю себя в данной области «новичком» - за определённый период всё же почерпнул некоторый опыт, которым хочу поделиться с другими новичками, и, возможно получить какую‑то рецензию от «бывалых» на свою статью (кстати сказать - тоже первую).
Мое «поле»:
Платформа Bug Bounty: | Standoff365 (АО «Позитив Текнолоджиз») |
Выбранный объект исследования: | мессенджер MAX (Экосистема VK, разработчик: ООО «Коммуникационная Платформа») |
Вкратце о себе:
Я - не хакер. Однако 20-летний стаж самообучения всему, что связано с компьютерами, сетями, программированием, безопасностью и сопутствующим вопросам - полагаю, дают мне по праву назвать себя «IT‑эрудитом». Я могу предметно поспорить на различные увлекательные темы с дипломированным специалистом имеющим бОльший опыт и знания, написать какую‑то поделку на разных ЯП, проанализировать и подправить чужой код, сгенерировать идею по оптимизации/юзабилити, ну и сабж - поискать уязвимости в чьем‑то ПО. То бишь - я «в теме». В чем не шарю сегодня - начинаю разбираться завтра, методом гугления, вопросов и ответов в профильных сообществах. Ввиду статуса «самоучка» - могу согрешить с терминологией, поэтому по ходу статьи прошу понять и простить мое возможное «просторечие» и «быдловатость»..)
Дополнительно хочу отметить, что главная моя цель в жизни - созидание, а не разрушение, посему моя заинтересованность в вопросе «как сломать?» направлена исключительно на «как защитить?».
Прежде всего хочу сердечно поблагодарить арбитраж площадки Standoff365 и вендора VK за бесценный опыт: я познал не только сам багхантинг но и юриспруденцию - более-менее правильно научился пользоваться терминологией, мертвой хваткой цепляться к словам, расстановке запятых, пожалуй первый раз в жизни начал читать и анализировать правила и положения от корки до корки, наконец добрался до чтения статей законов.
Дополнительно отмечу, что:
данная публикация не является жалобой, а представляет собой анализ процесса взаимодействия с вендором и арбитражем в рамках публичной программы;
все описанные факты подтверждены перепиской, скриншотами и видео, а выводы сделаны на основе объективных событий, а не эмоций;
черновик был направлен на ознакомление в Standoff365 - возражений по существу и по части раскрытия уязвимостей не последовало;
никакие технические детали эксплуатации не раскрываются - только уровень, достаточный для оценки действий сторон;
С чем я столкнулся
Сначала я нашел первую уязвимость. Как положено - зарепортил на площадке.
От вендора без долгих раздумий с его стороны получил статус «Информативный».
Проанализировал отчет и уяснил свою первую ошибку: уязвимость была описана мной «абстрактно» и действительно выглядела в отчете просто как «информация о чем‑то..».
Сделал соответствующий вывод, работу над ошибками и принес новый отчет, уже с указанием конкретики, импакта, и... получил «дубль» на собственный же первый отчет.
Имея на руках обоснованную уязвимость и фактический отказ вендора в ее рассмотрении - обратился в арбитраж. Но, увы - и он оказался «полностью согласным с позицией вендора», несмотря на описание мной потенциальных угроз и указание пунктов ФЗ, которые нарушаются и к данной уязвимости имеют прямое отношение.
Не согласившись с обоими, я написал обращение в соответствующий регулятор с описанием ситуации (гипотетически «на кошках», так как разглашать детали «низя») и просьбой о разъяснении согласно закона. Пока жду ответ.
Что еще любопытно: несмотря на то, что вендор и арбитр сошлись во мнении «уязвимостью не считаем» - мой вопрос о раскрытии данного отчета получил отрицательный ответ (почему бы и нет, если это «не уязвимость»?), потому что «вендор оставляет за собой право..».
Следующий мой отчет содержал комплекс из трех разных (более серьезных) уязвимостей. Рассматривался вендором уже дольше (неделю) и...
«Дубль».
Аргументы вендора:
По одной уязвимости: ссылка на отчет другого багхантера, раскрывающего иной вектор с совершенно другим CWE.
upd 07.11.2025 - Как создавался "искусственный" дубликат
Здесь не хватает красного шрифта...:
В процессе разбора обстоятельств закрытия моего отчёта как "дубликата" я связался с автором первого отчета.Выяснилось следующее:
- его отчёт изначально был закрыт как "Информативный".
- в период рассмотрения моего отчёта он вдруг оказался "рабочим" и "восстановлен из корзины" со статусом "Низкий" (несмотря на то, что по своей критичности подпадал как минимум под "Средний" или даже "Высокий")То есть:
- [!] до подачи мной отчета эта проблема не вообще считалась уязвимостью.
- после подачи мной отчета - её внезапно признали и использовали исключительно для закрытия моего отчёта как "дубля" (несмотря на разность векторов, импакта и CWE, т.к. мои оказались объективно шире и критичнее).
- факт данной манипуляции со стороны вендора не смутил арбитраж, который наравне с ним видел комментарии, скрытые от моих глаз внутри системы...
По второй: скриншот внутреннего трекера с сомнительным заголовком, больше напоминающим «узелок на память», без каких‑либо деталей. Причём, под указанный заголовок можно было бы подвести 5–6 различных «похожих» уязвимостей.
По третьей уязвимости: просто «дубль»... Без объяснений.. Без аргументов.. (очевидно потому, что две других уязвимости по мнению вендора оказались «дублями»).
Оторопев от такого - открыл апелляцию в арбитраже.
К моему изумлению арбитр и в этом случае по итогу оказался «согласен с вендором», и несмотря на то, что:
я дал объективные и технически подтверждающие разность векторов и CWE в сравнении с отчетом другого багхантера аргументы, а контраргументы арбитра оказались несостоятельными и технически бессильными.
озвучил вопросы о легитимности и силе «скрина из внутреннего трекера вендора с заголовком ни‑о-чем» (в положениях платформы явно указано, что признание уязвимости дубликатом может быть только в случае явно подтверждающих подробностей).
прямой вопрос о закрытии дубликатом уязвимости без каких‑либо доказательств (просто «за компанию» без какой‑либо дифференциации) -
позиция арбитража осталась «неизменной».
Более того - в процессе[!] обсуждения в данную ветку мне пришло любопытное письмо от руководства арбитража уязвимостей с «окончательным резюме»: «..арбитраж завершён, коммуникация по кейсу закрыта..» и «напутствием» в виде: «..настоятельно не рекомендуем разглашать какую‑либо информацию об отчетах без согласия вендора..» и «добивающей» цитатой из положений: «Участник не вправе разглашать какие‑либо сведения об Уязвимости, обнаруженной у Клиента, при отсутствии согласия Клиента на такое разглашение» (хотя в принципе о каком‑то «публичном разглашении» речи совершенно не шло).
Коллапс...
Подаю следующий отчет (по критичности - наиболее высокий).
«Отклонен». Аргумент вендора: «PoC не соответствует правилам».
Контраргументирую: «уязвимость воспроизводится и другими способами, не запрещенными правилами».
Вендор: «наша позиция неизменна»...
Что поделать.. Снова топаю в арбитраж..
Как вы думаете, какой ответ?)
Угадали: «мы согласны с позицией вендора» (день сурка, в общем)).
Показываю арбитру PoC, «не запрещенный правилами» и раскрывающий уязвимость - в ответ полная тишина.
Возвращаюсь в отчет, задаю прямые вопросы вендору касательно самой уязвимости, где ответ предполагает «Да», «Нет» - в ответ «наша позиция неизменна» и полное уклонение от ответа по сути заданного вопроса.
В недоумении снова заглядываю в «правила программы» и.. Ха‑ха‑хах.. Вендор их «пофиксил» (ну хоть какой‑то «баг» я помог исправить и то хорошо), причём так, что пункты стали «безоговорочными»..
На указание данного факта - ответ вендора: «наша позиция неизменна» (та штош такое‑то!), ну а арбитраж данную ситуацию с изменением правил «на лету» по существу вообще никак не прокомментировал.
Понимаю, что изменения были внесены для исключения отчетов подобных моему в будущем, и я вправе требовать рассмотрения по правилам, действующим на день подачи отчета, но факт в том, что вся последующая полемика вендора и арбитража почему‑то оказалась строго соответствующей новым правилам.
Патовая ситуация - согласитесь?
Сходил в официальный телеграм‑чат standoff365, задал вопрос:
Как быть, если вендор и арбитраж прописали «нет», а я считаю свои находки ценными и легитимными?
Ответ от «бывалых»: «никак, отдыхай, наслаждайся жизнью..».
Но я настойчив... Погуглил. Интернет выдал аналогичное резюме, так как права этичных хакеров в нашей стране почему‑то особо никем не регулируются...
В отличие от США или ЕС, где исследователь может обратиться в CERT, в суд или даже в СМИ, если вендор игнорирует критическую уязвимость - у нас нет ни закона, ни практики, ни защиты. В России отсутствует чёткий правовой механизм защиты этичных исследователей, что создаёт риски для национальной кибербезопасности.
Ты можешь потратить недели на PoC, юридические ссылки, видео, а тебе ответят: «Это дубль», «Это не наша проблема», «Арбитраж завершён».
И всё. Ты остаёшься один на один с системой, которая не даёт тебе права на защиту.
Данный статус‑кво позволяет легитимным площадкам и вендору легко манипулировать и «слать лесом» этичных хакеров, пригрозив «последствиями, вплоть до уголовной ответственности» (несмотря на соблюдение условий программы), что я и ощутил на собственной шкуре.
А ведь именно такие люди - последний щит перед тем, как уязвимость найдет реальный злоумышленник, который не будет читать «правила программы» (и это должно быть критично и особенно важно для государственных систем).
Сижу, размышляю на тему: «а что дальше?». У меня на руках уязы, в рассмотрении и признании которых отказано без технического обоснования (хорошо, что не сказали «гуляй мальчик, а то милицию на тебя вызовем»)).
Кстати говоря - все найденные мной уязвимости оказались потенциально нарушающими законы РФ.
И здесь меня осенило!
Возвращаюсь к переписке:
«..не рекомендуем разглашать какую‑либо информацию об отчетах..» (привожу дословно, и здесь наверное имелось ввиду «об уязвимостях„)“»
Перечитываю положения о программах:
«..Участник не вправе разглашать какие‑либо сведения об Уязвимости [да, точно, "уязвимости"], обнаруженной у Клиента, при отсутствии согласия Клиента на такое разглашение..»
И думаю, а как это понимать? «Серая зона» какая‑то выходит...
«какие‑либо», «совсем никакие?», «ни в коем случае?»..
(судя по формулировке, мне наверное нельзя даже писать всуе на Хабре: «я нашел уязу в MAX»))
А если, к примеру вендор написал в своем приложении функцию, тихо ворующую деньги или интим‑фото из смартфона пользователя - это нельзя разглашать?
Извините, - не согласен.“»
Я понимаю, что разглашение деталей широкой публике - да, это неэтично, некрасиво, опасно, уголовно‑наказуемо.
Но мне так кажется, что если взять, к примеру Роскомнадзор, ФСТЭК, Минцифры, Роспотребнадзор и другие аналогичные инстанции - вряд ли можно их назвать «широкой публикой».
Сделал выводы, отправил обращения в уполномоченные органы, как это предусмотрено законом.
Итог:
Получив свой личный опыт исследователя в системе, где вендор и площадка могут игнорировать критические уязвимости без последствий, я задался дополнительной целью - добиться системных изменений: ввести прозрачные гарантии для исследователей, закрепить их право на обращение в регуляторы при нарушении закона, и сделать bug bounty в России не инструментом сокрытия рисков, а реальным щитом национальной цифровой безопасности.
И мне пришла мысль (формирую концепцию): предложить «наверх» на законном уровне как‑то учесть подобные случаи и исключить их в корне, установив более высокую степень прозрачности, лояльности на подобных площадках и:
обязать платформы баг баунти внести в свои правила корректировки касательно разглашения («..не вправе разглашать никому, кроме контролирующих органов в случае нарушения законодательства..»),
дать понять багхантерам, что они имеют такое право (например, в процессе регистрации),
обязать платформы в каждом отчете в интерфейсе добавить кнопку «сообщить о нарушении в госорган», для случаев, когда внутренний арбитраж исчерпан, но багхантер уверен в том, что прав и имеет на руках валидную подтвержденную уязвимость, нарушающую законодательство.
рекомендовать (а возможно даже «обязать и закрепить в правилах») платформам баг баунти - внести корректировки в «скрипты взаимодействия» и в целом тактику отношений с багхатерами:
(поясню на приёмах давления и уловок, через которые прошел сам):
«Мягкий бан» через молчание: игнорирование прямых вопросов с «да/нет»
Подмена понятий: например о фактическом CWE или конкретный случай: в переписке мне сказали: «не разглашайте сведения об отчётах», хотя в Положениях речь идёт только об «уязвимостях». Это прием «расширения» запрета, и он давит на неуверенного багхантера
Изменение правил постфактум: чтобы исключить мой отчёт и последующие аналогичные (несмотря на полемику «мы рассматриваем версию правил на день подачи отчета» - по факту и в конкретике слов вендора и арбитража читалась уже иная позиция)
Формальный «дубликат» без доказательств - просто чтобы закрыть тему,
Угроза баном и УК РФ за «разглашение», хотя я и не собирался раскрывать уязвимости широкой публике,
Передача шаблонного ответа от техлида через маркетолога - для создания иллюзии диалога.
Мягкое, но настойчивое убеждение меня в «ненужности» указания имен вендора и площадки, а также понуждение к раскрытию технических деталей уязвимостей (этого если честно совсем не понял) при рассмотрении данной статьи маркетологом Standoff365 на предмет нарушения правил (хотя я не просил «рекомендаций и указаний» по написанию данной статьи)
Фамильярное обращение на «ты» (очевидно взятое на вооружение для подчеркивания «мы такие большие, а ты такой маленький») - не думаю, что «зайдёт» каждому. Мне, в контексте спора по нерешённым вопросам - не зашло. Но, это конечно уже мелочи (хотя из подобных «мелочей» и складывается общий «пресс» для неуверенного в себе багхантера)
NB: (Полагаю, что этот список далеко не полный. И (подчеркну) это вовсе не «список жалоб» а просто констатация фактов, которая возможна будет полезна другим багхантерам. Сам я не лыком шит - принял эти удары достойно, намотал на ус, сделал свои выводы)
Подчеркну, что всё это - не эмоции, а документированные практики, которые:
демотивируют исследователей,
подрывают доверие к bug bounty в РФ,
создают риски для госсектора, потому что реальные уязвимости замалчиваются.
За сим, пожалуй, пока всё...
Всем «белым» желаю удачных исследований, встречной лояльности вендора и достойной мотивации за труд ;-)
Постскриптумы:
upd: 03.11.2025
Продолжение политики игнорирования в общении с техподдержкой MAX
После публикации мной данной статьи, я обнаружил очередную уязвимость, которую оформил в новом отчете вендору на площадке Standoff365.
Буквально через пару дней обнаружил 2 своих аккаунта "удаленными":

Что могу сказать о причинах... Их не было. По крайней мере - для полной и необратимой блокировки. Я не мошенник, не скамер, никаких противоправных действий с данными аккаунтами не выполнял, сами номера зарегистрированы на мой паспорт.
Аккаунты были добавлены обоюдно в контакты друг к другу, никаких других контактов нет и ни с кем не связывался, на каналы не подписан. При работе по выявлению уязвимостей не использовал никаких хаковых или иных агрессивных методов тестирования (собственно, и не умею даже, т.к. писал ранее - я не хакер). Также не юзал никаких модов - использовались исключительно легитимные клиенты (веб-браузеры Chrome, Firefox, Edge, MAX Desktop, MAX Android).
Потопал с данным вопросом в ТП Max:
Содержимое переписки с оператором










Что поразило:
Полная "секретность".
..вы только что мне обозначили нарушение правил. Дайте же "нарушенный" пункт и возможно мы сможем прийти к урегулированию, исчерпанием "нарушения" с моей стороны... Я ведь не какой-то злоумышленник или "арендатор симки", хотите паспорт покажу, адрес свой назову?
(могу предположить, что "зацепкой" послужили абстрактные имена аккаунтов "Иван Иванов", "Петр Петров", которые я назначил аккаунтам в целях удобства тестирования взаимодействия между ними и демонстрации вендору в отчетах, однако в п.4.x.x правил меня носом никто не ткнул, к тому же они просуществовали более месяца и были заблокированы одновременно. А еще в таком случае возникает вопрос: "как вы определили, что владелец не Иван Иванов или Петр Петров???. О том, что аккаунты участвовали в тестировании - в ТП доложил, но реакции не последовало)"Безапелляционность"
Неоднократное использование словосочетания "окончательное решение" явно направлено на предвосхищение и "отсечение" любых встречных вопросов. Однако, зная доподлинно, что я ничего не нарушал - встречные вопросы всё же имею.
Пользовательское соглашение MAX
Многие пункты вызывают вопросы. Но остановлюсь на этом:
10.1.2...>> Компания вправе в любое время без уведомления Пользователя и без объяснения причин прекратить настоящее Соглашение в одностороннем внесудебном порядке с немедленным прекращением доступа и возможности использовать Сервис и без возмещения каких-либо затрат, убытков или возврата полученного по Соглашению (если применимо), в том числе, но не исключительно, в случае:
принятия решения о прекращении предоставления Сервиса;
любого однократного нарушения Пользователем условий настоящего Соглашения <<
Т.е. получается, что пользователь не нарушая ничего может получить вечный бан и утерять свою привязку к Госуслугам, цифровой ID, связку с банками и другими критическими сервисами - без объяснения причин?
А что если мой аккаунт был каким-то образом взломан мошенниками? Я потерял все права на его восстановление..?
Извините. Не согласен...
Как минимум по причине отсутствия в этом здравого смысла и явного противоречия пользовательского соглашения MAX со статьями закона "О защите прав потребителей".
В моем случае могу сделать один вывод: блокировка явно предвзятая и "адресная" в рамках политики игнорирования и давления на "назойливого багхантера", т.к. 3-й аккаунт, который не светился в отчете (с аналогичным абстрактным именем) - оказался нетронут, а заблокированы почему-то именно 2 ранее участвовавших в демонстрации в отчете.
По данному факту готовлю новое обращение в Роспотребнадзор, с просьбой оценить действия команды VK и оценке пользовательского соглашения MAX на предмет противоречащих законам положений.
upd: 05.11.2025
И снова "совпадение" с изменением правил...
На этот раз - "Пользовательского соглашения MAX":
Аккурат 01.11.2025 (в 17:46:21 по Мск, т.е. - в процессе моей "беседы" и образовавшейся "паузы" с ТП) пользовательское соглашение MAX получило "апдейт":

What's new:
Раньше блокировка требовала факта нарушения.
Сейчас - достаточно "подозрения"Раньше соглашение не предусматривало возможность молчаливой блокировки.
Теперь прямо сказано: "уведомление может не направляться".Раньше пользователь мог ожидать объяснения (поскольку требовался факт нарушения).
Теперь объяснение не требуется даже формально - достаточно "подозрения".
Знают ли регуляторы о подобной "чехарде" в "национальном мессенджере" - попробую выяснить у них..
До новых встреч!
