Я установил определенное ПЗУ, которое поставляется с SELinux в режиме «Permissive». Это единственное (хорошее) ПЗУ, которое соответствует моему устройству, и нет никакого способа изменить состояние SELinux.
Теперь я не совсем уверен, каковы последствия такого решения, и был бы рад, если бы кто-то мог мне это объяснить (я прогуглил это и знаю, что это теоретически ... просто не на практике). Упомянутый ROM имеет рут на «отключен», поэтому устройство предположительно не рутировано, но как это соотносится с SELinux, я не уверен.
cyanogenmod
rooting
custom-roms
selinux
j.d'oh
источник
источник
setenforce 1
из терминала эмулятор (как root)?Ответы:
TL; DR: не стесняйтесь прыгать прямо к выводу внизу, если хотите :)!
Цель SELinux - предотвратить повышение привилегий путем применения обязательной политики, которая ограничивает возможные действия как непривилегированных, так и привилегированных пользователей.
Термин «пользователи» здесь также включает любой процесс, запущенный на устройстве, независимо от того, связан ли он напрямую с физическими действиями пользователя (человек, вы;)), поскольку каждый процесс выполняется с использованием некоторой системной учетной записи «пользователя».
Исторически разрешения в системах на основе Unix обрабатываются с использованием так называемой системы контроля доступа (DAC). В этой модели:
root
в Unix-системах), который является администратором и имеет доступ ко всему в системе. Эта учетная запись может использоваться в интерактивном режиме человеком (обычно системным администратором) для обслуживания или ремонта устройства, но обычно эта учетная запись будет в основном использоваться фоновыми или низкоуровневыми службами, которым требуется такой уровень привилегий: драйверы устройств, службы конфигурации сети, службы необходимость доступа к файлам от каждого пользователя или обработка внутренней связи между пользователями.Это очень приятно и уже обеспечивает хорошую безопасность. Однако как насчет таких обстоятельств:
root
которая позволит злоумышленнику обманным путем заставить такую службу выполнить какой-либо произвольный код? Такой злоумышленник получит полный доступ к устройству. Чтобы привести некоторые конкретные примеры, такая ошибка может быть вызвана отправкой на телефон специально созданной информации о конфигурации сети ( DHCP ) или MMS .Вот идет SELinux.
SELinux - система обязательного контроля доступа (MAC). В то время как в ранее описанной системе пользователи ЦАП отвечали за установку соответствующих прав на свои собственные ресурсы, в случае системы MAC политика всей системы (предоставляется вместе с операционной системой) применяется как для привилегированных, так и для непривилегированных пользователей.
Это решает две проблемы, упомянутые выше, следующими способами:
Системы DAC и MAC не являются взаимоисключающими, напротив, система MAC (SELinux) выступает в качестве второго уровня защиты за системой DAC (традиционные Unix-подобные разрешения). Задача SELinux - блокировать любую деятельность, противоречащую политике, которая, в противном случае, с учетом только системы DAC, была бы принята.
Хитрость в том, что такая политика может быть очень сложной для написания: она действительно должна охватывать компоненты каждого устройства для каждого возможного использования в любой ситуации. Фактически, независимо от того, может ли какое-либо действие быть законным в вашей ситуации: если оно не в политике, оно запрещено . Поэтому неправильно разработанные политики могут иметь случайные последствия, такие как сбои приложений, непригодность к использованию и т. Д.
Вот почему первые версии Android, поставляющие SELinux, по умолчанию включили его в режим «Permissive». В этом режиме SELinux будет регистрировать нарушения политики, но не будет пытаться заблокировать связанные действия. Анализируя полученные файлы журналов, становится возможным исправлять и улучшать политику вплоть до того момента, когда единственное оставшееся нарушение политики действительно является вредоносным или нежелательным поведением. На этом этапе SELinux может быть переведен в режим «Enforcing»: теперь он будет не только регистрировать, но и блокировать каждое оскорбительное действие.
Вывод
SELinux - это метод смягчения последствий. Он не препятствует проникновению злоумышленников в ваш телефон, но гарантирует, что, оказавшись там, они могут делать как можно меньше вещей, в идеале ничего полезного, что устраняет в первую очередь интерес к атаке телефона.
Чем старше ПЗУ, тем больше ошибок безопасности, которые открывают такой доступ. SELinux был бы эффективным способом сохранить минимум безопасности, несмотря на эти известные уязвимости, однако для правильной работы SELinux использует сложную политику.
Если ваш ПЗУ по умолчанию поставляется с SELinux в режиме «Permissive», это, вероятно, означает, что содержащаяся в нем политика недостаточно надежна для безопасного переключения в режим «Enforcing».
Если вы достаточно техничны и имеете доступ к телефонному журналу (
dmesg
по крайней мере, но обычно они также копируются вlogcat
: есть приложения, позволяющие видеть последний, но в зависимости от вашей версии Android они могут требовать root-доступ), вы можете проверить, есть ли вы находите записи "avc": это сообщения о том, что SELinux только что обнаружил действие, противоречащее политике.Вот пример такой записи, взятой с сайта CyanogenMod :
Если их нет, только некоторые из них или по какой-либо причине, по вашему мнению, они могут не помешать вам пользоваться телефоном, вы можете попытаться переключить SELinux в режим «Принудительный». В старых ПЗУ CyanogenMod это было легко и возможно, просто используя скрытый параметр в графическом интерфейсе (не нужно рутировать телефон или устанавливать какое-либо конкретное приложение), я не знаю, предлагали ли другие ПЗУ ту же функцию, но поскольку вы использовали CyanogenMod тег, я полагаю, вам может повезти;).
источник