Avec chaque version d'Android, Google ajoute des fonctionnalités permettant de sécuriser un peu plus son OS mobile. Deux des dernières caractéristiques de sécurité dans Android 4.4 KitKat, issues de développement pour le noyau Linux, sont d'ailleurs particulièrement remarquables. Les politiques issues de Security-Enhanced Linux ( SELinux ) sont entièrement activées dans KitKat et dm-verity y a même été ajouté. Ces deux fonctionnalités devraient améliorer efficacement l'intégrité et la confiance des utilisateurs critiques envers Android. Ces deux caractéristiques s'appuient sur les travaux antérieurs de Google visant à renforcer les défenses d'Android contre les attaques des cybercriminels. On pense notamment au chiffrement intégral de l'espace de stockage (dm-crypt ) ajouté dés Android 3.x et à Address Space Layout Randomisation, qui avait vu le jour dans Android 4.1.
SELinux régule l'accès des applications aux données sensibles
SELinux, un Linux security module (LSM), qui permet de définir une politique de contrôle d'accès obligatoire aux éléments du système, avait d'abord été partiellement testé sur Jelly Bean. Il se retrouve cette fois-ci pleinement fonctionnel dans KitKat. Ce module, dont l'architecture dissocie l'application de la politique d'accès, permet de limiter l'utilisation de fichiers, de ressources mais aussi l'interaction avec d'autres applications et bibliothèques par les programmes. Il permet notamment de classer les applications d'un système en différents groupes, avec des niveaux d'accès plus fins mais aussi d'attribuer un niveau de confidentialité pour l'accès à des objets systèmes, comme des descripteurs de fichiers, selon un modèle de sécurité multiniveau (MLS pour Multi level Security). Prenons l'exemple d'un exploit insérant du code malveillant dans l'une des fonctions du système d'Android pour en détourner des données utilisateur et les envoyer par Internet à l'auteur. Si l'utilisation d'Internet n'est pas configurée comme une politique SELinux, l'exploit peut fonctionner. Toutefois, sans accès à Internet, celui-ci est voué à l'échec.
DM-verity: un module de contrôle d'intégrité du noyau
Dm-verity est de son côté une autre caractéristique majeure de KitKat. Cette fonctionnalité expérimentale d'Android aide les utilisateurs à être sûr que lors du démarrage du périphérique, celui-ci est dans le même état que lors de sa dernière utilisation. Si la fonctionnalité est installée par le constructeur, elle peut donc permettre la vérification de l'intégrité du système d'exploitation Android installé sur la machine. Il s'agit en fait d'une chaîne de vérification démarrant via le logiciel d'amorçage (bootloader). Ce dernier est sécurisé par l'appareil grâce à une clé publique en lecture seule insérée dans l'appareil par le constructeur directement sur la ROM. Celle-ci permet de vérifier l'intégrité du noyau en comparant la signature numérique du logiciel d'amorçage du noyau Android avec la clé pour déterminer si des changements ou des mises à jours ont été effectuées et si ceux-ci sont légitimes ou pas.
Une clef publique est incluse sur la partition de démarrage et doit être vérifiée en externe par le constructeur. Elle est utilisée pour vérifier la signature et peut confirmer que la partition système est protégée et inchangée.
Le maillon suivant de la chaîne est le système de fichiers racine. A son tour, celui-ci est chargé et son intégrité vérifiée par dm-verity grâce à un ensemble de tables de hachage. Au lieu de procéder à une vérification globale des fichiers du système, l'ensemble de tables de hachage est utilisé pour les vérifier individuellement avec un incréments de 4k pour améliorer les performances. Si aucune anomalie n'est détectée, la version d'Android est alors validée. Si la vérification échoue, le dispositif génère une erreur I/O indiquant que le bloc ne peut pas être lu. Cette erreur sera alors considérée comme si le système était corrompu.
KitKat: Une possible alternative sécurisé pour les clients pro
Le procédé n'a toutefois rien de magique et dépend en grande partie des conditions d'intégration. Google doit en effet vérifier que les méthodes d'implémentation du constructeur sont irréprochables et lui conviennent. Le mois dernier, Adrian Ludwig, responsable de la sécurité chez Android, a d'ailleurs révélé que sur 1,5 milliard d' installations d'applications, les logiciels malveillants ne causaient un préjudice ou ne contournaient les défenses runtime que dans moins de 0,001% des cas. Un pourcentage attrayant pour les particuliers mais toujours insuffisant pour les terminaux mobiles des entreprises. KitKat, fonctionnant sur un dispositif conçu de façon appropriée, pourrait être une solution. Cette technologie ne fait toutefois pas de Google un pionnier. Des millions de PC tournant avec une distribution dotée de SELinux ont déjà démontré la faisabilité de ce choix. La firme reste toutefois la première à développer ce système à grande échelle sur des terminaux mobiles.