Первая StrandHogg
В конце 2019 года ИБ-эксперты компании Promon рассказали об уязвимости в Android, которая позволяет вредоносным приложениям модифицировать легитимные и выполнять вредоносные операции от их имени.
Баг получил название StrandHogg и, по сути, он может обманом вынудить пользователя предоставить опасные привилегии вредоносному приложению, причем во время взаимодействия с приложением легитимными. Также проблему можно использовать для показа жертвам фальшивых страниц логина во время подключения к легитимным приложениям.
Суть StrandHogg в прошлом году хорошо объяснил редактор рубрики X-Mobile Евгений Зобнин: корень проблемы состоит в том, что в Android у активностей есть флаг taskAffinity. Он позволяет указать имя задачи (task), в стек активностей которой попадет указанное приложение. Это нужно для более тонкого управления стеками обратных переходов. Но по умолчанию значение taskAffinity равно имени пакета приложения, а это значит, что в ряде случаев можно незаметно всунуть активность своего приложения в стек активностей чужого. А если еще и указать флаг allowTaskReparenting="true", эту активность можно передвинуть на самый верх и при следующем клике по иконке целевого приложения она появится на экране первой (то есть будет находиться на вершине стека).
Эксплуатация проблемы требует, чтобы и вредоносное приложение, и приложение-жертва были уже запущены. Последовательность действий пользователя должна быть такой: он запускает приложение-жертву, возвращается на рабочий стол, затем запускает зловредное приложение, затем снова запускает приложение-жертву. В этот момент вместо холодного запуска Android просто показывает самую «верхнюю» активность в стеке, а ей оказывается активность вредоносного приложения.
Напомню, что инженеры Google отказались исправлять эту уязвимость в прошлом году и отказывались делать это годами ранее. Дело в том, что это называемый design flaw, то есть ошибка проектирования, исправление которой сломает существующий софт. Фактически Google предпочла сосредоточиться на обнаружении и блокировании вредоносных приложений, использующих уязвимость, а не на выпуске патча.
StrandHogg 2.0
Теперь специалисты все той же компании Promon опубликовали информацию о второй версии проблемы, назвав уязвимость StrandHogg 2.0 (CVE-2020-0096) и заявив, что она куда хуже первой.
Новая версия уязвимости работает похожим образом: заставляет жертву поверить, что та вводит свои учетные данные в легитимном приложении, тогда как на самом деле жертва взаимодействует с вредоносным оверлеем. Также Strandhogg 2.0 не требует каких-либо разрешений для работы, но может использоваться для получения различных разрешений через другие приложения (для последующей кражи конфиденциальных пользовательских данных, таких как контакты, фотографии, информация о местоположении).
Исследователи пишут, что основным слабым местом первой Strandhogg была необходимость объявить taskAffinity в Android Manifest. Так как манифест представляет собой обычный XML-файл и он должен быть включен в пакет, размещенный Google Play Store, его нельзя просто загрузить позже, после установки приложения. В итоге сканирование официального каталога приложений в поисках приложений с подозрительным taskAffinity было достаточно простым делом, что и практиковала Google.
Но, в отличие от своей предшественницы, проблема StrandHogg 2.0 не требует каких-либо специальных настроек в Android Manifest и использования taskAffinity. То есть вредоносный код не обязательно должен присутствовать в Google Play, вместо этого злоумышленник может загрузить его позже, когда опасное приложение уже установлено на устройстве пользователя.
Strandhogg 2.0 представляет угрозу для большинства версий Android (вплоть до 9), то есть риску подвержено примерно 90% всех пользовательской базы Android, и речь идет более чем о миллиарде устройств.
На этот раз инженеры Google все же выпустил патч для устранения уязвимости: исправление вошло в состав майских обновлений для Android. Специалисты Promon и Google пишут, что у них нет информации о том, что этой проблемой уже злоупотребляли хакеры. Впрочем, обнаружившие проблему исследователи говорят, что эксплуатацию Strandhogg 2.0 в принципе сложно заметить.