Махи МАХа: 15 вещей с Хабра
Статья-пересказ . Адаптировал текст для непрограммистских читателей. Все подробности найдёте по словам в статье на Хабре у автора и в его Гитхабе.
Вначале - кратко: 15 пунктов, что автор нашел, действующее и потенциальное, заложенное в дистрибутиве. (За 5 дней +500 плюсов, 500 комментов.) Стёб автора в описании сгладил - фактически, все пункты переписал своими словами без искажения смысла, с опусканием кода и сложных деталей. Итак, что не объявленного умеет Мах:
● Отправляет на сервера VK названия скачанных приложений;
● В реальном времени следит за изменениями списка контактов;
● Блокировать работу и сделать апдейт со своего CDN, не из Google Play;
● Передать на NFC-терминал данные (например, имитировать пропуск или карту);
● Серверно включаемые фейковые чаты - вставить рекламную строчку в список;
Вы ещё не хотите поставить Мах на основной телефон и постоянно по нему общаться? Детали под катом. Подписывайтесь в Мах!
● Удаление сообщений из локальной базы на телефоне пуш-уведомлениями;
● Отключение TLS‑валидации (временно открыть клиент для MitM‑атаки) и RCE (для серверной инъекции JS);
● Mobile ID отдаёт по открытому HTTP — для авторизации сторонними приложениями без SMS от имени владельца телефона;
● Сбор реальных IP в обход VPN и запись с микрофона для аналитики;
● Интересуется доступом владельца к Google, AWS, Telegram, WhatsApp.
● Поисковая ML‑модель, слушающая ключевые слова, libEnhancementLibShared.so, 5.72 МБ;
● ZipSlip: закачивает файлы по URL с сервера;
● Провоцирование "сливания" отладочной информации с телефона, включая список контактов и до 32 МБ логов;
● Тихая «прослушка» звонков collect‑debug‑dump;
● Деанонимизация через Widevine DRM (инструмент для взломщиков и спецслужб).
Здесь наблюдаем продвижение технологий, которыми ранее пользовались хакеры и взломщики (вспомним бот-сети), а работа спецслужб не афишировалась. Сложив "А" и "Б", получаем представление о том, что имеем. (Кто там сказал, что взломщики могут затесаться?)
Также, надо учесть, что текст на Хабре написан "сенсибилизированным" инженером по безопасности. Он видит уязвимости. Разработчики могут объяснять применение хакерских инструментов для решения рутинных текущих задач, а не для злых умыслов руководства. Ответ автора статьи (ник zarazaexe) в ответ на разборы из коммента Хабра. https://habr.com/ru/articles/1036222/#comment_29987686 Этим код безопаснее не становится.
1. MAX знает, что вы используете VPN
Думаю, вы и так об этом слышали, но повторюсь. В пяти разных местах приложения (контакты, история звонков, новая беседа, открытие чата, экран звонка) MAX показывает плашку: «Отключите VPN. Чтобы пользоваться MAX». Сама детектирование тривиально — hasTransport(TRANSPORT_VPN) с 3 уровнями "назойливости". Сервер MAX в любой момент выкручивает уровень до 1 для нужного аккаунта. И тогда вы не сможете открыть чат, не закрыв VPN.
Мини‑приложения внутри MAX просто не работают через VPN.
2. MAX знает, сколько у вас людей в телефоне
ContentObserver подписан на корень адресной книги с notifyForDescendants=true. Любое изменение любой записи дёргает callback в реальном времени. Каждую сессию серверу отправляется общее число записей в вашей адресной книге. Просто как метрика. Даже если ни один из этих контактов не пользуется MAX.
3. Принудительное обновление
Серверный флаг hbg.a == 1 + строка-версия. Если совпало — клиент уходит в ForceUpdateScreen, который заменяет всё содержимое приложения. Входящие звонки не приходят. Сообщения не отправляются. На экране:
«Писать и звонить в этой версии не получится»
И кнопка «Обновить», ведущая на https://download.max.ru/#android?version=. APK с собственного CDN. Мимо Google Play.
В манифесте есть и неподставленный Gradle-placeholder ${REQUEST_INSTALL_PACKAGES}. Если кто-то соберёт релиз с этой переменной — MAX будет уметь устанавливать APK сам из себя. Один серверный флаг — и вся аудитория получит апдейт с серверов MAX. (Впрочем автор отмечает, что это - для случаев типа "Google Play заблокирован", "санкции".)
4. Мини-апп возвращает в NFC-терминал любой код.
То есть, произвольная мини-апа внутри MAX в рантайме может зарядить NFC-сервис своим payload, и при касании к терминалу телефон отдаст этот payload. Карта лояльности? Пропуск? Цифровой ID? Что угодно. AID _не банковский_, для оплаты нужен другой AID и category=payment. Но любой не‑платёжный сценарий — пожалуйста.
5. Fake-chats и fake-in-app-review
В списке 334 серверно‑управляемых флагов (PmsKey) есть очень показательные: fake-chats, fake-in-app-review, calls-fakeboss-incoming-call-enabled. В коде лежит класс FakeInAppReview. Это поддельный Pixel Perfect диалог «оцените приложение в Google Play». Оценка идет на сервера MAX. Серверно включаемый.
calls-fakeboss-incoming-call-enabled — режим «фальшивого начальника» в звонке. Сервер может пометить профиль как «принадлежит организации» или наоборот — «не принадлежит».
6. Удалить ваше сообщение пушем и подменить URL звонка.
Парсер FCM-push поддерживает тип MessageRemoved (ищет, парсит chatId; удаляет). Ещё интереснее тип TamtamSpam - по тапу на пуше делает переход на произвольный поданный с сервера адрес мини-апп или внешний сайт. Через outgoing-call-uri — подменять с сервера URI исходящего звонка (куда вы начнёте говорить).
7. Отключение TLS.
В списке PmsKey: net-ssl-session-validate — SSLSession.isValid. Если сервер MAX отправит false — клиент перестанет проверять TLS-сессию, чтобы временно открыть клиент для MitM-атаки (то самое, за что Телегу Казанскую исключили из AppSrore).
В компании с флагами log-sensitive: разрешить логи с чувствительными данными, user-debug-report: куда отсылать лог - образует комплект «дай всё, что у тебя в памяти, и не проверяй сертификат запрашивающего».
8. Mobile ID: ваш номер уходит по открытому HTTP.
Начиная с Android 9, cleartext-трафик запрещён по умолчанию, но шесть доменов в network_security_config.xml дистрибутива вынесены в исключения.
Зачем? Header Enrichment. Схема:
Ваш телефон в мобильной сети оператора делает HTTP-запрос (открытым текстом) на операторный эндпоинт.
Оператор на своём оборудовании дописывает в заголовки ваш MSISDN (номер телефона).
Сервер MAX видит заголовки → знает, кто вы.
Почему обязательно HTTP без TLS? Потому что в TLS оператор видит только SNI и IP назначения, до содержимого не дотягивается. А чтобы вписать заголовки — нужен полный доступ к содержимому. Архитектурное требование: открытый канал. Это намеренная регрессия безопасности ради удобства интеграции с операторами.
Точно такой же канал доступен мини‑приложениям внутри MAX через приватный JS‑bridge verify_mobile_id. Протокол: мини-апп отправляет MAX-у URL оператора, MAX делает HTTP-запрос со своей мобильной сети, возвращает мини-аппу headers целиком. Мини-апп парсит и узнаёт ваш номер. «Доверенная» мини‑апа (государственная, банк, рекламный партнёр) может молча получить ваш MSISDN.
9. Скрытый SDK для деанонимизации ru.trace_flow.dps (DPS — Digital Probe System)
При каждом выходе приложения из фона он стучится на 6 внешних IP-чекеров (yandex, ifconfig.me, ipify, AWS и так далее), чтобы узнать реальный публичный IP-адрес, даже если вы сидите через сплит-туннель VPN. Отправляет POST-запросом на левый домен trace-flow.ru/api/v1/report, которого нет в политике конфиденциальности и даже в Гугле.
10. Сервер спрашивает: «а ты дотягиваешься до Telegram?»
В марте 2026 пресса заметила, что MAX обращается к Google, AWS, Telegram, WhatsApp.
HostReachabilityChecker (см. на Хабре код). Список хостов приходит с сервера через PmsKey host-reachability. Не зашит в код - сервер MAX в момент решает, какие домены прозондировать. Пресс‑служба объяснила это «обеспечением работы звонков».
11. Аудио-шпион.
Это форк Google WebRTC, в который вставили модуль one-ann-audio-processing (ann = artificial neural network).
ASR: распознавание речи на устройстве,
KWS: слушание ключевых слов в реальном времени на сыром аудио,
Diarization: опознавание, кто когда говорит,
идентификация говорящего по голосу,
TFLite + XNNPACK + опциональный Android NNAPI (см. глоб. поиск),
ASR в групповых звонках включается _автоматически_. Каждое срабатывание KWS улетает в аналитику как событие. Текстуется по участникам: кто что сказал.
Запись звонков по умолчанию privacy="PUBLIC". Запись летит в чат «Избранное» инициатора. Без E2E, это значит — у сервера полный доступ.
(В версии 26.16.0 (вышла после моего основного анализа) KWS-стек удалён. BCResNetKWS, BCResNetExternalStateKWS, FeatureExtractor — все классы вычищены. Но инфраструктура «скачать ML‑модель по URL с сервера» сохранена — её просто переключили обслуживать только NoiseSuppression. Если решат вернуть KWS — всё готово.)
12. ZipSlip (7.0 до 9.8 по шкале CVSS).
Тот самый DownloadService, который качает файлы по URL с сервера — распаковывает ZIP без санитизации имён entry.
13. Сервер может прислать WebSocket‑сообщение с опкодом 2 и выкачать ваши логи и контакты.
14. Тихая «прослушка» звонков: collect-debug-dump
В кастомном WebRTC от VK/OK есть функция nativeSubmitDumpRequest.
Сервер через команды управления звонком может прислать JSON: {type: "collect-debug-dump", audio: true, duration: 2147483647}.
Телефон молча начинает писать сырой звук (raw PCM) с 6 точек пайплайна (включая чистый микрофон ДО шумоподавления и чистый звук собеседника).
Пишет в файлы на устройстве.
WorkManager (SampleUploadWorker) потом так же молча заливает эти аудиофайлы на apptracer.ru. UI «Идёт запись» не появляется.
15. Для деанонимизации (в скрытом SDK верификации подписи APK под названием сканера QR-кодов) используется ещё один механизм.
Приложение дергает MediaDrm Widevine UUID (edef8ba9-79d6-4ace-a3c8-27dcd51d21ed), хеширует его SHA-256 и использует как deviceId.
Этот идентификатор зашит в защищенную зону процессора (TEE). Он не сбрасывается при переустановке приложения, смене Google‑аккаунта или даже сбросе до заводских настроек. Чтобы человека отследить навсегда. Widevine DRM нарушает политику Google Play, буквально прямое нарушение.
16. WebApp RCE: серверная инъекция JS и снятие защиты экрана
Мини‑аппы в MAX работают не как песочницы:
Сервер может вызвать evaluatejаvascript() с любым кодом внутри любой запущенной мини‑апы.
Через JS‑bridge мини‑апа может вызвать WebAppSetupScreenCaptureBehavior. Это программно снимает с Android‑окна флаг FLAG_SECURE.
После этого любое другое приложение (или сам сервер через дамп экрана) может делать скриншоты ваших переписок.
JS‑bridge также позволяет вызвать WebAppOpenMaxLink, куда можно передать любой внутренний диплинк (например, автологин) вообще без валидации URL.
В конце от автора статьи (ник zarazaexe)
На эту статью мне ответили MAX
Давайте-ка я разберу их аргументы
МАХ не следит за юзерами
М.... Есть что добавить?
не имеет тех возможности для прослушки звонков
А в в реверснутом APK наверное СШАский jadx специально добавил в код прослушку...
Управление NFC... для Цифрового ID
А зачем оно мини апам ( без попапа )?
Информация об IP.... для работы звонков
Вот тут-то сразу видно, что ответ им сгенерила нейронка, думаю, те, кто знают разницу про SFU и TURN / STURN, всё и так поняли.
Все данные пользователей... защищены
Подумаешь нету E2E, ВК взламывали всего-то 6 раз, с кем не бывает)
А теперь вопрос лично к MAX, ребят зачем использовать Widevine в целях которые официально запрещены Google? это прямое нарушение их политик, вас же просто удалят из Google Play.
Комментарий автора:
Таким богатым функциям для 100-миллионной, технически глупой на 99% аудитории, позавидуют любые хакеры и злоумышленники. Но напомню, им это никто не отдаст - это же официальное единственное пока приложения для чатов и белых списков. Хотите принять защиту? Установите Мах!
Главное
MAX обязательно ставится на каждый новый телефон в РФ. И его домен всегда в белом списке ТСПУ. это единственный мессенджер, который останется работать. Содержащий всё вышеперечисленное.
Как видим, Мах имеет богатые возможности быстрого и произвольного внесения изменений в бизнес-логику работы в реальном времени с сервера. Конечно, очень непроизводительно делать это всё отдельными программистами - вся кухня достойна работы дирижёра-ИИ, куда программисты Palantir ВК будут давать "распоряжения рыбака", а серверам остаётся подсекать наживку.
Хакеры считают, что "взломать сервера Макса - не проблема", чтобы отправить с них перечисленные запросы.
Кто интересовался сравнением с ТГ, zentner тут по-быстрому в комменте набросал сравнение в той же структуре, достойно отдельной статьи, хотя и не по исследованию с декомпиляцией, а известные погружённым в тему факты о ТГ.
20 вещей, которые вы бы не хотели знать про Telegram
В отличие от MAX, у Telegram клиент частично open-source (Android/iOS-клиенты на GitHub), а вот сервер закрыт полностью — это сразу ставит границу того, что вообще можно проверить. Ниже — 20 пунктов: что-то задокументировано официально, что-то найдено независимыми исследователями, что-то — публично известные инциденты. Все ссылки и подробности гуглятся за минуту. Под каждым — что это значит на практике.
Кратко, что не афишируется про Телеграм:
● По умолчанию никакого E2E — личные и групповые чаты лежат на серверах Дурова в открытом для самого Telegram виде; ● Серверная сторона — полностью закрытая, аудита нет ни одного независимого; ● Собственный криптопротокол MTProto, который криптографы критикуют с 2013 года; ● Номер телефона — обязателен, а значит привязан к конкретному человеку через оператора; ● Публичные каналы и группы серверу видны полностью, включая удалённые сообщения и историю до вашего входа; ● Юрисдикция компании менялась минимум четырежды (Россия → Берлин → Лондон → Дубай → ОАЭ), при этом серверы физически в разных странах;
А теперь подробнее.
1. По умолчанию переписка не шифруется end-to-end
Это самая важная вещь, которую массовый пользователь не знает. Обычные чаты, группы, каналы, «облачные» сообщения и медиа лежат на серверах Telegram в виде, доступном самому Telegram. E2E есть только в «Секретных чатах» — и только в личных, только на одном устройстве, без облачной синхронизации.
В WhatsApp и Signal E2E — по умолчанию для всего. В Telegram — отдельная функция, которую большинство не включает. На главном экране даже не видно, секретный чат или нет.
2. Секретный чат недоступен в групповом формате
Группы и каналы — физически не могут быть E2E в архитектуре Telegram. Сервер обязан раздавать сообщения N участникам, синхронизировать историю, индексировать поиск. Это значит: что бы ни писали в любой группе на 5 или 200000 человек — сервер видит всё открытым текстом и хранит.
3. MTProto — собственный криптопротокол, написанный братом Дурова
Николай Дуров — математик, не криптограф. Криптографы (Matthew Green, Moxie Marlinspike и др.) с 2013 года указывают на странности: самописный режим IGE, нестандартное использование SHA, отказ от проверенных AEAD-схем. MTProto 2.0 часть проблем закрыл, но принцип «свой протокол вместо стандартного» остался. В индустрии это считается красным флагом.
4. Удалённые сообщения и аккаунты — серверу всё равно
Когда вы нажимаете «удалить для всех», клиент шлёт серверу команду удалить. Что сервер делает на самом деле — знает только Telegram. Кода нет, аудита нет. То же касается «самоуничтожающихся» медиа в обычных чатах: до момента уничтожения они лежали на сервере.
5. Cloud Password (двухфакторка) — не защищает переписку
Народ ставит «облачный пароль» и думает, что защитил аккаунт. На деле это пароль только на вход с нового устройства — переписка в облаке им не шифруется. Сам Telegram-сервер ваши сообщения по-прежнему видит открытыми. Cloud Password — это барьер от угона аккаунта по SIM-свопу, не более того. Многие путают его с «шифрованием облака», которого не существует.
Хуже: если вы потеряли Cloud Password и не настроили recovery email — аккаунт вместе со всей историей уходит на месяц в карантин и потом удаляется. То есть пароль защищает не вас, а ваш доступ; данные у Telegram остаются в любом случае.
6. Контакты улетают на сервер целиком
При включении синхронизации вся ваша адресная книга (имена + номера) уходит на серверы Telegram, чтобы найти «кто из ваших уже в Telegram». При этом номера ваших контактов, которые сами Telegram не используют, всё равно оказываются у Telegram. Они об этом честно пишут в политике, но галочка стоит по умолчанию.
7. Сервер видит, кто кому и когда пишет, даже в секретных чатах
E2E шифрует содержание, но не метаданные. Telegram-сервер видит: кто, кому, когда, как часто, какого размера сообщение, с какого IP, с какого устройства. Это сами по себе разведданные — социальный граф пользователя восстанавливается без чтения текстов.
8. Реальный IP виден серверу всегда
VPN внутри клиента не предусмотрен. MTProxy ничего не шифрует поверх MTProto — он только обфусцирует трафик для обхода блокировок, но сам прокси видит ваш IP и при желании сливает его дальше. Бесплатные публичные MTProxy — это в общем случае ханипот.
9. Юрисдикция расплывчатая и менялась несколько раз
Berlin → London → Dubai. По заявлению самой компании, серверы «распределены по разным юрисдикциям, чтобы никакая одна страна не могла потребовать данные». Это маркетинг: никакой публичной карты дата-центров нет, а арест Дурова во Франции в августе 2024 показал, что вопрос «по какому закону их можно прижать» вполне решаем.
10. После ареста Дурова политика передачи данных властям изменилась
В сентябре 2024 Telegram впервые публично подтвердил, что передаёт IP и номер телефона по «валидным юридическим запросам». До этого годами утверждалось обратное («ноль байт правительствам»). То есть либо раньше врали, либо теперь сдают — третьего варианта нет.
11. Публичные каналы и группы — это открытая база для парсинга
Любой бот может зайти в публичную группу/канал и выкачать всю историю до момента входа (в обычных мессенджерах при входе вы видите только новые сообщения). На этом построена целая индустрия OSINT-сервисов — пробив по никнейму, истории сообщений человека за годы, восстановление удалённых постов через зеркала. Не баг — фича архитектуры.
12. Удалённые сообщения часто остаются у читателей и в зеркалах
Связано с предыдущим. Удалили пост в канале? Зеркалирующий бот уже забрал копию. Существуют публичные сервисы (TGStat и др.), которые видят удалённое. Для пользователя это означает: ничего из написанного публично в Telegram не удаляется по-настоящему.
13. Боты, мини-приложения и WebApp получают идентификатор и инициируют HTTP-запросы
Bot API и WebApp API передают в мини-приложение подписанный сервером Telegram блок initData с user.id, first_name, username, language_code, hash. Дальше мини-апа делает свои запросы со своих серверов. Telegram не контролирует, что эта мини-апа делает с вашими данными и куда отправляет. Случаев слива через мини-апы (особенно tap-to-earn и крипто-сервисы) — десятки.
14. Премиум, Stars, TON, NFT — пользователь становится крипто-кошельком, который трассируется
Telegram плотно сросся с блокчейном TON: подарки, никнеймы, номера, Stars. Каждая такая транзакция — публичная запись в блокчейне, привязанная к вашему Telegram-аккаунту. Кто-то один раз купил подарочный никнейм через TON-кошелёк — и теперь его аккаунт связан с кошельком, а кошелёк — со всей его крипто-активностью, навсегда.
15. «Просмотр текущих сессий» показывает не всё
Если злоумышленник украл auth_key (а такое было — см. кейсы FireScam, фейковый «Telega», кражи через десктопный клиент с симлинками в 2024), он создаёт полноценную сессию. Она видна в списке устройств — но только если вы туда заглянете и опознаете её. Чужая сессия может неделями жить в списке как «Linux Desktop» и никто не заметит.
16. Десктопный клиент годами имел дыры с локальным хранением ключей
Telegram Desktop хранит auth-данные в локальной папке. До 2024 года в Windows-версии работал [CVE-2024-37305 и серия похожих] — символьные ссылки и автозапуск через подсунутый файл. Решение «не открывайте подозрительные файлы» — это не безопасность, это перекладывание ответственности на пользователя. WhatsApp и Signal такие схемы закрывали жёстче и раньше.
17. Запись звонков и групповых видеозвонков — E2E с оговорками
Голосовые звонки 1-на-1 — E2E, тут честно. Групповые звонки и видео — нет, по той же причине, что и группы: сервер раздаёт стрим участникам и физически находится посередине. Маркировка в интерфейсе про это умалчивает.
18. Геолокация в «Людях рядом», live-локациях и геочатах
Включаете «Люди рядом» — ваш приблизительный геоположение уходит на сервер и показывается чужим людям. Существуют десятки публичных скриптов, которые триангулируют точное положение пользователя через несколько запросов с разных точек (классическая трилатерация по показаниям расстояния). Telegram эту атаку закрывает раз в пару лет, но она регулярно возвращается.
19. Серверы хранят историю «вечно» — это маркетинговое преимущество, ставшее риском
«Облачные чаты с историей за все годы» означает буквально: все ваши переписки за 10 лет лежат у Telegram. Сменили номер, телефон, страну — история приехала с вами. И к этой истории имеют доступ: сам Telegram, любой, кто получит auth_key, и любой, кому Telegram её отдаст по запросу.
20. Главное
Telegram — это облачный сервис с чатами, а не E2E-мессенджер. У него великолепный продукт (скорость, каналы, боты, мини-апы), но цена этого — централизованное хранилище всей переписки на закрытых серверах одной компании, с закрытым серверным кодом, расплывчатой юрисдикцией и обязательной привязкой к номеру телефона.
Если MAX — это «силовая структура с мессенджером сверху», то Telegram — это рекламно-крипто-медийная платформа с мессенджером сверху. Угроза другого профиля, но это не «безопаснее по умолчанию» — это просто «другие риски».
Что важно отметить честно: в отличие от ситуации с MAX, где у автора Хабра был свежий декомпил и конкретные имена классов/флагов в коде, по Telegram нет одного аналогичного декомпил-исследования с такой же фактурой. Большая часть пунктов выше — это архитектурные свойства (которые сам Telegram не скрывает, но и не выпячивает) плюс публично известные инциденты.
Источник
Новостной сайт E-News.su | E-News.pro. Используя материалы, размещайте обратную ссылку.
Оказать финансовую помощь сайту E-News.su | E-News.pro
Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter (не выделяйте 1 знак)










