SELinux es un marco de seguridad que restringe los procesos (kernel y espacio de usuario) dentro de sus dominios de acuerdo con una política definida. Así que el objetivo final es cargar una política de trabajo, etiquetar los sistemas de archivos con los contextos adecuados y establecer SELinux enforcing
. No importa quién lo haga; el núcleo o algún proceso del espacio de usuario, aunque cuanto antes mejor. Y permissive
es un modo SELinux siempre listo para ser cambiado a enforcing
modo. Sin embargo, el cambio de modo puede o no estar permitido por la política.
En otras palabras, el hecho de que el núcleo sea permisivo SELinux por sí mismo no es un riesgo, si la ROM lo anula para hacerla cumplir. Lo que el kernel permisivo SELinux te da es flexibilidad para flashear ROMs que demanden SELinux permisivo o para cualquier otra aplicación que lo necesite. Pero es siempre es aconsejable mantener el dispositivo en el estado de ejecución SELinux ( getenforce
en el Emulador Terminal revelará).
La mayoría de los desarrolladores de ROM construyen el kernel con CONFIG_SECURITY_SELINUX_DEVELOP=y
. De configuración del kernel :
Con esta opción activada, el núcleo comenzará en permissive
modo (registrar todo, no negar nada) a menos que se especifique enforcing=1
en la línea de comandos del núcleo. Puede alternar interactivamente el kernel entre el modo de ejecución y el modo permisivo (si lo permite la política) a través de /selinux/enforce
.
Algunos proveedores pueden desactivar dicha configuración o pueden añadir enforcing=1
parámetro de arranque al kernel cmdline cuando se construye boot.img
de modo que SELinux siempre se aplica incluso antes del primer proceso de espacio de usuario init
ha comenzado. Yendo un paso más allá, las fuentes del núcleo de Samsung son parcheado con opciones SECURITY_SELINUX_ENFORCING
y ALWAYS_ENFORCE
. El otro extremo es que SELinux se desactiva del todo al construir con SECURITY_SELINUX_DISABLE=y
y escribiendo a /sys/fs/selinux/disable
o construyendo con SECURITY_SELINUX_BOOTPARAM=y
y pasando selinux=0
parámetro del núcleo.
Iniciar el kernel en modo permisivo le da al desarrollador de la ROM y a los usuarios finales la libertad de establecer el modo SELinux permissive
o enforcing
en el arranque (o incluso durante la ejecución del sistema operativo escribiendo a /sys/fs/selinux/enforce
), y desarrollar una política de acuerdo con los requisitos. Así es como userdebug
/ eng
se depuran las construcciones de ROMs. init
puede ser forzado a establecer SELinux permissive
en el arranque por el ajuste androidboot.selinux=permissive
parámetro de arranque.
Los fabricantes de equipos originales cambian a user
se construye cuando se liberan las existencias de ROM una vez sepolicy
está completamente desarrollado. init
en user
construye siempre establece SELinux enforcing
así que no arrancará con SELinux disabled
. Sin embargo, las ROMs personalizadas suelen permanecer userdebug
que permiten el acceso a root ( adb root
y /system/xbib/su
) y otras relajaciones. Algunos detalles más se pueden encontrar en ¿Qué contexto de la sepultura permitirá que cualquier otro contexto tenga acceso a ella?
Así que mientras disabled
o permissive
SELinux en el núcleo o en la ROM hace que el dispositivo sea igualmente vulnerable, un permissive
El núcleo suele ser algo bueno (al menos para los desarrolladores de ROM y los usuarios avanzados). Hacer cumplir el kernel es una exageración, a menos que el usuario esté pegado a la ROM de reserva durante toda la vida de un dispositivo. Sin embargo, si SELinux es disabled
(por ejemplo, construido sin CONFIG_SECURITY_SELINUX=y
), el stock de ROM se entrar en el bootloop .
- Si el núcleo se construye con
CONFIG_IKCONFIG
, extract-ikconfig
shell script puede ser usado para comprobar la configuración de la construcción sin necesidad de flashear al dispositivo. En un sistema operativo en funcionamiento zcat /proc/config.gz
puede ser usado.
- El tipo de construcción de la ROM se puede comprobar con
getprop ro.build.type
.
- Los parámetros de arranque de la línea de comandos del núcleo pueden comprobarse extrayendo
boot.img
. En el funcionamiento del sistema operativo cat /proc/cmdline
puede ser usado.
1 votos
Vamos a continuar esta discusión en el chat .
0 votos
Con el kernel permisivo flasheado la salida es idéntica a la de la pregunta