mercredi 11 décembre 2013

SELinux sur Android

Au départ développée par la NSA, SELinux est une surcouche destinée à sécuriser Linux plus en profondeur. SELinux est intégrée par défaut dans à peu prêt toutes les distributions Linux depuis 2003. Elle est cependant désactivée par défaut ce qui fait que peu de gens l'utilisent.

SELinux introduit une couche de sécurité de type MAC (Mandatory Access Control) par rapport au système traditionnel DAC (Discretionary Access Control).

Le DAC c'est le système de sécurité classique de Linux, à base de comptes utilisateurs, de groupes, de permissions en lecture, écriture, exécution, ... Le problème de ce système est que la sécurité repose sur le bon paramétrage de chaque application, de chaque bibliothèque. Un utilisateur non concerné par la sécurité peut faire n'importe quoi et faire un chmod 777 sur tout son compte. De plus, en DAC l'utilisateur root est omnipotent. C'est ce que la commande sudo essaye de réguler justement.

Un système MAC est plus précis, plus bas niveau. Avec, il est possible de réguler l'accès aux sockets, à la mémoire, aux processus, etc. Sous SELinux la sécurité MAC surpasse la sécurité DAC. Ainsi un répertoire en 777 ne sera accessible qu'aux utilisateurs autorisés par le MAC. Typiquement, le répertoire home d'une utilisateur ne sera lisible que par lui, et ceci quelque soit les permissions linux classiques.

En DAC chaque développeur doit décider des permissions à donner à son application ainsi qu'aux données et fichiers de configuration utilisés ou générés par cette application. En MAC tout ceci est décidé par l'administrateur via une politique de sécurité générale.

Concrètement parlant SELinux fonctionne en associant à chaque fichier du système un ensemble d'attributs supplémentaires. On peut manipuler ces attributs via l'option -Z de nombreuses commandes systèmes classiques (ex: ls -Z) La politique de sécurité liste les comportements autorisés ou interdits et ces règles sont appliquées via ces attributs supplémentaires. Par exemple on aura une règle "Le serveur Apache ne peut pas accéder au fichier /etc/shadow"

Le point faible de SELinux c'est que tout repose sur la politique de sécurité, elle même complexe à écrire. Heureusement il en existe des déjà toutes faites très exhaustives.

Originellement introduit dans Android via Cyanogen, SELinux est désormais officiellement disponible sur l'AOSP Android depuis la 4.3. Attention cependant, elle n'est pas activée par défaut et même activée elle ne régule le fonctionnement que de quelques services systèmes. On est donc loin d'un OS correctement sécurisé. Pour le moment, n'en déplaise à certain, iOS (non jailbreaké) reste un OS plus sur.

Dans cette vidéo un responsable du projet à la NSA commente le portage de SELinux sur Android.

SELinux Android

Aucun commentaire:

Enregistrer un commentaire