Cloak and Dagger: дыра во всех версиях Android

Как пара незаметных разрешений позволяет приложению воровать пароли, записывать действия пользователя и делать много что еще.

Cloak and Dagger: дыра во всех версиях Android

Внимание, это не учебная тревога. Это касается всех версий Android, и на момент публикации данного поста Google не закрыла эту уязвимость. Она позволяет воровать данные, в том числе пароли, устанавливать приложения с полным набором разрешений и следить за тем, что человек делает и что набирает на клавиатуре любого Android-телефона или планшета. Внимание, это не учебная тревога…

Атаку, получившую название Cloak and Dagger (Плащ и Кинжал — видимо, в честь героев комиксов Marvel), продемонстрировали сотрудники технологического университета Джорджии и университета Калифорнии. Они трижды пытались обратить внимание Google на проблему, но Google каждый раз отвечала, что все работает так, как и задумано. Исследователям не оставалось ничего, кроме как опубликовать свои открытия — для этого они даже сделали отдельный сайт cloak-and-dagger.org.

В чем заключается атака Cloak and Dagger

Если вкратце, то атака сводится к тому, что, используя приложение из Google Play, не требующее от пользователя никаких специальных разрешений, атакующие получают возможность выводить интерфейс этого приложения поверх других и нажимать за пользователя кнопки — так, что он сам этого не видит.

Это оказывается возможным потому, что при установке приложений из Google Play от пользователя не требуют в явном виде разрешать приложениям доступ к функциям SYSTEM_ALERT_WINDOW, а разрешение на доступ к ACCESSIBILITY_SERVICE (A11Y) получить довольно легко.

Что это за разрешения? Первое из них позволяет выводить интерфейс приложения поверх любого другого приложения, а второе дает доступ к набору функций для людей с ограниченными возможностями. Доступ к Accessibility Service — весьма опасная штука, поскольку эта функция позволяет приложению не только отслеживать, что происходит в других приложениях, но и взаимодействовать с ними от лица пользователя.

Казалось бы, ну что может пойти не так?

Невидимый слой

Суть атак с использованием первого разрешения, SYSTEM_ALERT_WINDOW, примерно такова. Это разрешение, которое Google Play выдает фактически по умолчанию, дает приложению возможность показывать что угодно поверх любых других приложений. При этом выводимые окна могут быть произвольной формы, в том числе с дырками, а также они могут либо фиксировать нажатия, либо пропускать их — так, чтобы их учитывало приложение, находящееся уровнем ниже.

Например, можно создать прозрачный слой, который накладывается на клавиатуру Android-устройства и считывает все нажатия. Сопоставляя координаты места, где пользователь нажал на экран, и вид клавиатуры, атакующий получает возможность узнать, что именно пользователь набирает на этой самой клавиатуре. Вуаля, кейлоггер готов. Это один из примеров, который исследователи привели для демонстрации атаки.

Вообще, SYSTEM_ALERT_WINDOW — тоже довольно опасное разрешение, и Google сама полагает, что оно будет использоваться в малом количестве приложений. Но, поскольку оно нужно таким популярным программам, как Facebook Messenger (да-да, круглые портреты, которые выводятся поверх всего остального — это оно), Skype и Twitter, в Google, видимо, решили, что пользователям будет проще, если Google Play будет выдавать данное разрешение без явного вопроса пользователю. Простота и безопасность, к сожалению, довольно часто противоречат друг другу.

Чем опасны «Специальные возможности»

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

Скажем, для того, чтобы озвучивать голосом происходящее на экране для людей с плохим зрением, приложение с доступом к Accessibility может получать информацию о том, что происходит на устройстве: какое приложение открыто, куда нажимает пользователь, когда всплывает уведомление. То есть ему известен весь контекст происходящего. И это еще не все: приложение может не только наблюдать, но и предпринимать от лица пользователя различные действия.

В целом, Google в курсе того, что доступ к Accessibility дает приложению возможность творить на устройстве практически все, что ему вздумается, поэтому для каждого отдельного приложения Accessibility необходимо включать в отдельном меню в настройках телефона.

Проблема в том, что, используя первое разрешение, SYSTEM_ALERT_WINDOW, и умело выводя окна, которые закрывают большую часть экрана, кроме кнопки OK, атакующие могут убедить пользователя, что соглашается он на что-то абсолютно безопасное, в то время как на самом деле он своими руками выдаст приложению доступ к Accessibility.

Ну а дальше, поскольку Accessibility умеет воспринимать контекст, действовать от лица пользователя и, в том числе, покупать приложения в магазине Google Play, атакующим не составит труда скачать из Google Play приложение-шпион с доступами к чему угодно и дать ему все мыслимые разрешения. При этом делать это можно даже при выключенном экране или, скажем, показывая поверх всего происходящего видеоролик — так, что пользователь ничего не заподозрит.

Идеальный фишинг

Также доступ к SYSTEM_ALERT_WINDOW и ACCESSIBILITY_SERVICE позволяет злоумышленникам проводить фишинговые атаки так, что пользователь о них никогда не догадается.

Например, когда пользователь открывает приложение Facebook и пытается ввести туда логин и пароль, другое приложение с доступом к Accessibility может это отследить. А дальше, воспользовавшись SYSTEM_ALERT_WINDOW и возможностью выводить слои поверх остальных, оно может показать пользователю покрашенное в цвета «Фейсбука» фишинговое окно, в которое ничего не подозревающий пользователь и введет логин и пароль от своей учетной записи.

Знание контекста в данном случае позволяет разработчикам выводить фишинговое окно именно тогда, когда пользователь собирается вводить пароль, и именно там, где надо. Ну а поскольку после ввода пароля пользователь, как он и ожидал, попадет в Facebook, у него не появляется даже намека на подозрения, что что-то произошло.

Послесловие

На самом деле все это называется общим словом tapjacking и первый раз подобная атака была продемонстрирована не вчера и не позавчера. Однако разработчики, в принципе, могут защищать свои приложения от такого рода атак, проверяя, не перекрыто ли их приложение чем-нибудь. Если перекрыто – приложение может не разрешать выполнять какие-либо действия.

Ответственные разработчики так и делают, поэтому, например, во многих банковских программах атака с tapjaсking не сработает. Если же вы не уверены в том, что какое-то из приложений, которое вы используете, защищено от атак вроде Cloak and Dagger, вы всегда можете написать его разработчикам и узнать, благо такая функциональность реализована во всех без исключения программах, которые попадают в Google Play.

Как защититься от плаща и кинжала

Авторы исследования протестировали атаку на трех самых популярных версиях Android — 5, 6 и 7, на которые в сумме приходится более 70% всех Android-устройств. Выяснилось, что все три версии уязвимы к этой атаке, и, скорее всего, более ранние версии также уязвимы. То есть, вероятнее всего, если у вас есть устройство на Android, то вас это тоже касается.

Так что вот наш главный совет:

1. Старайтесь не ставить неизвестные вам приложения из Google Play и других магазинов. Особенно бесплатные. Если вы не ставили и не запускали никаких сомнительных приложений, то и атаковать вас нечему. Правда, остается открытым вопрос, как отличить сомнительное приложение от безвредного.

2. Периодически проверяйте, к чему имеют доступ приложения на вашем устройстве и отзывайте лишние разрешения. О том, как это сделать, можно прочитать здесь.

Не забывайте про установку защитных решений на Android-устройства. Существует бесплатная версия Kaspersky Internet Security для Android, и если у вас нет защитного решения на телефоне или планшете, настоятельно рекомендуем поставить как минимум ее.

Советы

Как защитить умный дом

Чтобы умный дом принес вам больше пользы, чем вреда, его нужно правильно настроить и полноценно защитить. Разберем защиту умного дома в деталях.

Дом, умный дом

Скорее всего, уже сейчас в вашей квартире найдется несколько компонентов «умного» дома. Как извлечь из них максимум пользы и сделать по-настоящему умными?