Схема атаки показана выше на иллюстрации из отчета Microsoft. Реальная атака с использованием такой уязвимости может выглядеть следующим образом. Пользователь устанавливает вредоносное приложение, которое при этом само не запрашивает особых прав на доступ к информации в смартфоне или планшете. Приложение без ведома пользователя через стандартные возможности API Android инициирует обмен данными с уязвимой программой. В нормальных условиях этот обмен файлами используется, например, чтобы загрузить фотографию в соцсеть из Галереи или приложить файл к письму в почтовом клиенте. Модифицируя имя файла по стандартным для подобных багов паттернам, например добавляя команду на переход в предыдущую директорию, злоумышленник может сохранить файл в произвольную точку. В Microsoft выявили два очень популярных приложения, которые оказались уязвимыми для подобной атаки: штатный менеджер файлов для телефонов Xiaomi и офисный пакет WPS Office. Обе программы установлены на сотни миллионов устройств.
Приложение Xiaomi было подробно проанализировано в отчете. Абсолютно штатные средства обмена данными в Android не являются проблемой в данном случае. Ошибкой разработчиков файлового менеджера стало отсутствие проверок входящих данных. Точнее, код для валидации идентификатора URI для входящего файла есть, но по факту он не работает. Само по себе подкидывание файла в произвольную директорию ничего не дает. Во-первых, приложение-жертва в любом случае имеет ограничение на запись файлов, оно может это делать только в тех папках, доступ к которым ему предоставлен. Не получится подменить системные файлы — например, библиотеки, сохраненные в директории /data/app, которые использует уязвимое ПО. Но в каких-то случаях приложения сохраняют некоторые библиотеки в своей домашней директории, куда можно сохранить произвольный файл. Такая библиотека используется во встроенном плагине файлового менеджера Xiaomi, предназначенного для удаления мусорных файлов — она подгружается как раз из домашней директории.
Просто подменить этот исполняемый файл на другой с использованием трюка с обменом данными не получится. Но, как выяснилось, эту же уязвимость можно задействовать для перезаписи файла с настройками файлового менеджера. В этом файле можно подменить имя и хеш-сумму легитимной библиотеки, таким образом заставив уязвимое приложение загрузить сторонний файл. В результате следующий запуск фичи для удаления мусора из системы приведет к выполнению произвольного кода. Дальше исследователи предположили сценарий, в котором атакующий пользуется широкой функциональностью файлового менеджера. В частности, если владелец телефона использует менеджер для доступа к сетевым папкам, злоумышленник может подкидывать файлы уже туда, таким образом масштабируя атаку. Из-за своих особенностей атака получила название Dirty Stream.
К счастью, для приложений Xiaomi и WPS Office атака так и осталась теоретической: разработчики программ выпустили исправления. Но такая же уязвимость может присутствовать и в других приложениях. В результате получился интересный, хотя и довольно сложный способ расширения привилегий вредоносного приложения за счет легитимных программ. По совпадению, на прошлой неделе американское госагентство по кибербезопасности также
Что еще произошло
Компания Google
Больше 2100 серверов, использующих ПО GitLab для приватной разработки, имеют серьезную эксплуатируемую уязвимость.
В Великобритании законом
Проведен интересный