Security Week 2419: уязвимость в Android-приложениях при обмене файлами

Security Week 2419: уязвимость в Android-приложениях при обмене файлами
1 мая исследователи из компании Microsoft рассказали об уязвимости в ряде приложений для платформы Android. Эта уязвимость в некоторых случаях позволяет выполнять произвольный код и полностью контролировать легитимное приложение. В публикации подробно описан интересный способ повышения привилегий, в котором задействована стандартная для Android фича обмена файлами между установленными программами. Проблема относится к типу path traversal: злоумышленник может модифицировать имя файла так, что он будет сохранен не в предназначенной для такого обмена локации, а в произвольном месте, где у приложения-жертвы имеется доступ на запись. Соответственно, имеет место и недостаточный контроль за входящими файлами.


Схема атаки показана выше на иллюстрации из отчета Microsoft. Реальная атака с использованием такой уязвимости может выглядеть следующим образом. Пользователь устанавливает вредоносное приложение, которое при этом само не запрашивает особых прав на доступ к информации в смартфоне или планшете. Приложение без ведома пользователя через стандартные возможности API Android инициирует обмен данными с уязвимой программой. В нормальных условиях этот обмен файлами используется, например, чтобы загрузить фотографию в соцсеть из Галереи или приложить файл к письму в почтовом клиенте. Модифицируя имя файла по стандартным для подобных багов паттернам, например добавляя команду на переход в предыдущую директорию, злоумышленник может сохранить файл в произвольную точку. В Microsoft выявили два очень популярных приложения, которые оказались уязвимыми для подобной атаки: штатный менеджер файлов для телефонов Xiaomi и офисный пакет WPS Office. Обе программы установлены на сотни миллионов устройств.

Приложение Xiaomi было подробно проанализировано в отчете. Абсолютно штатные средства обмена данными в Android не являются проблемой в данном случае. Ошибкой разработчиков файлового менеджера стало отсутствие проверок входящих данных. Точнее, код для валидации идентификатора URI для входящего файла есть, но по факту он не работает. Само по себе подкидывание файла в произвольную директорию ничего не дает. Во-первых, приложение-жертва в любом случае имеет ограничение на запись файлов, оно может это делать только в тех папках, доступ к которым ему предоставлен. Не получится подменить системные файлы — например, библиотеки, сохраненные в директории /data/app, которые использует уязвимое ПО. Но в каких-то случаях приложения сохраняют некоторые библиотеки в своей домашней директории, куда можно сохранить произвольный файл. Такая библиотека используется во встроенном плагине файлового менеджера Xiaomi, предназначенного для удаления мусорных файлов — она подгружается как раз из домашней директории.

Просто подменить этот исполняемый файл на другой с использованием трюка с обменом данными не получится. Но, как выяснилось, эту же уязвимость можно задействовать для перезаписи файла с настройками файлового менеджера. В этом файле можно подменить имя и хеш-сумму легитимной библиотеки, таким образом заставив уязвимое приложение загрузить сторонний файл. В результате следующий запуск фичи для удаления мусора из системы приведет к выполнению произвольного кода. Дальше исследователи предположили сценарий, в котором атакующий пользуется широкой функциональностью файлового менеджера. В частности, если владелец телефона использует менеджер для доступа к сетевым папкам, злоумышленник может подкидывать файлы уже туда, таким образом масштабируя атаку. Из-за своих особенностей атака получила название Dirty Stream.

К счастью, для приложений Xiaomi и WPS Office атака так и осталась теоретической: разработчики программ выпустили исправления. Но такая же уязвимость может присутствовать и в других приложениях. В результате получился интересный, хотя и довольно сложный способ расширения привилегий вредоносного приложения за счет легитимных программ. По совпадению, на прошлой неделе американское госагентство по кибербезопасности также распространило рекомендацию разработчикам проверять код на уязвимости типа path traversal.

Что еще произошло

Компания Google выпустила очередной отчет о безопасности приложений в Google Play. Всего за 2023 год была заблокирована публикация 2,28 миллионов приложений — ввиду нарушения безопасности либо приватности пользователей. За загрузку вредоносного кода или регулярные нарушения правил были забанены 333 тысячи учетных записей разработчиков. Число блокируемых приложений выросло: в 2022 году в аналогичном отчете Google сообщала о полутора миллионах аппов. Это связано с постепенным внедрением все более строгих требований для разработчиков, а также с улучшением систем модерации приложений, которая включает мониторинг выполнения в реальном времени. Кроме того, Google отклонила 200 тысяч заявок на публикацию приложений, которые «без уважительной причины» запрашивали разрешения на доступ к чувствительной информации, например на чтение SMS или постоянное отслеживание геолокации. Принимаемые меры, впрочем, по-прежнему не исключают появление в Play Store вредоносных приложений. Совсем недавно там было обнаружено 17 «бесплатных» VPN-сервисов, которые превращали телефон в прокси-сервер для злоумышленников.

Больше 2100 серверов, использующих ПО GitLab для приватной разработки, имеют серьезную эксплуатируемую уязвимость. Проблема в GitLab появилась в мае 2023 года: фича отправки кода для сброса пароля на запасной почтовый адрес позволяла отправлять код на произвольный e-mail. Уязвимость не работает для учетных записей, на которых настроена многофакторная аутентификация. Патч для этой проблемы был выпущен еще в январе этого года, но до сих пор многие администраторы приватных репозиториев не установили необходимое обновление.

В Великобритании законом запретили сетевые устройства с дефолтными паролями. Вступили в действие поправки к акту о безопасности продуктов и телекоммуникационной инфраструктуры, которые запрещают продажу устройств с парой логин-пароль типа admin/admin. Теперь все подобные устройства должны иметь либо рандомизированный пароль, либо пароль должен генерироваться при первоначальной настройке.

Проведен интересный анализ репозиториев, публикуемых в сервисе Docker Hub. Около 20% из 15 миллионов репозиториев оказались вредоносными — таким образом злоумышленники распространяют спам и вредоносные программы.
android
Alt text
Обращаем внимание, что все материалы в этом блоге представляют личное мнение их авторов. Редакция SecurityLab.ru не несет ответственности за точность, полноту и достоверность опубликованных данных. Вся информация предоставлена «как есть» и может не соответствовать официальной позиции компании.

Бэкап знаний создан успешно!

Храним важное в надежном месте

Синхронизируйтесь — подпишитесь