Цифровая слежка в кармане: аудит 11 популярных российских Android-приложений
Мобильное приложение сегодня редко ограничивается одной задачей. Банковские клиенты собирают диагностические сведения, маркетплейсы подключают рекламные SDK, навигаторы используют аналитические платформы, а государственные сервисы получают доступ к чувствительным системным функциям. Чтобы оценить масштаб такой активности, был проведён аудит 11 популярных Android-приложений российского рынка.
В выборку вошли VK, Т-Банк, Сбербанк, Госуслуги, Авито, ВТБ, 2ГИС, RuStore, Яндекс Пэй, Ozon Bank и Госключ. Проверялись банковские сервисы, государственные платформы, социальная сеть, маркетплейсы, навигационное приложение и магазин приложений.
Как проводилась проверка
Исследование основывалось на статическом анализе APK и наблюдении за поведением программ при первом холодном запуске. Использовались MobSF, apktool, jadx, androguard, а также самописные анализаторы трекеров и криптографических конструкций.
Проверялись:
- DEX-байткод;
- Android-манифест;
- нативные библиотеки;
- сертификаты подписи APK;
- Network Security Config;
- разрешения;
- экспортируемые компоненты;
- обращения к внешним доменам;
- активность в logcat до выдачи пользователем разрешений.
Трафик приложений не расшифровывался, SSL Pinning не обходился, root-доступ не применялся. Поэтому результаты отражают то, что можно обнаружить без вмешательства в защищённый обмен данными.
Количество найденных криптографических обращений нельзя считать прямым числом уязвимостей. Обфускация, инлайнинг и дублирование кода способны заметно увеличивать статистику. Полученный рейтинг риска - ориентировочный показатель, рассчитанный с учётом трекеров, потенциальной VPN-детекции, опасных разрешений и криптографических слабостей.
Итоги аудита
| Приложение | Версия | Трекеры | Подпись | VPN-детекция | Криптографические срабатывания | Риск |
|---|---:|---:|---|---|---:|---:|
| VK | 8.195 | 11 | RSA-1024 | Есть | 3097 | 98,0 |
| Т-Банк | 8.2.3 | 6 | RSA-2048 | Есть | 4931 | 96,6 |
| Сбербанк | 17.11.0 | 7 | RSA-1024 | Есть | 705 | 96,0 |
| Госуслуги | 27.0.1 | 8 | RSA-1024 | Есть | 1634 | 95,2 |
| Авито | 232.0 | - | RSA-1024 | Есть | 875 | 94,3 |
| ВТБ | 20.16.0 | - | RSA-2048 | Есть | 3988 | 89,5 |
| 2ГИС | 7.28.0 | 9 | RSA-4096 | Есть | 1737 | 83,3 |
| RuStore | 1.109.1 | - | RSA-2048 | Есть | 798 | 81,0 |
| Яндекс Пэй | 0.241.0 | - | DSA-1024 | Нет | 5139 | 77,3 |
| Ozon Bank | 19.33.1 | - | RSA-1024 | Есть | 157 | 71,6 |
| Госключ | 2.20.0 | - | Современная | Нет | 210 | 42,4 |
Всего на основной и расширенной стадии проверки было зафиксировано 237 потенциально проблемных мест. Лидером по совокупному индексу оказался VK, а наиболее аккуратным с точки зрения исследованных параметров - Госключ.
Устаревшие ключи подписи
Шесть приложений используют ключи, которые не соответствуют современным рекомендациям по криптографической стойкости. RSA-1024 обнаружен у VK, Сбербанка, Госуслуг, Авито и Ozon Bank. Яндекс Пэй подписан ключом DSA-1024.
RSA-1024 и DSA-1024 считаются устаревшими стандартами ещё с 2013 года. Android продолжает принимать подобные подписи ради совместимости, однако сама возможность технически не означает, что риск можно игнорировать. При компрометации ключа злоумышленник потенциально сможет подписать изменённый APK, который будет выглядеть как легитимное обновление.
Для приложения с большим числом пользователей это не только теоретическая проблема. Особенно спорно использование RSA-1024 в банковских и платёжных продуктах. Более безопасным минимальным вариантом считается RSA-2048, а применение RSA-4096, как в 2ГИС, демонстрирует более консервативный подход.
Отдельно выделяется Яндекс Пэй: DSA-1024 редко встречается в современных Android-продуктах, а для платёжного приложения такой выбор выглядит особенно архаично.
Трекерная инфраструктура
Компоненты Huawei Mobile Services обнаружены практически во всей выборке. Даже у VK, где их доля сравнительно ниже, зафиксировано около 30 458 ссылок на HMS. В Госключе обнаружено 22 293 таких ссылки - примечательный результат для приложения, связанного с электронной подписью и государственными услугами.
Само наличие SDK ещё не доказывает передачу персональных данных. Библиотека может использоваться для совместимости, push-уведомлений, аналитики или поддержки устройств без сервисов Google. Однако большое количество интеграций увеличивает поверхность атаки и число участников, которым приложение потенциально может передавать технические сведения.
VK стал лидером по числу обнаруженных трекеров - их 11. В экосистему входят собственные компоненты VK, рекламные и аналитические модули, а также сторонние сервисы. Чем больше таких элементов внутри APK, тем сложнее пользователю понять, кто именно получает сведения о запуске приложения, модели устройства, сетевом окружении и действиях внутри интерфейса.
VPN-детекция и WebRTC
Часть приложений проверяет сетевую среду пользователя. Один из распространённых механизмов - анализ WebRTC, через который можно получить сведения о локальных и потенциально реальных сетевых адресах даже при использовании VPN.
Такая функция может применяться для защиты от мошенничества, контроля региона, предотвращения автоматизированных атак и соблюдения требований безопасности. Но для пользователя она означает, что VPN не всегда скрывает сетевую конфигурацию от приложения.
Особенно важно различать сам факт обнаружения механизма и реальную утечку данных. Статический анализ показывает наличие соответствующего кода, но не подтверждает, что приложение при каждом запуске отправляет полученные адреса на сервер.
Что происходит при первом запуске
Пассивное наблюдение за logcat позволило увидеть, к каким доменам приложения обращаются ещё до выдачи разрешений. На этом этапе могут запускаться аналитические библиотеки, проверяться конфигурация, загружаться параметры удалённых сервисов и активироваться push-инфраструктура.
Пользователь часто воспринимает первый запуск как нейтральную фазу настройки, однако именно в этот момент приложение уже может сформировать технический профиль устройства. В него входят модель смартфона, версия Android, сведения о производителе, состояние сервисов, язык системы и сетевые параметры.
Разрешение SYSTEM_ALERT_WINDOW
Особое внимание привлекло разрешение SYSTEM_ALERT_WINDOW. Оно позволяет показывать окна поверх других приложений и традиционно считается чувствительным. Такая возможность необходима некоторым функциям защиты от мошенничества, отображения предупреждений и специальных интерфейсов, но одновременно может использоваться для подмены экранов и перехвата внимания пользователя.
Наличие разрешения само по себе не доказывает вредоносное поведение. Однако банковские приложения должны максимально прозрачно объяснять, зачем оно требуется, и ограничивать его применение только необходимыми сценариями.
Цепочки установки обновлений
В отдельных банковских продуктах обнаружены сочетания REQUEST_INSTALL_PACKAGES и UPDATE_PACKAGES_WITHOUT_USER_ACTION. Такие механизмы могут быть частью собственной системы доставки обновлений, особенно если приложение устанавливается не через стандартный магазин.
Риск состоит в том, что подобная цепочка увеличивает контроль программы над процессом обновления. При ошибке в проверке источника или подписи она способна превратиться в канал доставки изменённого пакета. Без анализа реального сценария нельзя утверждать, что уязвимость существует, но сама связка заслуживает дополнительного контроля.
Политика сетевой безопасности
У пяти приложений не обнаружено явно заданной политики TLS в Network Security Config. Это не означает автоматического отключения шифрования: приложение может использовать настройки Android по умолчанию или самостоятельно задавать параметры в коде.
Тем не менее явная конфигурация делает требования к соединениям понятнее. В ней можно зафиксировать запрет небезопасного трафика, список доверенных сертификатов, правила для отладочных сборок и ограничения для отдельных доменов.
Экспортируемые компоненты и device_id
Открытые activity, service, receiver и provider требуют осторожности. Если компонент экспортирован без надлежащей проверки вызывающей стороны, другое приложение может попытаться обратиться к нему напрямую.
В ходе расширенной проверки также анализировались сценарии, связанные с передачей device_id. Аппаратные идентификаторы чувствительны, поскольку позволяют дольше связывать действия пользователя с одним устройством. Современные приложения должны по возможности использовать ограниченные и сбрасываемые идентификаторы, а не постоянные значения.
Что может сделать пользователь
Полностью отказаться от всех рисков невозможно, но их можно уменьшить:
1. Устанавливать приложения только из доверенных источников.
2. Регулярно обновлять Android и сами программы.
3. Проверять выданные разрешения и отключать ненужные.
4. Не разрешать показ поверх других окон без понятной причины.
5. Использовать отдельное устройство или профиль для финансовых операций.
6. Не устанавливать APK из случайных файлов и чатов.
7. Обращать внимание на необычные запросы доступа к контактам, микрофону, SMS и хранилищу.
8. При возможности выбирать приложения с прозрачной политикой конфиденциальности и минимальным набором SDK.
Вывод
Аудит показывает, что популярность приложения не гарантирует современный уровень защиты. В выборке одновременно встречаются устаревшие ключи подписи, многочисленные SDK, механизмы VPN-детекции, чувствительные разрешения и сложные цепочки обновлений.
Главный результат - не список "хороших" и "плохих" программ, а демонстрация масштаба скрытой сложности мобильного ПО. Наиболее тревожными выглядят устаревшие алгоритмы подписи в банковских и государственных сервисах, а также отсутствие прозрачного объяснения того, какие компоненты работают при первом запуске.
Госключ показал наиболее низкий совокупный риск по выбранной методике. VK, напротив, выделился большим числом трекеров и максимальным итоговым рейтингом. Однако окончательная оценка безопасности требует не только статического анализа, но и проверки серверной логики, реального сетевого трафика, механизмов обновления и поведения приложения в разных сценариях.
