Я установил определенное ПЗУ, которое поставляется с SELinux в «разрешающем» режиме. Это единственное (хорошее) ПЗУ, которое правильно подходит для моего устройства, и нет возможности изменить состояние SELinux.
Теперь я не совсем уверен, каковы последствия такого решения, и был бы рад, если бы кто-нибудь мог мне это объяснить (я погуглил и знаю, что это такое теоретически... но не на практике). Корень указанного ПЗУ отключен, поэтому устройство предположительно не имеет рута, но как это согласуется с SELinux, я не уверен.
TL;DR: Не стесняйтесь сразу переходить к выводу внизу, если хотите :)!
Цель SELinux — предотвратить повышение привилегий путем применения обязательной политики, которая ограничивает возможные действия как непривилегированных, так и привилегированных пользователей.
Термин «пользователи» здесь также включает в себя любой процесс, запущенный на устройстве, независимо от того, связан ли он непосредственно с физическими действиями пользователя (человек, вы;)), поскольку каждый процесс выполняется с использованием некоторой системной «пользовательской» учетной записи.
Исторически сложилось так, что разрешения в системах на основе Unix обрабатываются с помощью так называемой системы дискреционного контроля доступа (DAC). В этой модели:
root
в системах на основе Unix), который является администратором и имеет доступ ко всему в системе. Эта учетная запись может использоваться интерактивно человеком (обычно системным администратором) для обслуживания или ремонта устройства, но обычно эта учетная запись в основном используется фоновыми или низкоуровневыми службами, которым требуется такой уровень привилегий: драйверы устройств, службы настройки сети, службы. необходимость доступа к файлам от каждого пользователя или обработка внутренней связи между пользователями.Это очень приятно и уже обеспечивает хорошую безопасность. Однако как быть с такими обстоятельствами:
root
которая позволит злоумышленнику обманом заставить такую службу запустить некоторый произвольный код? Такой злоумышленник получит полный доступ к устройству. Чтобы привести некоторые конкретные примеры, такая ошибка может быть вызвана отправкой специально созданной информации о конфигурации сети ( DHCP ) или MMS на телефон.А вот и SELinux.
SELinux — это система обязательного контроля доступа (MAC). В то время как в ранее описанной системе DAC пользователи отвечали за установку соответствующих прав на свои собственные ресурсы, в системе MAC общесистемная политика (обеспечиваемая операционной системой) применяется как к привилегированным, так и к непривилегированным пользователям.
Это решает две проблемы, упомянутые выше, следующими способами:
Системы DAC и MAC не являются взаимоисключающими, напротив, система MAC (SELinux) действует как второй уровень защиты после системы DAC (традиционные Unix-подобные разрешения). Работа SELinux состоит в том, чтобы блокировать любую активность, противоречащую политике, которая в противном случае была бы принята, учитывая только систему DAC.
Хитрость заключается в том, что такую политику может быть очень сложно написать: она действительно должна охватывать все компоненты устройства для каждого возможного использования в любой ситуации. На самом деле, неважно, допустимо ли какое-то действие в вашей ситуации: если его нет в политике, оно запрещено . Таким образом, плохо разработанные политики могут иметь случайные последствия, такие как сбои приложений, непригодные для использования функции и т. д.
Вот почему первые версии Android, поставляющие SELinux, по умолчанию включали его в «разрешающий» режим. В этом режиме SELinux будет регистрировать нарушения политики, но не будет пытаться заблокировать связанную с ними активность. Анализируя полученные файлы журналов, становится возможным исправить и улучшить политику до момента, когда единственным оставшимся нарушением политики действительно будет злонамеренное или нежелательное поведение. На этом этапе SELinux можно перевести в режим «Enforcing»: теперь он будет не только регистрировать, но и блокировать каждое нарушающее действие.
SELinux — это метод смягчения последствий. Это не мешает злоумышленникам проникнуть в ваш телефон, но гарантирует, что, оказавшись там, они смогут сделать как можно меньше вещей, в идеале ничего полезного, что в первую очередь устраняет любой интерес к атаке на телефон.
Чем старше ПЗУ, тем больше ошибок безопасности, открывающих такой доступ. SELinux был бы эффективным способом обеспечения минимальной безопасности, несмотря на эти известные уязвимости, однако для правильной работы SELinux полагается на сложную политику.
Если ваше ПЗУ поставляется с SELinux в «разрешающем» режиме по умолчанию, это, вероятно, означает, что содержащаяся в нем политика недостаточно надежна для безопасного переключения в «принудительный» режим.
Если вы достаточно технарь и имеете доступ к журналу телефона ( dmesg
по крайней мере, но обычно они также копируются в logcat
: есть приложения, позволяющие увидеть последний, но в зависимости от вашей версии Android они могут потребовать root-доступа), вы можете проверить, есть ли вы найдете записи «avc»: это сообщения о том, что SELinux только что обнаружил действие, противоречащее политике.
Вот пример такой записи, взятой с сайта CyanogenMod :
type=AVC msg=audit(1363289005.532:184): avc: denied { read } for pid=29199 comm="Trace"
name="online" dev="sysfs" ino=30 scontext=staff_u:staff_r:googletalk_plugin_t
tcontext=system_u:object_r:sysfs_t tclass=file
Если их нет, всего несколько или по какой-либо причине, по вашему мнению, они не могут помешать вам пользоваться телефоном, вы можете попробовать переключить SELinux в режим «Принудительно». В старых прошивках CyanogenMod это было легко и возможно, просто используя скрытую опцию в графическом интерфейсе (нет необходимости рутировать телефон или устанавливать какое-либо конкретное приложение), я не знаю, предлагали ли другие прошивки ту же функцию, но поскольку вы использовали CyanogenMod тег Я полагаю, вам может повезти ;).
март 2377 г.
setenforce 1
из эмулятора терминала (как root)?jd'oh