La conversion dans le cœur Linux 6.1 de VMA (Virtual Memory Area) de la structure de données « red-black tree » à « maple tree » a conduit à l'apparition d'une vulnérabilité (CVE-2023-3269) permettant à un utilisateur non privilégié d'exécuter son propre code avec les droits du noyau. La vulnérabilité, surnommée StackRot, se manifeste à partir de la version du noyau 6.1 et a été corrigée dans les mises à jour 6.4.1, 6.3.11 et 6.1.37.
La structure « maple tree » est une variante de l'arbre B, prenant en charge l'indexation par plages de valeurs et conçue pour un usage efficace du cache des processeurs modernes. Comparée à la « red-black tree », l'utilisation de la « maple tree » permet d'obtenir de meilleures performances. La vulnérabilité est due à une erreur dans le gestionnaire d'extension de pile : dans la structure « maple tree » utilisée pour gérer les zones de mémoire virtuelle dans le noyau, le remplacement d'un nœud dans l'arbre pouvait se faire sans verrouillage en écriture, créant ainsi des conditions d'accès à une zone de mémoire après sa libération (use-after-free).
L'exploitation de la vulnérabilité était compliquée par le fait que les nœuds dans la structure « maple tree » sont libérés de manière différée en utilisant des callbacks avec des verrous RCU (Read-copy-update). Néanmoins, les chercheurs ont réussi à surmonter ces obstacles et à préparer un exploit fonctionnel, qui devrait être publié à la fin du mois de juillet, afin de donner aux utilisateurs le temps de mettre à jour leurs systèmes. L'exploitation est possible dans presque toutes les configurations du noyau et ne nécessite que des privilèges minimaux.
Source : opennet.ru
