PSA: будьте осторожны при установке чего-либо с разрешенным SELinux.

click fraud protection

Недокументированная функция Android позволяет любому произвольному приложению получить root-доступ в разрешительной среде SELinux. Читайте дальше, чтобы узнать больше!

В мире моддинга Android люди склонны считать root-доступ краеугольным камнем всего. Оно позволяет пользователям полностью контролировать свои устройства и добавлять функции, которые не всегда доступны в стандартной конфигурации. Но, как говорится — «с большой силой приходит большая ответственность» — неразумно обходить модель безопасности Android, если вы не знаете, во что ввязываетесь. Как опытные энтузиасты Android на наших форумах, вы, вероятно, знаете о возможности существования бэкдоров на вашем устройстве, и вы, скорее всего, будете использовать надежный мод с поддержкой root поверх последней версии Android с новейшей безопасностью. патчи. Тем не менее, вы, возможно, знаете нескольких людей, которых на самом деле не волнует, какие корневые настройки они устанавливают, если они, по-видимому, им подходят. Вот почему вы все еще можете найти массу модов, которые работают только тогда, когда для SELinux установлен разрешительный режим, что, в свою очередь, делает их пользователей чрезвычайно восприимчивыми к угрозам безопасности.

Что такое SELinux

SELinux или Linux с повышенной безопасностью, представляет собой модуль безопасности ядра Linux, специально разработанный для доступа и управления политиками безопасности. Первоначально представлен в Android 4.3 Jelly Bean и по умолчанию установлен в принудительном режиме, начиная с Android. 4.4 KitKat, SELinux помогает обеспечить соблюдение прав контроля доступа и пытается предотвратить повышение привилегий. атаки. Короче говоря, SELinux действует как препятствие для несанкционированного контроля над вашим устройством, например, приложение или уязвимость, направленная на злонамеренное получение root-доступа. Установка для SELinux значения «Принудительный» по умолчанию является одним из ключевых способов защиты обычных пользователей от таких атак.

Почему Permissive SELinux не рекомендуется

Еще раз повторим: типичный способ получения root-доступа на устройстве Android не обязательно требует изменения статуса SELinux. Изменение режима SELinux с «Принудительного» на «Разрешительный» намеренно отключает одну из ключевых функций безопасности на устройстве, поэтому пользователь должен явно разрешить это, установив специализированное ядро ​​или изменив параметры существующего загрузочного образа. Плохо закодированный мод, в котором отсутствует правильная политика SELinux, обычно вынуждает конечных пользователей переходить на разрешительный SELinux и существенно расширяет поверхность атаки. Это именно тот разработчик vvb2060 продемонстрировали, когда они опубликовал доказательство концепции метода повышения привилегий где единственным требованием для получения контроля является разрешительный SELinux.

Введите Магику

Для пользователя получить полный root-доступ на своем устройстве под управлением Android 10 (или выше) с разрешенным режимом SELinux поразительно легко. сделать: Все, что вам нужно сделать, это нажать «Установить», и «Magica» автоматически получит root-доступ к службе и установит Magisk в загрузку. изображение. Это нечто гораздо более широкое, чем просто настройка вашего устройства. По словам старшего признанного разработчика XDA и сопровождающего Magisk. топджонву, любое произвольное приложение, включая вредоносное ПО, может навсегда рутировать ваше устройство без вашего согласия и разрешения с помощью PoC.

Если вам интересно на техническом уровне, что именно использует Magica, topjohnwu объяснил следующее: пост на Реддите:

«Когда SELinux разрешает во время загрузки, zygote узнает об этом и отключит фильтры системных вызовов seccomp. Это по сути не ограничивает то, какие системные вызовы разрешены в сторонних процессах.

В Android 10+ появилась новая «недокументированная» функция под названием «App Zygote», позволяющая сторонним приложениям создавать собственную Zygote для «изолированных служб» (также почти недокументированная). И «App Zygote», и «Изолированные службы» — это специальные функции, разработанные для Chrome/Webview*. Процессы приложения Zygote запускаются со специальными разрешениями, а при отключенном seccomp оно может вызвать setuid 0, повысить свои привилегии и получить root-доступ.

Это все еще несколько ограничительно по сравнению с тем, что предоставляют обычные корневые решения (например, Magisk), однако множество мер безопасности в Android будут полностью отключены, когда UID = 0. Например, его достаточно для исправления загрузочных образов, что означает, что его можно использовать для внедрения вредоносных программ, таких как модифицированный Magisk, чтобы помочь ему получить «настоящие» права root.

Обновление: что может сделать сам UID=0? В рамках Android почти все службы горят зеленым светом, когда UID запрашивающего процесса равен 0. Это означает, что этот корневой процесс способен манипулировать множеством вещей, используя API-интерфейсы Android (например, ActivityManager)».

*По данным разработчика авираксп, эти две функции в более общем плане предназначены «для совместного использования ресурсов и памяти между несколькими изолированными процессами».

Заключение

Учитывая непоправимый вред, который может быть нанесен пользователям, атакованным вредоносным ПО в разрешительной среде SELinux, мы настоятельно рекомендуем всем продолжать применять его без крайней необходимости. Хотя нам просто повезло, что у нас есть доказательство концепции эксплойта, мы понятия не имеем, сколько авторов вредоносных программ уже знают об этом пути атаки. В конце концов, жертва будет продолжать не обращать внимания на скомпрометированное состояние своего устройства, если она этого не сделает. стать свидетелем активного использования эксплойта, чего несложно добиться для мошеннического приложения с постоянным корнем доступ.