Содержание статьи
Запрет на фоновое использование камеры и микрофона
Об одном из самых заметных security-новшеств Android стало известно еще до выхода превью Android P, писали о нем и мы. Это, конечно же, запрет на использование камеры, микрофона и любых сенсоров приложениями, которые находятся в состоянии Idle, то есть свернуты и работают в фоне. Так что разного рода малварь, которая любит снимать и слушать происходящее вокруг, теперь должна отвалиться.
Но есть один нюанс: как быть с софтом, предназначенным для поиска смартфона? Есть множество приложений, позволяющих удаленно снимать и прослушивать происходящее, чтобы быстрее найти свой украденный смартфон.
Для этого Google в очередной раз предлагает использовать так называемый foreground service. Это специальный тип фоновой службы, которая имеет уведомление в панели уведомлений, а потому заметна пользователю. Никто не мешает тому же пользователю скрыть это уведомление стандартными средствами.
Запрет на cleartext HTTP
Второе важное нововведение Android P — полный запрет на использование HTTP без TLS (то есть без шифрования) для всех приложений, собранных для новой версии Android. Другими словами, если в build.prop
приложения указан targetSdkVersion
больше 27, то приложение не сможет подключаться к хостам по HTTP.
Это ограничение тем не менее можно обойти, если указать в файле настроек безопасности сети (network_security_config.xml
) список разрешенных доменов:
<domain-config cleartextTrafficPermitted="false">
<domain includeSubdomains="true">secure.example.com</domain>
</domain-config>
Шифрование резервных копий
Пока эта функция еще не активирована, но в следующих выпусках Android P можно будет указать пароль, без которого невозможно восстановить резервные копии настроек приложений, автоматически отправляемых в Google Drive. Это в том числе означает, что даже у Google не будет доступа к твоим данным. Apple, кстати, всегда имела доступ к резервным копиям и отдавала их властям по первому же запросу.
Диалоги подтверждения с защитой от MITM
Еще одно интересное нововведение Android P — доступный сторонним разработчикам «защищенный» диалог подтверждения (ConfirmationDialog). Он позволяет удостовериться, что пользователь действительно увидел текст диалога и согласился с ним, даже в том случае, если смартфон пользователя был взломан и малварь получила контроль над ядром и фреймворком.
Если пользователь положительно отвечает на сообщение диалога, приложение получает криптографическую подпись, защищенную кодом аутентификации сообщения с ключом-хешем (HMAC). Подпись создается доверенной средой исполнения (TEE), которая защищает диалоговое окно и ответ пользователя. Подпись означает, что пользователь действительно увидел сообщение и согласился с ним.
Запрет на использование скрытых API
В Android есть ряд скрытых, недоступных обычным приложениям API. Мы уже рассказывали о них и продемонстрировали, как получить доступ к этим API с помощью рефлексии. Так же поступают и другие разработчики приложений, а это приводит к уязвимостям и нестабильностям в работе приложений (скрытые API могут меняться и исчезать от версии к версии).
В Android P доступ к скрытым API запрещен. Более того, новая версия Android выводит уведомление в том случае, если приложение использует объявленные устаревшими (deprecated) API. Это должно заставить разработчиков перейти на использование новых API.
Криптографический модуль StrongBox
Некоторые из устройств, оснащенных Android P, могут иметь встроенный криптографический модуль StrongBox, работающий в кооперации с модулем TEE (Trusted Execution Environment, например, TrustZone в процессорах Qualcomm). По сути, этот модуль — реализованный в железе Keymaster HAL (Hardware Abstraction Layer), который в текущих версиях ОС представляет собой библиотеку, реализованную производителем устройства или чипсета.
Реализация OMAPI API
Android P поддерживает GlobalPlatform Open Mobile API (OMAPI API), предназначенный для доступа к защищенным элементам (Secure Elements, SE), специальным микрочипам, которые обычно устанавливаются в SIM-карты, банковские карты, карты оплаты проезда и смартфоны с поддержкой бесконтактных платежей.
Secure Element — отдельный микропроцессор с собственной памятью. Он отвечает за безопасное хранение и выполнение платежных приложений. В смартфонах с поддержкой NFC SecureElement обычно впаян в материнскую плату, но также может находиться SIM-карте или даже в карте памяти.
Одной строкой
- Начиная с Android P приложения больше не смогут прочитать серийный номер устройства через переменную
Build.SERIAL
. Она всегда будет равна UNKNOWN. Для получения серийного номера теперь нужно полномочие READ_PHONE_STATE. - Появилась нативная поддержка высокопроизводительного поточного шифра ChaCha20, который в том числе используется в браузере Chrome при соединении с сайтами Google, в ядре Linux для генерации случайных чисел и в некоторых системах потокового вещания.
- Правила SELinux теперь запрещают приложениям делиться данными с другими приложениями путем выставления открытых прав доступа на файлы.
- В следующих выпусках Android P планируется включить поддержку рандомизации MAC-адресов при сканировании Wi-Fi-сетей. Это позволит бороться с отслеживанием пользователей (в iOS такая функция встроена еще с версии 8).