Анализ уязвимостей в Android-приложениях с открытыми сетевыми портами
Группа исследователей из Мичиганского университета опубликовала доклад о безопасности мобильных приложений для платформы 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 при клике на ссылку в браузере:
- Перехват параметров аутентификации при работе пользователя с внешним сервисом: