3235

Продолжение поста «Мессенджер MAX безопасен, но... смотря для каких задач!»6

Продолжение: а как можно сделать МАКС безопаснее? Можно ведь?


(мем смешной, ситуация страшная, но в целом можно лечить)

(мем смешной, ситуация страшная, но в целом можно лечить)

Все обнаруженные уязвимости и критичные технические детали были направлены команде MAX через официальную программу Bug Bounty на платформе Standoff 365 https://bugbounty.standoff365.com/programs/max. В статье намеренно опущены конкретные уязвимости и критические проблемы. Всё серьёзное — у разработчиков.

*** *** ***

После первого поста многим зашло, но некоторые написали примерно следующее: «Ну ты покритиковал, а что предлагаешь?».

Я посидел и подумал, а что я могу предложить? Можно ли сделать MAX реально безопасным для обычных людей, не ломая при этом то, что нужно государству?

Ответ: ДА можно.

Где-то это просто — буквально один компонент подключить. Где-то наивно и упирается в политику. Не хочу наговаривать на команды разработки современного РФ IT бизнеса, сделать можно... быстрее, а не за 2-3 года. Ладно, это отдельная тема для разговора.

Задача: МАКС должен быть безопасным, но при этом госорганы должны иметь доступ?


1. Зашифровать данные на устройстве

Решение существует и называется sqlcipher-android — https://github.com/sqlcipher/sqlcipher-android

Это шифрование базы данных, которое используется в индустрии уже много лет. Даже если кто-то скопирует файл базы, без этого конкретного телефона он бесполезен.

Мешает ли это госорганам? Нет. Сообщения на сервере остаются как были. СОРМ работает на серверной стороне, а не лезет в ваш телефон. Это защита от воров и мошенников, не от государства.

То же самое касается токенов авторизации и номера телефона, которые сейчас лежат в файлах без шифрования. Современный подход — Jetpack DataStore с шифрованием через Google Tink и хранением ключей в том же аппаратном модуле. Старый вариант (EncryptedSharedPreferences) уже признан устаревшим, но суть та же — данные на диске должны быть зашифрованы.

Я уверен, что разработчики MAX и сами это знают. Это не вопрос компетенции — скорее приоритетов. Но вот именно это стоило бы поднять в приоритете, потому что защищает от самых массовых угроз — вредоносных приложений (кражу телефона упоминать не стану, но тоже стоит, хотя кейс более редкий). Если мы конечно не хотим опять услышать очередную новость о СЛИВЕ данных в ближайшем будущем. (+ постараюсь не привязывать сюда политику - если вы понимаете о чём я).


2. Дать пользователю выбор: секретные чаты

Telegram сделал элегантный компромисс: обычные чаты доступны серверу (и, соответственно, по запросу — государству), а «секретные чаты» защищены сквозным шифрованием. Это по факту так работает. Тут можно бесконечно рассуждать "Телеграм точно сливает!" -- сливает? Не сливает? Доказано? Не доказано? По факту прямых пруфов нет. (именно речь про сквозняк).

MAX мог бы сделать так же. Обычные чаты — как сейчас, с транспортным шифрованием. Плюс опциональный режим «секретного чата» для тех, кому нужно обсудить что-то действительно приватное — медицинские вопросы, коммерческую тайну, личные переживания. -- ЭТО ДЕЙСТВИТЕЛЬНО станет достойным аргументом для внедрения MAX как государственного мессенджера на все уровни общества.

И тут самое интересное: MAX мог бы сделать свой протокол сквозного шифрования — полностью на российской криптографии. Вот, накидываю:

VKO ГОСТ Р 34.10 (RFC 7836) — для согласования общего секрета между собеседниками (протокол Диффи-Хеллмана на отечественных эллиптических кривых).

«Кузнечик» ГОСТ Р 34.12-2015 в режиме MGM — для шифрования сообщений с аутентификацией (256 бит, режим обеспечивает и конфиденциальность, и целостность).

«Стрибог» ГОСТ Р 34.11-2012 — для выработки ключей из общего секрета (KDF) и контроля целостности.

(простите, что длинно, но будет полезно для общего понимания)

Логика: при создании «секретного чата» телефоны собеседников генерируют эфемерные пары ключей, через VKO согласовывают общий секрет, из него через «Стрибог» выводят сессионные ключи, и дальше каждое сообщение шифруется «Кузнечиком» в режиме MGM. Для каждого сообщения — новый эфемерный ключ, чтобы компрометация одного ключа не раскрывала прошлые сообщения (так называемая «прямая секретность»). Плюс верификация собеседника через QR-код или числовой отпечаток — чтобы сервер не мог подменить ключи. В целом, можно сделать проще, без излишних усложнений и фантазий. Я не могу быть экспертом во всём.

Это не тривиальная задача — нужна грамотная криптографическая архитектура. Но все примитивы для этого существуют и сертифицированы. CryptoPro поддерживает все нужные алгоритмы. Полностью российское решение, соответствующее национальным стандартам. Безопасно? Да. Отечественное импортозамещение? Да.

Мешает ли это госорганам? Частично — но только для секретных чатов, которые пользователь явно выбирает. 99% переписок останутся в обычных чатах и будут доступны по закону. Зато пользователь получает выбор — и доверие к платформе. (Как бы я не был противником идеи, что государство не должно лезть в мои переписки, поэтому я сейчас пишу в реалиях 2026-го года. Пожалуйста, не хейтите меня за это).

Я понимаю, что это самый наивный пункт в списке. E2E в государственном мессенджере — это вопрос не технический, а политический.


3. Перестать собирать лишнее

В предыдущем посте я писал про MyTracker — встроенную аналитику от VK. Она умеет собирать номера телефонов, email, списки приложений, данные сенсоров, рекламные идентификаторы.

Вопрос не в том, собирает ли MAX всё это прямо сейчас. Вопрос в том, что SDK для этого уже встроен и может собирать что угодно по команде с сервера. Пользователь об этом не узнает и не может отказаться. ЭТО ВООБЩЕ ЗАКОННО? К слову, многие компании уже понесли тонны штрафов за это, даже имя согласия. РКН, вы это видели? Вы об этом в курсе?

Я отдаю себе отчёт, что MyTracker — это продукт VK Group, и его интеграция в MAX скорее всего не решение команды мессенджера, а корпоративная политика. Убрать его — значит пойти против компании. Но пользователь имеет право знать, что происходит, и иметь выбор. Давайте быть цивилизованным обществом.

Что предлагается:

Сделать аналитику opt-in. Спросить пользователя: «Хотите помочь улучшить MAX? Мы будем собирать анонимную статистику использования». Кто хочет — включит. Кто не хочет — его право. База.

Убрать определение IP через четыре сервиса. Один — понятно, для геолокации серверов. Четыре (ip.mail.ru, ifconfig.me, checkip.amazonaws.com, ipv4-internet.yandex.net) — перебор и жесть.

Не передавать номера телефонов в открытом виде при синхронизации контактов. Как минимум — хеширование с солью на стороне клиента. Это не идеал (пространство номеров невелико, и при утечке соли хеши обратимы), но уже лучше чем plaintext. В перспективе — криптографические протоколы Private Set Intersection или изолированные вычисления на стороне сервера. Это сложнее, но именно так работают мессенджеры, которые заявляют о приватности.

Снова вопрос: мешает ли это госорганам? Нет. Аналитика не имеет отношения к СОРМ. Контакты пользователя доступны через его аккаунт. Определение IP для оперативных нужд делается на уровне провайдера, а не через ifconfig.me.


4. Закрыть двери для чужих приложений

В ходе аудита обнаружилось несколько мест, где сторонние приложения на том же телефоне могут взаимодействовать с MAX без должной проверки. Это стандартные проблемы Android-разработки, описанные в OWASP Mobile Top 10 (~2024). https://owasp.org/www-project-mobile-top-10/ -- не знаю, насколько устарела информация, кажется, ещё довольно актуальна.

Вот что стоит сделать:

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

Добавить защиту от overlay-атак (tapjacking). Это когда мошенническое приложение рисует прозрачное окно поверх MAX и перехватывает нажатия. Начиная с Android 12, система частично блокирует такие наложения, но для критичных экранов (ввод PIN, подтверждение отправки) нужна дополнительная защита на уровне приложения. (явный открытый риск)

Ограничить JavaScript-bridge во встроенном браузере. Сейчас мини-приложения в WebView имеют расширенный доступ к нативным функциям. Стоит явно указать, что именно доступно. Нужна ревизия.

Снова вопрос! Мешает ли это госорганам? Нет. Это защита от мошенников и вредоносных приложений.

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


5. Обновить криптографию

MAX использует CryptoPro для ГОСТ-шифрования — это правильно для государственного мессенджера. Но в конфигурации обнаружена поддержка TLS 1.0 и TLS 1.1 — версий протокола, которые признаны устаревшими в 2021 году (RFC 8996) и уязвимы к известным атакам.

Решение простое: оставить только TLS 1.2 и TLS 1.3. Тем более что ГОСТ-шифр. стандартизированы для обеих версий — RFC 9189 для TLS 1.2 и RFC 9367 для TLS 1.3. CryptoPro поддерживает оба варианта. TLS 1.0/1.1 в 2026 году не просто «устарели» — их уже не принимают крупнейшие облачные провайдеры и CDN.

Также стоит перенести токены авторизации из HTTP-параметров (где они попадают в логи серверов) в заголовки запросов. А для привязки к устройству есть стандарт DPoP (RFC 9449) — токен криптографически привязывается к ключу в том же аппаратном модуле, о котором мы говорили выше. Украденный токен без этого ключа бесполезен. Вообще, идеально шифровать каждый критический элемент отдельно, с привязкой к сессии, но тут долгая дискуссия, не стану сейчас тратить на это время.

Этот вопрос ещё несколько раз встретиться ниже НАМЕРЕННО! Мешает ли это госорганам? Нет. Гигиена безопасности.

TLS 1.0/1.1 — это скорее всего наследие от CryptoPro, и тут MAX зависит от сторонней библиотеки. Но привязка токена к устройству и перенос из параметров в заголовки — это точно в их силах.


6. Открыть протокол для аудита

Telegram опубликовал спецификацию MTProto. Множество мессенджеров открыли исходный код. Это не ослабило их — наоборот, тысячи независимых исследователей проверяют код и находят ошибки до того, как их найдут злоумышленники. Почему мы не можем сделать также? Можем ведь.

MAX использует проприетарный бинарный протокол, который невозможно проверить извне. Это подход «security through obscurity» — безопасность через сокрытие — который в криптографии считается слабым решением.

Необязательно открывать весь код. Достаточно опубликовать спецификацию протокола и заказать независимый аудит у специализированной компании — как делают ведущие мессенджеры у NCC Group, Cure53, Trail of Bits. Для отечественного контекста — компании с лицензиями ФСТЭК/ФСБ на деятельность в области защиты информации: Positive Technologies, BI.ZONE, Solar Security и другие. Главное — чтобы аудит был независимым и результаты публичными.

А что ГОСОРГАНЫ? Открытый протокол не мешает серверному доступу. HTTPS тоже открытый протокол — и его используют все банки.

Будем реалистами: открытие протокола скорее всего не произойдёт — это затрагивает всю экосистему VK/OK. Но независимый аудит под NDA — вполне рабочий компромисс, который повысит доверие без раскрытия деталей. Летс-гоу дальше...


7. А что делать пользователям прямо сейчас?

Пока разработчики думают, вот что можете сделать вы сами.

Если у вас обычный телефон (без root):

- Геолокация и контакты -- на свой страх и риск.

- ВЫКЛЮЧИТЬ USB отладку. Настройки — Система — Для разработчиков — Отладка по USB. Если вы не разработчик, она вам не нужна. А с ней можно извлечь данные с телефона, просто подключив кабель.

- Не подключайтесь к чужим зарядкам и Wi-Fi без необходимости. Часть трафика MAX может идти без шифрования — мы это показали в первом посте.

- Не публикуйте invite-ссылки MAX в открытых источниках.

- Проверяйте активные сессии в настройках аккаунта.


8. Итого: что получится, если разработчики послушают

Если реализовать всё вышеперечисленное, MAX станет мессенджером, который:

а) Защищает данные на устройстве от малвари, кражи, ремонтников — шифрованием.

б) Даёт пользователю выбор между обычными и секретными чатами.

в) Уважает приватность — не собирает лишнее, спрашивает согласие.

г) Устойчив к атакам сторонних приложений — overlay, intent injection, WebView.

д) Использует современную криптографию — без дыр из 2010 года.

е) Может быть проверен независимо — открытый протокол и внешний аудит.

При этом:

- Обычные чаты остаются доступными для СОРМ.

- Серверная инфраструктура не меняется.

- Закон Яровой выполняется в полном объёме.

- Государство сохраняет доступ к данным в рамках действующего законодательства.

- Безопасность для граждан и доступ для государства — не взаимоисключающие вещи. Нужно просто разделить: что защищаем от мошенников (данные на устройстве) и что остаётся доступным по закону (данные на сервере).


P.S. Ребята из VK/MAX. Пользователи заслуживают безопасный мессенджер. У вас есть хорошая основа. Осталось доделать (реально можно, и не ГОДАМИ).


P.S.S.Технические детали уязвимостей направлены / будут направлены команде MAX через Bug Bounty на Standoff 365. (что-то уже было опубликовано, я ДАЛЕКО не первый).


P.S.S.S. Можете задавать прямые вопросы -- отвечу.



UPD 2.0 (Я забыл добавить кое-что интересное...)

MAX на самом деле сильно зависит от "западных решений".

Сервисные зависимости — реальная проблема:

Google Firebase (FCM) — push-уведомления. Каждый раз, когда вам приходит уведомление о новом сообщении, оно идёт через серверы Google в США. Google может отключить этот сервис для российских приложений в любой момент — как уже делали с другими сервисами под санкциями. Нет Firebase — нет пушей.

checkip.amazonaws.com — один из четырёх сервисов определения IP, о которых я писал выше.

Google Advertising ID и Google App Set ID — встроены через MyTracker. Идентификаторы устройств, которые генерирует и контролирует Google.

Библиотечные зависимости — менее критично, но стоит знать:

Facebook Fresco — open-source библиотека обработки изображений, изначально разработанная в Meta Platforms Inc. (деятельность компании признана экстремистской на территории РФ, решение Тверского суда г. Москвы от 21.03.2022). Сама библиотека — открытый код под лицензией Apache 2.0, работает локально, никуда данные не отправляет. Но для государственного мессенджера происхождение компонентов имеет значение.

Ирония ситуации: MAX создан как альтернатива Telegram, который «контролируется из-за рубежа». Но внутри MAX — Google и Amazon на уровне сервисов. А Telegram, к слову, имеет собственный fallback для push-уведомлений и может работать без Firebase.

Не то чтобы это дискредитирует MAX. Это нормальный технический долг, который накопился от TamTam. Но если MAX хочет быть по-настоящему суверенным — начать стоит с того, чтобы push-уведомления не шли через "Маунтин-Вью".

Такие дела.

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества