Google выпустила первую предварительную версию Android 14 для разработчиков. Теперь приложения должны указывать, каким образом они намерены использовать определенные функции устройства, обмен данными будет ограничен, а дополнительные файлы, загружаемые приложениями, будут доступны только для чтения.
Разработчики рассказывают, что благодаря использованию механизма Runtime receivers, ориентированные на Android 14 приложения, должны будут заявлять о том, что им нужно получить информацию от других приложений. В противном случае они будут ограничены только системными broadcast’ами.
Это нововведение является продолжением функции Context.registerReceiver(), представленной в предыдущих версиях Android. Этот механизм направлен на предотвращение перехвата или неправильного использования broadcast’ов вредоносными приложениями, что обычно используется малварью для доступа к другим приложениям.
Чтобы дополнительно усложнить перехват конфиденциальных пользовательских данных вредоносами, при обмене информацией между приложениям будет огранена отправка «намерений» (intents), которые не имеют конкретного получателя. Фактически это означает, что малварь более не сможет перехватывать «намерения», отправленные другими приложениями, и читать их содержимое.
Еще одной важной защитной функцией в Android 14 станет более безопасная загрузка динамического кода, которая ограничит любые файлы, загружаемые приложением, режимом read-only. По замыслу разработчиков, это должно предотвратить некоторые сценарии внедрения кода посредством манипуляций исполняемыми файлами, которые предназначены для запуска привилегированными приложениями.
Также напомню, что ранее уже сообщалось, что в Android 14 появится механизм для борьбы с вредоносными приложениями, которые нацеливаются на более старые уровни API (версии Android). Нельзя будет даже загрузить APK-файл и установить вручную, а также устанавливать приложения, которые не обновлялись в течение длительного времени. То есть Android 14 заблокирует установку любых вредоносных приложений, предназначенных для версий SDK ниже 23 (Android 6.0).