Une vulnérabilité jour zéro affecte le noyau de Linux depuis 2012

L’équipe de recherche du spécialiste de la sécurité Perception Point, a récemment découvert une vulnérabilité jour zéro dans le noyau de Linux, qui affecte des dizaines de millions d’ordinateurs, de serveurs, et de 66 % de smartphones et tablettes Android.

Pour mémoire, une vulnérabilité jour zéro est une vulnérabilité n’ayant fait l’objet d’aucune publication ou n’ayant pas de correctif disponible.

Elle a fait part de sa découverte en secret à l’équipe responsable de la sécurité du noyau, afin qu’elle prépare un correctif de sécurité.

Personne n’a découvert à ce jour une exploitation active de la vulnérabilité, CVE-2016-0728, ce qui ne signifie pas qu’elle ne l’est pas ou qu’elle ne l’a pas été: des entreprises ont pour modèle d’affaires de trouver, puis de vendre ces vulnérabilités jour zéro au plus offrant: États, organisation d’espionnage ou pirates.

Le bogue

Introduit dans le noyau 3.8, le bogue concerne un objet appelé keyring (porte-clés) qui permet à des pilotes de garder en cache dans le noyau des données de sécurité, des clés de chiffrement et d’autres données. Ces porte-clés peuvent être partagés par différents processus. Un processus ayant déjà un porte-clés peut le remplacer par un nouveau.

Un cas de figure a été oublié : quand un processus remplace son porte-clés par le même porte-clés, une fuite de mémoire a lieu, et le compteur du nombre de référence au porte-clés est incrémenté.

Comme ce compteur est un entier 32 bits, et qu’aucune vérification de débordement n’est effectuée, en remplaçant de nombreuses fois un porte-clés par lui-même, on peut faire croire au noyau qu’il n’est plus déréférencé et qu’il peut libérer la mémoire inutilisée.

On peut alors utiliser une vulnérabilité de type ‘use-after-free’ (utilisation après libération), en allouant un autre objet dans l’espace libéré et en utilisant la référence à l’ancien porte-clés, ce qui permet d’exécuter du code dans le mode le plus privilégié : root.

Mitigation

Des fonctionnalités de sécurité de Linux, comme SMAP, Supervisor Mode Access Prevention, et SELinux, Security-Enhanced-Linux, rendent plus difficile l’exploitation de ce type de vulnérabilité. Toutefois, il existe des solutions connues pour les contourner. Il faut donc appliquer le correctif dès que disponible.

Des correctifs pas appliqués ?

Les installations infectées sont sans aucun doute les smartphones et les tablettes Android. Si un administrateur système ou un utilisateur peut sans problème appliquer un correctif de sécurité sur son ordinateur ou sur un serveur, il n’en est pas de même pour les appareils mobiles Android.

Leur mise à jour dépend de différents acteurs : Google, opérateurs mobiles et fabricants de smartphones. Dans les faits, on sait que les appareils Android sont très rarement mis à jour. Malgré les efforts récents de Google et de certains fabricants comme Samsung pour accélérer la diffusion de correctifs de sécurité, on peut donc craindre que certains appareils mobiles sous Android ne reçoivent jamais le correctif de sécurité, et restent vulnérables pendant toute leur durée d’utilisation.