Улучшения безопасности в Android 4.3

Каждый выпуск 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 также могут включать эти исправления.