4 votes

Noyau permissif SELinux - est-ce un risque pour la sécurité ?

Comme dans le titre. Je parle de Kernel, pas de ROM (beaucoup de questions traitant de ROM sur ce site).

J'ai un OnePlus 7 fonctionnant sous Android 10 stock et je préfère un noyau personnalisé. Ces derniers temps, OnePlus n'a pas publié la source du noyau et cela a fait des ravages avec tous les noyaux personnalisés dans le OnePlus 7 et d'autres variantes. Donc, je veux flasher un Noyau qui est indépendant des changements effectués par One Plus.

Le seul problème est que c'est SELinux permissif et donc je veux comprendre les risques de sécurité avant de le flasher.

Edita:
Comme demandé dans les commentaires (supprimé) :

-# zcat /proc/config.gz | grep CONFIG_SECURITY_SELINUX
CONFIG_SECURITY_SELINUX=y
# CONFIG_SECURITY_SELINUX_BOOTPARAM is not set
# CONFIG_SECURITY_SELINUX_DISABLE is not set
CONFIG_SECURITY_SELINUX_DEVELOP=y
CONFIG_SECURITY_SELINUX_AVC_STATS=y
CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=0
- # zcat  /proc/config.gz |grep CONFIG_DEFAULT_SECURITY_SELINUX
CONFIG_DEFAULT_SECURITY_SELINUX=y
-# mount | grep selinuxfs
selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)

4voto

Irfan Latif Points 16863

SELinux est un cadre de sécurité qui restreint les processus (du noyau et de l'espace utilisateur) dans leurs domaines selon une politique définie. L'objectif final est donc de charger une politique fonctionnelle, d'étiqueter les systèmes de fichiers avec les contextes appropriés et de configurer SELinux. enforcing . Peu importe qui le fait : le noyau ou un processus en espace utilisateur, mais le plus tôt sera le mieux. Et permissive est un mode SELinux toujours prêt à être commuté en enforcing mode. Cependant, la commutation d'un autre mode peut ou non être autorisée par la politique.

En d'autres termes, le fait que le noyau soit permissif SELinux en lui-même ne constitue pas un risque, si la ROM passe outre pour le rendre exécutoire. Ce que le noyau permissif SELinux vous donne, c'est une flexibilité pour flasher les ROMs qui exigent le SELinux permissif ou pour toute autre application qui en a besoin. Mais c'est Il est toujours conseillé de garder le dispositif en état d'application de SELinux. ( getenforce sur l'émulateur de terminal s'affichera).

La plupart des développeurs de ROM construisent le noyau avec CONFIG_SECURITY_SELINUX_DEVELOP=y . De Configuration du noyau :

Avec cette option activée, le noyau démarrera en permissive (tout enregistrer, ne rien refuser) à moins que vous ne spécifiez le mode enforcing=1 sur la ligne de commande du noyau. Vous pouvez interactivement faire basculer le noyau entre le mode d'application et le mode permissif (si la politique le permet) via /selinux/enforce .

Certains vendeurs peuvent désactiver ladite configuration ou ajouter enforcing=1 Paramètre de démarrage à la ligne de commande du noyau lors de la construction. boot.img afin que SELinux soit toujours en vigueur avant même le tout premier processus en espace utilisateur. init est lancé. En allant un peu plus loin, les sources du noyau Samsung sont corrigé avec des options SECURITY_SELINUX_ENFORCING y ALWAYS_ENFORCE . L'autre extrême est que SELinux est désactivé du tout en construisant avec SECURITY_SELINUX_DISABLE=y et en écrivant à /sys/fs/selinux/disable ou en construisant avec SECURITY_SELINUX_BOOTPARAM=y et en passant selinux=0 paramètre du noyau.

Le démarrage du noyau en mode permissif donne au développeur de ROM et aux utilisateurs finaux la liberté de définir le mode SELinux. permissive o enforcing au démarrage (ou même pendant l'exécution du système d'exploitation en écrivant dans le fichier /sys/fs/selinux/enforce ), et élaborer une politique en fonction des exigences. C'est ainsi que userdebug / eng les constructions de ROMs sont déboguées. init peuvent être forcés à mettre en place SELinux permissive au démarrage en paramétrant androidboot.selinux=permissive paramètre de démarrage.

Les équipementiers passent à user lors de la publication des ROMs stock une fois sepolicy est pleinement développé. init sur user construit définit toujours SELinux enforcing pour qu'il ne démarre pas avec SELinux. disabled . Les ROMs personnalisées, cependant, restent généralement userdebug qui permettent l'accès Root ( adb root y /system/xbib/su ) et d'autres relaxations. Vous trouverez plus de détails dans Quel contexte de sepolicy permettra à tout autre contexte d'y accéder ?

Alors que disabled o permissive SELinux dans le noyau ou la ROM rend le dispositif tout aussi vulnérable, une permissive Le noyau est généralement une bonne chose (au moins pour les développeurs de ROM et les utilisateurs expérimentés). L'application du noyau est exagérée à moins que l'utilisateur ne soit collé à la ROM stock pendant toute la durée de vie d'un appareil. Cependant, si SELinux est disabled (par exemple, construit sans CONFIG_SECURITY_SELINUX=y ), la ROM de base se mettre en boucle de démarrage .

  • Si le noyau est construit avec CONFIG_IKCONFIG , extract-ikconfig Le script shell peut être utilisé pour vérifier la configuration de la construction sans avoir à flasher le dispositif. Sur un système d'exploitation en fonctionnement zcat /proc/config.gz peut être utilisé.
  • Le type de construction de la ROM peut être vérifié avec getprop ro.build.type .
  • Les paramètres de démarrage de la ligne de commande du noyau peuvent être vérifiés en extrayant boot.img . Sur le système d'exploitation cat /proc/cmdline peut être utilisé.

1 votes

Pour les lecteurs, j'ai flashé le noyau en question et je l'ai fait avec plaisir après les explications détaillées d'Irfan.

1 votes

@beeshyams merci :)

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X