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

Меня зовут Егор, я достаточно старый (но недостаточно древний) фронтенд разработчик. У меня нет привычки писать публичные материалы, но этот случай заставил отойти от принципов даже меня. Статья-тревога для тех, кто пользуется ботом Ze-Post..

Контекст

Есть у меня хобби – смотреть как работают чужие проекты, чтобы улучшать собственные проекты. И особенно я люблю уникальные решения на новых площадках. И на глаза попал бот для управлениям каналами Ze-Post: это грубо говоря система с простейшим управлением, которая расширяет возможности управления каналами,и добавляет комментарии через стороннее веб-приложение.

Рынок решений для групп давно прижился в Telegram: есть сервисы типа ChatKeeperBot, Combot, GroupHelpBot и т.д., и у них миллионы активных пользователей по всему миру, которые платят реальные денежки, чтобы избавить свои проекты от спама, ввести геймификацию, статистику и море всего того, что не особо дают основная платформа (т.е. Телега).

В Max рынок совершенно новый, почему и мои глаза оказались на нём. Так вот, одна из основных фич нашего бота создание комментариев в каналах, чего ещё нет у самого Max.

Рандомный канал в Max – комментариев как видите нет
Рандомный канал в Max – комментариев как видите нет

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

Что за уязвимость?

Всё очень просто – из-за дыры в системе безопасности любой человек может отправить сообщения от лица любого пользователя в любом канале, куда привязан бот. Достаточно иметь немного знаний в IT (и знаний весьма посредственных, которые несложно нагуглить).

Чтобы доказать это, я взял аккаунт самого разработчика бота и владельца его канала – Сергея Zewix.

И с помощью браузера и сервиса для тестирования API я подготовил сообщение, которое придумал мой сынишка: “Я на солнышке лежу, я на солнышко гляжу”.

Сообщение моментально оказалось среди комментариев:

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

Как понимаете, мои примеры крайне безобидны и абсурдны, но смысл один – у сервиса огромная ДЫРА, и её нужно СРОЧНО исправить!!!

Лично я вспоминаю печальную историю с ботом Crosser в Telegram.
Это был очень популярный бот аналитики и управления каналами.

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

Думаю вы прекрасно понимаете, как это повлияло на дальнейшую работу и отношение к самому боту.
Думаю вы прекрасно понимаете, как это повлияло на дальнейшую работу и отношение к самому боту.

Как это работает?

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

 

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

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

Если что, документация доступна публично для всех.

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


Собственно, это вся проблема.
Она не сложно исправляется (и не возникла бы при внимательном прочтении техдокументации, которая у Max достаточно подробна и сразу на русском языке).

У Ze-Post достаточно большая аудитория: по их данным не менее 40.000 каналов с совокупной аудиторией в несколько миллионов человек, и в контексте проблемы цифра ну очень тревожная.

С ботом Ze-Post также связан ещё один бот: для отложенного постинга (точное название Отложка - Автопостинг и отчёты), это продукт того же разработчика, и он способен работать в связке с указанным выше продуктом.

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

Также у разработчика есть ряд продуктов VK, но это к теме уже не относится.

Попытка решить проблему без публичности

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

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

Я написал Сергею в лс, где кратко изложил проблему, и честно говоря думал, что он прочитал и принял меры (Max не мой основной мессенджер, и я успел забыть про историю с ботом). Но через пару дней зайдя в Max я удивился – сообщение даже не просматривали.


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

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

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

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

Поскольку никто меня не услышал, мне пришлось потратить время и написать эту статью. И крайне искренне надеюсь, она поможет решить проблему.

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

Второй важный фактор – ID бота, он же юзернейм.
Если вы видите @id7564124278945629_bot – это не есть хорошо, это значит что разработчик не прошёл должной верификации. У нормального бота будет нормальный красивый юзернейм, к примеру такой:

“@normalbot_bot


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


Удачи Вам и всех благ.