Инструмент и приложение для исследования с открытым исходным кодом, которое изучает обстоятельства, при которых модель разрешений Android может быть скомпрометирована, чтобы нанести ущерб конфиденциальности пользователей.
Обратите внимание, что здесь речь идет не об эксплойтах, а о нормальном использовании API Android, которыми можно манипулировать таким образом, чтобы раскрыть конфиденциальность пользователя телефона. Например. Одна из проблем заключается в том, что приложения могут отслеживать состояние экрана телефона, что, конечно, имеет законное использование. но также может использоваться в:
«приложение, примерно определяющее, в какое время вы используете свой телефон и сколько часов вы проводите по телефону каждый день».
Последствия этого для конфиденциальности заключаются в следующем:
«это может быть использовано для прямого слежения за пользователем и изучения его / ее модели использования телефона».
Исследование также рассматривает технические подробности этой проблемы:
Android отправляет трансляцию всякий раз, когда экран телефона включается / выключается. Итак, если приложение запускает службу (будь то передняя или фоновая служба), оно может непрерывно получать широковещательную рассылку, когда экран становится интерактивным / неинтерактивным (а затем получать фактическое состояние экрана с помощью getState()).
Это может быть законным, но также не требует, чтобы базовое приложение запрашивало какие-либо разрешения, что вызывает последствия для конфиденциальности. Следовательно, авторы, выявив проблему, вносят предложения в команду Android, чтобы смягчить ее. В случае с состоянием экрана их предложение было:
Трансляции состояния экрана должны быть защищены разрешениями.
Я думаю, это одна из составляющих уравнения. Другая часть заключается в том, чтобы команда Android включила эти уведомления, чтобы информировать пользователей об этих проблемах и их последствиях. Это слишком знакомая сцена — когда пользователь собирается установить приложение, его засыпают диалоговыми окнами, которые запрашивают различные разрешения.
Если пользователь получает сообщение:
«Разрешить приложению отслеживать состояние экрана»
это создало бы больше вопросов, чем ответов, что привело бы пользователя в замешательство.
«Что это значит? Позволить или нет?»
Поэтому, также представив ему уведомление, объясняющее проблему, упрощенную версию оригинала без технического жаргона, например:
Android отправляет трансляцию всякий раз, когда экран телефона включается / выключается. Таким образом, приложение может знать, когда экран становится интерактивным/неинтерактивным.
Таким образом, приложение может примерно определить, в какое время и в какое время вы пользуетесь телефоном и сколько часов вы проводите по телефону каждый день. Это можно использовать для непосредственного слежения за пользователем и изучения его / ее модели использования телефона.
помогло бы ему сделать осознанный выбор, давать ли приложению разрешение или нет. Таким образом, если используемое приложение является приложением для обмена сообщениями, оно должно отслеживать состояние экрана, чтобы при повторном открытии экрана отображались уведомления о непрочитанных сообщениях. В таком случае, да, позвольте.
Но если приложение, скажем, является редактором изображений, зачем ему заботиться об изменении состояния экрана? Здесь нет-нет, но опять же, пользователь должен быть проинформирован заранее.
При таком использовании проект оказывается более ценным, чем кажется на первый взгляд. То есть, помимо привлечения внимания к команде Android, это также помогает пользователям принимать обоснованные решения.
Проект также интересен с точки зрения разработчика, потому что вы обнаружите варианты использования и несколько событий, запускаемых ОС Android, к которым вы можете подключиться. Я познакомился с понятием трансляций и сервисов, когда делал Android Developer Nanodegree, но я не знал о нескольких трансляциях, описанных здесь, например:
«приложение может отслеживать, когда вы подключаете и удаляете зарядное устройство и наушники»
который я нашел очень интересным и хотел бы рассмотреть возможность включения в будущие приложения. Я узнал, как это сделать, изучив прилагаемый исходный код проекта.
Конечно, проект рассматривает эти трансляции с точки зрения конфиденциальности; точка зрения разработчика рассматривается как побочный эффект или дополнительный бонус.
Затем проблемы классифицируются по степени серьезности:
«Низкая серьезность» означает, что проблема имеет некоторое негативное влияние на конфиденциальность пользователя, но это нормально, поскольку у нее есть законный вариант использования.
«Средняя серьезность» означает, что проблема нарушает конфиденциальность пользователя, но не является шпионажем и может использоваться компанией только для аналитики.
«Высокая серьезность» означает, что проблема нарушает конфиденциальность пользователя и может использоваться для шпионажа (например, для отслеживания движений вашего тела и изучения вашего поведения).
Это индикатор, который суммирует вредоносность приложений. Например, пример мониторинга состояния экрана классифицируется как «высокий», потому что его можно использовать для прямого слежения за пользователем и изучения его/ее модели использования телефона.
Проблема с приложением, «которое может отслеживать, когда вы подключаете и удаляете зарядное устройство и наушники без каких-либо разрешений», помечена как низкая, потому что у этого есть некоторые законные варианты использования, например, если приложение хочет запустить важный долгий запущенная задача, то она может сделать это, когда телефон заряжается, чтобы убедиться, что аккумулятор не разряжен».
Проблема с приложением, которое «может определить, в какое время вы включаете/выключаете свой телефон без каких-либо разрешений», также отмечена как низкая, поскольку «эта функция имеет несколько законных вариантов использования, например, служба может правильно выполнить задачу очистки и плавно завершить работу. когда устройство выключается. Но время безотказной работы устройства — это системная информация, и предоставление ее всем приложениям без каких-либо разрешений может вызвать некоторые проблемы с конфиденциальностью для пользователя».
Другие изученные вопросы:
Приложения, установленные на вашем телефоне, могут узнать, под каким углом вы держите свой телефон, в каком направлении смотрит ваш телефон, и могут определить, перемещаете вы свой телефон или нет, и все это без каких-либо разрешений.
Приложение может получить список всех других приложений, установленных на вашем телефоне, без каких-либо разрешений.
Приложение может отслеживать использование вашего Wi-Fi / мобильных данных без каких-либо разрешений.
Приложение может получить большую часть информации о вашем устройстве без каких-либо разрешений.
Сопутствующее приложение PrivacyBreacher с открытым исходным кодом доступно в виде apk из репозитория Github или из Playstore. Это означает, что вы можете проверить все эти проблемы на своем телефоне. — хотя приложение поддерживает только Android Pie (Android 9, API 28) или более поздние версии, поэтому старые телефоны не смогут его запустить.