Google is committed to advancing racial equity for Black communities. See how.
Эта страница переведена с помощью Cloud Translation API.
Switch to English

Linux с повышенной безопасностью в Android

Как часть модели безопасности Android, Android использует Linux с усиленной безопасностью (SELinux) для обеспечения обязательного контроля доступа (MAC) для всех процессов, даже для процессов, запущенных с привилегиями root / суперпользователя (возможности Linux). Многие компании и организации внесли свой вклад в реализацию SELinux для Android. С помощью SELinux Android может лучше защищать и ограничивать системные службы, контролировать доступ к данным приложений и системным журналам, уменьшать воздействие вредоносного программного обеспечения и защищать пользователей от потенциальных ошибок в коде на мобильных устройствах.

SELinux работает по принципу отказа по умолчанию: все, что явно не разрешено, отклоняется. SELinux может работать в двух глобальных режимах:

  • Разрешающий режим, в котором отказы в разрешении регистрируются, но не применяются.
  • Принудительный режим, в котором отказы в разрешениях регистрируются и применяются.

Android включает SELinux в принудительном режиме и соответствующую политику безопасности, которая по умолчанию работает в AOSP. В принудительном режиме запрещенные действия предотвращаются, и все попытки нарушения регистрируются ядром в dmesg и logcat . При разработке вы должны использовать эти ошибки для уточнения программного обеспечения и политик SELinux перед их применением. Дополнительные сведения см. В разделе « Реализация SELinux» .

SELinux также поддерживает разрешающий режим для каждого домена, в котором определенные домены (процессы) могут быть разрешены, а остальная часть системы переведена в глобальный принудительный режим. Домен - это просто метка, идентифицирующая процесс или набор процессов в политике безопасности, где все процессы, помеченные одним и тем же доменом, обрабатываются политикой безопасности одинаково. Разрешающий режим для каждого домена позволяет постепенно применять SELinux к постоянно увеличивающейся части системы и разрабатывать политику для новых служб (при сохранении принудительного исполнения остальной части системы).

Задний план

Модель безопасности Android частично основана на концепции « песочниц» приложений . Каждое приложение запускается в собственной песочнице. До Android 4.3 эти песочницы определялись путем создания уникального идентификатора Linux UID для каждого приложения во время установки. Android 4.3 и более поздние версии используют SELinux для дальнейшего определения границ изолированной программной среды Android-приложения.

В Android 5.0 и более поздних версиях SELinux полностью реализован на основе разрешительного выпуска Android 4.3 и частичного принудительного применения Android 4.4. С этим изменением, Android сдвинуты от исполнения на ограниченном наборе ключевых областей ( installd , netd , vold и zygote ) до всего (более 60 доменов). В частности:

  • В Android 5.x и выше все находится в принудительном режиме.
  • Нет процессы, кроме init должна выполняться в init домене.
  • Любой общий отказ (для block_device , socket_device , default_service ) указывает, что устройству нужен специальный домен.

Android 6.0 укрепил систему, уменьшив допустимость нашей политики, включив в нее лучшую изоляцию между пользователями, фильтрацию IOCTL, снижение угрозы открытых служб, дальнейшее ужесточение доменов SELinux и чрезвычайно ограниченный доступ /proc .

В Android 7.0 обновлена ​​конфигурация SELinux, чтобы дополнительно заблокировать изолированную программную среду приложения и уменьшить поверхность атаки. В этом выпуске также был разбит монолитный стек mediaserver на более мелкие процессы, чтобы уменьшить объем их разрешений. Дополнительные сведения см. В разделах «Защита Android с помощью дополнительных средств защиты ядра Linux» и « Повышение безопасности стека мультимедиа» .

В Android 8.0 обновлен SELinux для работы с Treble , который отделяет код поставщика нижнего уровня от системной платформы Android. В этом выпуске обновлена ​​политика SELinux, позволяющая производителям устройств и поставщикам SOC обновлять свои части политики, создавать свои образы ( vendor.img , boot.img и т. Д.), А затем обновлять эти образы независимо от платформы или наоборот.

Хотя на устройстве может быть запущена более высокая / новая версия платформы (фреймворка), обратный случай не поддерживается; образы поставщиков ( vendor.img/odm.img ) не могут иметь более новую версию, чем платформа ( system.img ). Таким образом, более новая версия платформы может вызвать проблемы совместимости с SELinux, потому что политика SELinux платформы имеет более новую версию, чем части политики SELinux поставщика. Модель Android 8.0 обеспечивает способ сохранения совместимости для предотвращения ненужных одновременных OTA.

Дополнительные ресурсы

Для получения помощи в создании полезных политик SELinux обратитесь к следующим ресурсам: