Группа исследователей из Мичиганского университета опубликовала доклад о безопасности мобильных приложений для платформы Android, которые открывают сетевые порты в слушающем режиме и принимают на них соединения. Отмечается, что обработка внешних сетевых запросов создаёт угрозу для безопасности мобильных устройств, которая обычно упускается из виду из-за не серверной специфики мобильных приложений. Исследователи разработали специализированную утилиту OPAnalyzer для статического анализа кода, которая выявляет открытие сетевых портов и оценивает наличие типовых уязвимостей в реализации.
Проверив более 100 тысяч приложений из каталога Google Play были выявлены 1632 программы, принимающие сетевые соединения, половина из которых насчитывает более 500 тысяч загрузок. Исследователи пришли к выводу, что почти половина всех обработчиков сетевых соединений незащищена и может быть использована для организации удалённых атак. Всего при автоматизированной проверке было выявлено 410 уязвимых приложений и 956 потенциальных методов эксплуатации уязвимостей. Вручную было подтверждено наличие уязвимостей в 57 приложениях, в том числе очень популярных, насчитывающих от 10 до 50 млн загрузок, и предустанавливаемых на смартфоны некоторых производителей.
Выявленные уязвимости, через отправку запросов на открытый приложением сетевой порт, позволяют получить доступ к контактам и фотографиям, перехватить параметры аутентификации, установить вредоносное ПО, выполнить свой код на устройстве или отправить SMS на платный сервис. Уязвимости разделены на две категории — ошибки реализаций (например, отсутствие экранирования спецсимволов и «..» в путях) и вредоносные закладки (например, вшитый в приложения инженерный пароль для удалённого доступа).
По решаемым задачам обработчики внешних соединений в мобильных приложениях разделены на пять категорий: организация совместного доступа к данным (69.3%), прокси-сервисы (6.3%), удалённое выполнение операций (6.5%), приём VoIP-вызовов (2.3%) и приложения на базе платформы PhoneGap (14.6%). 60% уязвимостей при организации совместного доступа к данным связаны с ненадлежащим механизмом аутентификации клиента или её отсутствием. Основная проблема с прокси, которые обычно применяются в таких приложениях как фильтры содержимого и блокировщики рекламы, связана с ненадлежащим контролем доступа, что может использоваться как усилитель для DDoD-атак, заметания следов или выделения прокэшированного контента.
Удалённое выполнение операций связано с предоставлением интерфейсов для выполнения определённых действий на телефоне, например, отправки SMS с ПК или обращения к хранилищу. Гибридные приложения на базе фреймворка PhoneGap (Apache Cordova) разделены на бэкенд и фронтэнд, который оформляется на JavaScript/HTML5. Обработчик PhoneGap должен привязываться к внутреннему сетевому интерфейсу, но по ошибке часто прикрепляется и к внешнему интерфейсу, при этом запросы аутентифицируются по UUID и вероятность атаки через PhoneGap оценивается как маловероятная.
Для демонстрации возможных методов эксплуатации исследователи подготовили несколько сценариев атак:
- Доступ к фотографиям атакующим в локальной сети, выполнившим сканирование доступных в сети устройств:
- Доступ к фотографиям из вредоносного приложения, имеющего только право установки сетевых соединений:
- Инициирование отправки платных SMS при клике на ссылку в браузере:
- Перехват параметров аутентификации при работе пользователя с внешним сервисом: