Каждый выпуск Android включает десятки улучшений безопасности для защиты пользователей. Ниже приведены некоторые улучшения безопасности, доступные в Android 4.3:
- Android-песочница, усиленная SELinux. В этом выпуске изолированная программная среда Android усилена с помощью обязательной системы управления доступом (MAC) SELinux в ядре Linux. Усиление SELinux невидимо для пользователей и разработчиков и повышает надежность существующей модели безопасности Android, сохраняя при этом совместимость с существующими приложениями. Для обеспечения постоянной совместимости этот выпуск позволяет использовать SELinux в разрешительном режиме. Этот режим регистрирует любые нарушения политики, но не нарушает работу приложений и не влияет на поведение системы.
- Нет программ setuid/setgid. Добавлена поддержка возможностей файловой системы для системных файлов Android и удалены все программы setuid/setguid. Это уменьшает поверхность корневой атаки и вероятность потенциальных уязвимостей безопасности.
- ADB-аутентификация. Начиная с Android 4.2.2, подключения к ADB аутентифицируются с помощью пары ключей RSA. Это предотвращает несанкционированное использование ADB, когда злоумышленник имеет физический доступ к устройству.
- Запретить Setuid из приложений Android. Раздел /system теперь монтируется nosuid для процессов, порожденных zygote, что не позволяет приложениям Android выполнять программы с setuid. Это уменьшает поверхность корневой атаки и вероятность потенциальных уязвимостей безопасности.
- Ограничение возможностей. Android zygote и ADB теперь используют prctl(PR_CAPBSET_DROP) для удаления ненужных возможностей перед выполнением приложений. Это не позволяет приложениям Android и приложениям, запускаемым из оболочки, получать привилегированные возможности.
- Поставщик AndroidKeyStore. У Android теперь есть поставщик хранилища ключей, который позволяет приложениям создавать ключи монопольного использования. Это предоставляет приложениям API для создания или хранения закрытых ключей, которые не могут использоваться другими приложениями.
- KeyChain isBoundKeyAlgorithm. Keychain API теперь предоставляет метод (isBoundKeyType), который позволяет приложениям подтверждать, что общесистемные ключи привязаны к аппаратному корню доверия для устройства. Это обеспечивает место для создания или хранения закрытых ключей, которые нельзя экспортировать с устройства даже в случае компрометации root.
- NO_NEW_PRIVS. Android zygote теперь использует prctl(PR_SET_NO_NEW_PRIVS) для блокировки добавления новых привилегий перед выполнением кода приложения. Это не позволяет приложениям Android выполнять операции, которые могут повысить привилегии через execve. (Для этого требуется ядро Linux версии 3.5 или выше).
- FORTIFY_SOURCE улучшений. Включен FORTIFY_SOURCE на Android x86 и MIPS, а также усилены вызовы strchr(), strrchr(), strlen() и umask(). Это может обнаружить потенциальные уязвимости, приводящие к повреждению памяти, или незавершенные строковые константы.
- Защита от переезда. Включены перемещения только для чтения (relro) для статически связанных исполняемых файлов и удалены все перемещения текста в коде Android. Это обеспечивает глубокую защиту от потенциальных уязвимостей повреждения памяти.
- Улучшенный EntropyMixer. EntropyMixer теперь пишет энтропию при выключении/перезагрузке, помимо периодического перемешивания. Это позволяет сохранить всю энтропию, сгенерированную при включении устройств, и особенно полезно для устройств, которые перезагружаются сразу после инициализации.
- Исправления безопасности. Android 4.3 также включает исправления для специфичных для Android уязвимостей. Информация об этих уязвимостях была предоставлена членам Open Handset Alliance, а исправления доступны в Android Open Source Project. Для повышения безопасности некоторые устройства с более ранними версиями Android также могут включать эти исправления.