Некоторые устройства Marshmallow подвержены тапджекингу, когда приложение накладывает текст поверх диалогового окна разрешений, чтобы обмануть пользователя.
Хотя у многих из нас слюнки текут по недавно выпущенному Android Nougat для устройств Nexus, подавляющее большинство пользователей по-прежнему используют Android Marshmallow. Эксплойт, существование которого было задокументировано с тех пор. по крайней мере середина 2015 года по-прежнему влияет на многие современные устройства Android.
Вредоносные приложения способны тапджек ваши действия в предоставив им разрешение, которое вы никогда явно не давали. Вот как работает эксплойт.
Возвращение тапджекинга
Представьте, что вы открываете Instagram и пытаетесь поделиться фотографией, которую недавно сделали во время отпуска. Когда вы выбираете просмотр галереи в поисках изображения, Instagram просит вас предоставить ему разрешение на доступ к вашему хранилищу. Но когда вы нажимаете «да», вы получаете сообщение об ошибке.
Вы не можете предоставить разрешение на хранение Instagram, поскольку у вас включено активное наложение экрана – в в данном случае это одно из многих приложений, которые затемняют экран, чтобы можно было пользоваться телефоном ночью, не ослепляя. сам. Это случай системы разрешений Android.
работает как задумано: чтобы предоставить приложению конфиденциальное разрешение, вам необходимо отключить все наложения экрана на вашем устройстве.Приложения, способные рисовать на экране, потенциально могут обманом заставить вас передать ему конфиденциальные данные. Например, наложение экрана может разместить поддельный пароль поверх реального экрана входа в систему, чтобы собрать ваши пароли. Подобный эксплойт называется «перехват» и на протяжении многих лет появлялся и исправлялся в различных версиях Android, с один из худших примеров, просуществовавший до Android 4.0.3. Но недавно эксплойт вернулся с Модель разрешений во время выполнения Android Marshmallow.
Разработчик по имени Иво Банас создал приложение демонстрация эксплойта. Принцип работы довольно прост: когда приложение отображает диалоговое окно разрешения, вредоносное приложение установленное вами, отобразит системное наложение, закрывающее текстовый блок диалогового окна разрешений любым текстом. хочет. Ничего не подозревающий пользователь, который нажимает «разрешить» в диалоговом окне разрешений, будет обманом вынужден предоставить разрешение, о котором его просили, но для которого запрос был скрыт от просмотра пользователя. Подобный эксплойт полностью противоречит цели системы разрешений Android Marshmallow, поскольку с момента появления новая модель должна была гарантировать, что пользователи будут получать только те разрешения, на которые они явно согласились..
Теперь я знаю, о чем ты думаешь. Если бы Android обнаружил системное наложение и не позволил бы мне предоставить разрешения на хранение Instagram, разве это не предотвратило бы возникновение этого эксплойта? Ответ - нет, в ходе моего тестирования выяснилось, что на некоторых устройствах отображение текстового наложения поверх диалогового окна разрешений не запускает механизм безопасности. Разработчик приложения для проверки концепции перехвата сообщений утверждает, что эксплойт эффективен, поскольку он полагается на то, что пользователь устанавливает вторичное вредоносное приложение, нацеленное на уровень API 22 и ниже. (до Зефира). Это связано с тем, что до Android Marshmallow всем приложениям предоставлялись разрешения во время установки.
Хорошо, если вы используете Marshmallow, все, что вам нужно сделать, это избегать установки любых приложений, которым вы не доверяете, которые запрашивают разрешение на рисование наложения, верно? Если бы модель разрешений Android работала так, как было задумано изначально, вы были бы правы. Но с момента обнаружения этого эксплойта, даже приложения, ориентированные на уровень API 23 (Marshmallow), которые запрашивают разрешение на наложение, представляют собой потенциальный риск.
Пробел в модели разрешений?
Если вы один из многих миллионов людей, которые используют Facebook Messenger для общения с друзьями, то вы столкнулись с одной из лучших функций Android — возможностью приложений рисовать поверх других экраны. Насколько здорово, что вы можете разместить всплывающее окно с любимым групповым чатом Facebook, которое будет следить за пользователем поверх любого приложения, которое он открывает? Хотя Facebook Messenger сделал идею «плавающих приложений» популярной, эта концепция уже некоторое время существует в Android. Приложения уже некоторое время могут создавать наложения поверх ваших приложений благодаря существованию TYPE_SYSTEM_OVERLAY в WindowManager Android.
До появления Android Marshmallow приложениям нужно было запрашивать разрешение, называемое СИСТЕМА_ALERT_WINDOW во время установки, прежде чем он мог отображать наложения поверх экрана. Но ситуация изменилась с появлением в версии 6.0 детализированной модели разрешений во время выполнения. Теперь пользователям придется предоставлять разрешения приложениям при их фактическом запуске, что, как мы надеемся, повысит средний показатель пользователю защитить свои личные данные от приложений, которые подозрительно запрашивают, казалось бы, функционально не связанные разрешения.
Однако SYSTEM_ALERT_WINDOW не похож на другие разрешения. Разработчики не могут отображать диалоговое окно для программного запроса разрешения, предоставленного конечным пользователем, как и большинство других разрешений в любом приложении, ориентированном на Marshmallow. Вместо этого вам придется вручную перейти к экрану настроек и самостоятельно включить разрешение. Конечно, некоторые приложения, такие как Facebook Messenger, помогут вам в этом процессе.
Google требует этого от разработчиков, поскольку они считают, что это разрешение "особенно чувствителен."
Специальные разрешения
Есть несколько разрешений, которые ведут себя не как обычные и опасные разрешения. SYSTEM_ALERT_WINDOW и WRITE_SETTINGS особенно чувствительны, поэтому большинству приложений не следует их использовать. Если приложению требуется одно из этих разрешений, оно должно объявить это разрешение в манифесте и отправить намерение, запрашивающее авторизацию пользователя. Система реагирует на это намерение, показывая пользователю подробный экран управления.
Учитывая то, что мы знаем выше о перехвате данных, это имеет смысл. Но вот в чем дело. Google даже не следует своим собственным правилам. Скриншоты Facebook Messenger, которые помогут вам предоставить ему разрешение SYSTEM_ALERT_WINDOW, которое я показал вам выше? Это происходит только в том случае, если вы устанавливаете APK не из магазина Google Play. Если вы устанавливаете приложение из Google Play Store, Разрешение SYSTEM_ALERT_WINDOW предоставляется автоматически..
Google пожертвовал безопасностью ради удобства
Задолго до появления Android Marshmallow параметр SYSTEM_ALERT_WINDOW считался "опасный" разрешение. В Android Marshmallow 6.0 разрешение было изменено на подпись|система|приложение именно это изначально требовало от разработчиков привести пользователя к экрану настроек для предоставления разрешения. Но с версией Android 6.0.1, SYSTEM_ALERT_WINDOW изменено. чтобы Google Play Store может автоматически предоставить разрешениебез уведомления пользователя. Почему Google внес это изменение, нам неясно. Сами Google не заявили, почему они внесли это изменение, что особенно странно, учитывая формулировки о SYSTEM_ALERT_WINDOW, которые все еще существуют на их веб-страницах.
возможно, что достаточно разработчиков были возмущены из-за первоначальных изменений в SYSTEM_ALERT_WINDOW, которые требовали от пользователей вручную предоставлять разрешение, которое Google молчаливо уступал, и просто предоставлял его любому приложению, которое его запрашивало. Но при этом Google пожертвовали безопасностью ради удобства. Есть причина, по которой сами Google долгое время считали это разрешение опасным: так оно и есть. А существование эксплойта для перехвата разрешений Marshmallow является достаточным доказательством опасности, связанной с автоматическим предоставлением этого разрешения любому приложению.
Наше внимание было обращено на этот эксплойт лишь недавно, хотя он существует уже много месяцев. В ходе внутреннего тестирования устройств командой XDA Portal мы подтвердили, что эксплойт работает на многих современных устройствах под управлением Android Marshmallow. Вот краткий обзор устройств, которые мы тестировали на последних доступных версиях программного обеспечения для каждого соответствующего устройства, а также то, работает ли эксплойт перехвата. Устройства с пометкой «Уязвимые» уязвимы для взлома, а устройства с пометкой «Не уязвимы». Vulnerable» способны обнаружить приложение, отображающее наложение, и попросить вас отключить его перед этим. продолжение.
- Nextbit Robin — Android 6.0.1 с июньскими исправлениями безопасности — Уязвимый
- Moto X Pure — Android 6.0 с майскими исправлениями безопасности — Уязвимый
- Honor 8 — Android 6.0.1 с июльскими исправлениями безопасности — Уязвимый
- Motorola G4 — Android 6.0.1 с майскими исправлениями безопасности — Уязвимый
- OnePlus 2 — Android 6.0.1 с июньскими исправлениями безопасности — Не уязвим
- Samsung Galaxy Note 7 — Android 6.0.1 с июльскими исправлениями безопасности — Не уязвим
- Google Nexus 6 – Android 6.0.1 с августовскими исправлениями безопасности – Не уязвим
- Google Nexus 6P – Android 7.0 с августовскими исправлениями безопасности – Не уязвим
На данный момент это все устройства, которые мне удалось протестировать команде. Я не смог найти никакой корреляции между версией исправления безопасности и эксплойтом. Как вы можете сказать из нашего последнее обсуждение обновлений безопасности Android, многие люди в любом случае не используют последние исправления безопасности и, таким образом, возможно, уязвимы для этого эксплойта и других, описанных на странице Бюллетень по безопасности Android.
Двигаться вперед
Мы настоятельно рекомендуем вам протестировать этот эксплойт на своем устройстве, чтобы убедиться, что вы уязвимы.. Мы скомпилировали APK-файлы из исходный код указан выше (вы тоже можете сделать это самостоятельно) и загрузили их на AndroidFileHost. Чтобы протестировать эксплойт, вам необходимо установить обе версии: Основное приложение для прослушивания а также его вспомогательная служба. Затем просто запустите основное приложение и нажмите кнопку «тестировать». Если текстовое поле отображается поверх диалогового окна разрешений и когда вы нажимаете «разрешить», появляется список контактов вашего устройства, то ваше устройство уязвимо для перехвата. Не беспокойтесь о том, что плавающее текстовое поле не полностью закрывает диалоговое окно разрешений: это тестовое приложение не призван прекрасно продемонстрировать, как аккуратно перехватить диалог разрешений, а скорее доказать, что это действительно так. возможный.
Мы надеемся, что будет выпущено исправление, которое исправит этот эксплойт на всех устройствах Marshmallow, и что OEM-производители обновят все свои устройства до последней версии исправления безопасности. Потому что реальность такова, что большинству обещанных устройств потребуется много месяцев, чтобы получить Nougat, поэтому единственный способ для большинства пользователям, чтобы избежать опасности, необходимо либо установить последние исправления безопасности, либо получить разрешения для мониторинга приложений. сами себя. Но после решения Google автоматически предоставить потенциально опасное разрешение SYSTEM_ALERT_WINDOW многие пользователи по незнанию запускают приложения, которые потенциально могут захватить их телефоны, чтобы предоставить все более и более опасные разрешения.