Что случилось? Ничего. Просто поразмышляем о том, можно ли технически следить за людьми через приложения на телефоне, какие данные могут (теоретически) собирать и хранить популярные программы для созвонов и почему шифрование сообщений в мессенджерах — это не гарантия безопасности вашей переписки.
На что способны современные приложения и что знают о нас наши смартфоны
Начнем с самого начала — заглянем в пользовательское соглашение одного приложения для обмена сообщениями. Мы же все подписываем этот документ, не читая? А теперь прочитаем. И вот сразу же наше внимание привлекает пункт, который гласит:
Сотрудники Компании не осуществляют мониторинг сообщений Пользователей, но Компания может использовать определенные автоматические компьютерные системы и фильтры для сканирования таких сообщений с целью ограничения рассылки спама или иного нежелательного или незаконного Контента в Сервисе.
Этот пункт положения намекает на то, что сообщения могут проходить серверное сканирование. Вот как это происходит: текст сообщения доставляется на серверы только с транспортным шифрованием (оно нужно, только чтобы защитить канал связи, на сервере такое сообщение может быть расшифровано), где применяются фильтры или ML-модели[1], которые помечают или удаляют спам, вредоносные ссылки или запрещенный контент. Таким образом приложение автоматически получает доступ к полному содержимому любого отправленного со смартфона сообщения или вложения, а также метаданные[2] и результаты анализа. Это нарушает принцип приватности.
Если заглянуть в такой же документ для другого мессенджера, мы встретим похожую формулировку:
Для предотвращения фишинга, спама и других видов злоупотреблений и нарушений Условий предоставления услуг наши модераторы могут проверять сообщения, на которые пожаловались их получатели. Если жалоба на спам на отправленное вами сообщение подтверждается нашими модераторами, ваша учетная запись может быть ограничена в возможности связываться с незнакомцами — временно или постоянно.
Это означает, что в случае жалобы приложение имеет техническую возможность и право вас «досмотреть». Но это относится только к облачным чатам, которые хранятся на серверах, секретные чаты никогда не хранятся и не могут быть расшифрованы.
Для борьбы с массовым спамом могут также использоваться автоматизированные алгоритмы — эти системы способны сканировать сообщения по шаблонам. Но чаще всего их интересует не столько текст, сколько метаданные и паттерны поведения: как быстро рассылаются сообщения, скольким людям и сколько жалоб формируется. В итоге оба приложения технически могут просматривать ваши чаты, однако второе без явной жалобы туда обещает не лезть.
В чем потенциальная опасность популярных программ для созвонов
Звонки в некотором приложении для обмена сообщениями производятся через WebRTC (Web Real-Time Communication) — это технология, которая позволяет организовывать прямую передачу аудио и видео между браузерами в реальном времени без необходимости устанавливать дополнительные расширения и приложения на устройство. То есть браузеры получают встроенные механизмы и разрешения для работы камеры и микрофона. По такому принципу работает множество программ для созвонов.
В целом WebRTC очень удобен и является стандартом, но в то же время имеет несколько уязвимостей:
1. IP-leak — утечка IP-адреса
WebRTC использует соединение P2P (peer-to-peer — «пиринговый», или «равный к равному»). «Равный к равному» означает, что два компьютера подключаются друг к другу напрямую, а не через сервер. Для этого WebRTC ищет локальные и публичные IP-адреса устройства, чтобы выбрать лучший маршрут. Когда сайт использует WebRTC, он может запросить эти адреса. Как следствие, даже если вы сидите через VPN, сайт знает ваш настоящий IP-адрес. Таким образом можно отследить ваше реальное местоположение — ситуация минус вайб.
2. Вредоносный JavaScript
Любой сайт может запускать JS-код на вашем устройстве. HTML-страница состоит из различных ресурсов (текста, картинок, стилей) и скриптов (инструкций, которые помогают сайту реагировать на действия пользователей), написанных на языке JavaScript. Когда вы открываете сайт в браузере, он загружает эти данные с сервера. Если в коде есть строчка <script>, то браузер выполнит этот код прямо на компьютере. Скрипт могут написать с разными намерениями, поэтому всегда есть вероятность, что он сворует ваш IP-адрес, сведения о том, какие сетевые подключения есть на устройстве (Wi-Fi, 4G, VPN), и информацию о наличии локальных устройств в сети (камеры, принтеры). Такие хитрости позволят связать вашу активность в интернете с вами лично. С помощью сведений о локальной сети можно найти уязвимые устройства и попробовать к ним подключиться.
Как работает шифрование в мессенджерах и гарантирует ли оно безопасность переписки
Будем честны: никто не любит лишние уши в диалоге. Приватность переписки может обеспечить сквозное шифрование данных. E2EE (end-to-end encryption) — это метод защиты данных, при котором сообщения или файлы шифруются на устройстве отправителя и расшифровываются только на устройстве получателя. Работает это так: мама пишет вам сообщение, и перед отправкой ее смартфон использует открытый ключ, это сообщение шифрующий. Шифр пересылается через сервер, который не понимает ни слова из написанного. Ваш телефон получает это нечто и дешифрует с помощью закрытого ключа. Вот как много действий происходит, чтобы доставить сообщение «Ты покушал?», но зато это остается только между вами.
При этом сервер мессенджера защищает только содержимое сообщений, но не метаданные. Метаданные — это данные о данных: ID получателя и отправителя, время и дата отправки сообщения, длительность звонка и т. д. Эти данные обычно используются для штатной работы мессенджеров, сбора статистики, чтобы разработчики понимали, какие функции наиболее востребованы, чтобы потом как-то их улучшить. Но точно так же метаданные могут использоваться подло: например, для настройки таргетированной рекламы или для слежки. То есть, если вы написали другу в 22:00, никто не узнает, что именно вы написали, но выяснить, что в 22:00 вы контактировали с конкретным человеком, очень даже можно.
В чем главные уязвимости устройств на Android
Один из пользователей сервиса GitHub проанализировал код некоторого приложения, совместимого с операционной системой Android.
1. Значительная часть кода приложения подвергнута обфускации — запутыванию кода, когда он сохраняет свою функцию, но прочитать человеку его довольно сложно. Это действие защищает код от копирования, но в то же время препятствует анализу логики работы программы и поиску уязвимостей, то есть может использоваться для скрытия истинной функции кода.
2. Приложение собирает очень много персональных данных. Персональные данные включают возраст, пол, ID из других соцсетей, адреса почты, номера телефонов, точную геолокацию. Также код содержит кастомные параметры, которые позволяют разработчикам собирать любую дополнительную информацию. Программа также передает информацию о событиях, которые происходят на устройстве: взаимодействия с рекламой, ручной запуск, время, проведенное в приложении, и список всех установленных приложений на устройстве.
3. У каждого приложения для Android есть файл AndroidManifest.xml — это документ, где прописаны разрешения, которые запрашивает приложение, и перечисление того, что используется для взаимодействия с операционной системой устройства. Список огромный и в целом соответствует аналогичным файлам любого другого мессенджера, но самое интересное вот:
<service android:name="androidx.work.impl.foreground.SystemForegroundService" android:enabled="@bool/enable_system_foreground_service_default" android:exported="false" android:directBootAware="false" android:foregroundServiceType="microphone|camera|location|mediaPlayback|dataSync"/>
Бу! Испугались? Не бойтесь. Сама по себе эта строчка не дает автоматического скрытого доступа к микрофону, камере и захвату экрана. Здесь просто рассказывается, что приложение может запускать эти функции в фоновом режиме, если ему разрешат, и, если ему разрешают, оно показывает уведомления о своей активности. Начиная с Android 12 система также показывает индикаторы работы микрофона/камеры.
4. Приложение имеет возможность «закрепиться» в системе. Ему доступен автозапуск при загрузке устройства, благодаря чему программа и ее фоновые службы могут автоматически запускаться сразу после включения устройства. Благодаря строчке RECEIVE_BOOT_COMPLETED приложение получает право узнавать, когда телефон включился. Другие приложения используют это, например, чтобы включать получение уведомлений.
5. Приложение может фиксировать и передавать текст, который пользователь вводил последним, а также сведения о правках и ответах в чатах. Это не системный кейлоггер[3], но фактически это способность собирать данные о действиях пользователя внутри самого приложения.
6. Потенциал для установки дополнительного ПО. Разрешение REQUEST_INSTALL_PACKAGES позволяет приложению предлагать установку файлов APK. Пользователь должен подтвердить установку, но с его помощью приложение может добавлять дополнительные модули, обновления или даже вредоносные программы вне официальных магазинов. А DOWNLOAD_WITHOUT_NOTIFICATION позволяет скачивать что-то без уведомления пользователя.
7. Разрешение на постоянный захват экрана. FOREGROUND_SERVICE_MEDIA_PROJECTION дает приложению возможность записывать всё, что происходит на экране устройства, даже когда оно работает на фоне, если пользователь дал на это разрешение. В мессенджерах это используется для демонстрации экрана на созвоне. Но потенциально приложение может видеть и сохранять все действия пользователя на экране, включая переписки, пароли и личные данные.
8. Хорошие новости! В AndroidManifest.xml нет указаний на прямые разрешения для изменения системных файлов, получение root-доступа (полный контроль за операционной системой устройства) или вмешательство в работу других приложений.
В код приложения для iOS никто не залез, но операционная система четко ограничивает все разрешения для приложений и строго контролирует доступ к экранной записи. Во-первых, если приложение использует микрофон, то в верхней части экрана появляется оранжевый индикатор, если камеру — зеленый. Эта функция доступна пользователям с версии iOS 14, которая выпущена в 2020 году. Во-вторых, можно проверить, какие приложения используют микрофон в настройках: в «Пункте управления» можно увидеть, какое приложение записывает аудио в данный момент. В настройках также можно уточнить, какое приложение имеет право использовать микрофон при заблокированном экране.
Итоги
Мы говорим о приложениях, которые опубликованы в официальных магазинах программ, то есть их туда допустили, поэтому оголтело вредоносными они быть не могут. Правда, технические возможности позволяют подобным приложениям собирать данные (с вашего разрешения). Если вас это напрягает, осознанно соглашайтесь на разрешения для приложений и отключайте их, когда приложением не пользуетесь.
Обложка: коллаж «Цеха». Фото: © Alexey Boldin, New Africa / Shutterstock / Fotodom