Comment gérer et modifier Security-Enhanced Android
SE Android assure une protection contre les logiciels malveillants, mais il bloque parfois des fonctions courantes. Vous pouvez en modifier les paramètres afin de réactiver ces fonctions et applications.
Il est possible de modifier SE Android de façon à surveiller les appareils et à améliorer leur sécurité. Cette procédure exige cependant le débridage (rootage) de l'appareil et n'est donc pas à la portée de tous.
Security enhanced (SE) Android s'appuie sur SELinux. Cet ensemble de composants additionnels et d'outils de contrôle d'accès pour le noyau permet aux applications et aux autres logiciels de s'exécuter avec les seuls privilèges nécessaires à leur fonctionnement. Cela contribue à atténuer les dégâts causés par les logiciels malveillants, mais peut aussi bloquer des applications ou des fonctions dont les employés ont besoin.
SELinux propose de nombreuses fonctionnalités permettant aux administrateurs de serveur d'activer des fonctions qu'il risquerait autrement de bloquer. Ces outils sont également disponibles sur les appareils Android qui exécutent les versions 4.2 et ultérieures du système d'exploitation. Ils permettent de modifier le comportement par défaut de SE Android, à condition de posséder un accès distant et racine (root) aux appareils Android.
Pour obtenir l'accès distant, rien de plus simple : demandez aux utilisateurs de télécharger SSHDroid, une application Android qui vous permettra d'accéder à leurs appareils à partir d'un ordinateur à l'aide de Secure Shell (SSH). L'accès à la racine est plus complexe. Vous pouvez exécuter la commande Android Debug Bridge (adb), qui fait partie du SDK d'Android, ou « rooter » l'appareil pour obtenir un accès complet. Cette technique n'est pas à la portée de tout le monde, car les fournisseurs d'appareils mobiles ne la prennent pas en charge.
Exécution des commandes SE Android à partir de la ligne de commande Android
Une fois obtenu l'accès à l'appareil Android, exécutez la commande getenforce afin de connaître le mode d'exécution de SE Android. Dans Android 4.2 et 4.3, SE Android est exécuté en mode Permissive (permissif) par défaut. Dans Android 4.4 et les versions ultérieures, il est exécuté en mode Enforcing (appliqué), qui fournit une protection renforcée. Ce mode bloque les actions malveillantes et enregistre les données des applications afin de protéger l'appareil, tandis que le mode Permissive se contente d'enregistrer les appels système sans bloquer aucune action.
Avant d'activer le mode Enforcing sur un appareil, il convient de vérifier si SE Android bloque des applications et des fonctions à mauvais escient. Pour ce faire, saisissez dmesg | grep avc. La commande dmesg affiche tous les événements que le noyau a enregistrés, tandis que grep avc répertorie tous les appels système qui ont été bloqués par SE Android.
Décryptage des refus de SE Android
Malheureusement, les messages d'erreur enregistrés par SE Android sont souvent difficiles à interpréter. Les messages avc indiquent tous une action bloquée par SE Android, mais les fichiers journaux ne précisent pas s'il s'agit d'une action malveillante ou qui aurait dû être autorisée. Il est parfois impossible de déterminer ce qui a été bloqué et pourquoi. Si les messages du fichier journal vous paraissent obscurs, activez le mode Enforcing. Vous bloquerez ainsi de nombreuses fonctions, mais vous serez également fixé sur celles qui fonctionnent et celles qui ne fonctionnent plus.
Sur le sujet
Pour activer le mode Enforcing, exécutez la commande adb shell su 0 setenforce 1 puis redémarrez l'appareil. Essayez d'exécuter plusieurs applications afin de vérifier lesquelles fonctionnent. Etablissez une liste des fonctions et applications bloquées : cela vous aidera à déterminer celles qu'il convient de réactiver. Il vous faudra créer des règles pour les réactiver. La meilleure méthode consiste à recueillir tous les messages de refus, à les stocker dans un fichier et à appliquer ce dernier sur l'environnement SE Android d'un appareil avec audit2allow à l'aide de la commande adb shell su 0 cat /proc/kmsg > denial.txt &.
Avant de poursuivre, examinez le fichier et tentez de comprendre pourquoi les messages de refus sont renvoyés. Lorsque vous êtes certain de vouloir autoriser les appels système qui ont été refusés, vous pouvez exécuter la commande audit2allow -p out/target/product/<votre-appareil-ici>/root/sepolicy < denial.txt. Elle a pour effet d'ouvrir SE Android à tous les appels système précédemment bloqués.