Dans le gestionnaire de système systemd une vulnérabilité (), qui permet potentiellement d'exécuter son propre code avec des privilèges élevés en envoyant une requête spécialement formatée via le bus DBus. Le problème a été corrigé dans la version de test (correctifs résolvant le problème : , , ). La vulnérabilité a été corrigée dans les distributions , , (apparaît dans RHEL 8, mais n'affecte pas RHEL 7), , et , mais au moment de la rédaction de la nouvelle, elle reste non corrigée dans et .
La vulnérabilité est due à un accès à une zone de mémoire déjà libérée (use-after-free), qui se produit lors de l'exécution asynchrone des requêtes à Polkit pendant le traitement des messages DBus. Certaines interfaces DBus utilisent un cache pour stocker des objets pendant une courte période et nettoient les éléments du cache dès que le bus DBus est libre pour traiter d'autres requêtes. Si le gestionnaire de méthode DBus utilise bus_verify_polkit_async(), il peut avoir besoin d'attendre l'achèvement de l'action dans Polkit. Une fois que Polkit est prêt, le gestionnaire est appelé à nouveau et accède aux données précédemment allouées en mémoire. Si la requête à Polkit prend trop de temps, les éléments du cache peuvent être nettoyés avant que le gestionnaire de méthode DBus ne soit appelé une deuxième fois.
Parmi les services permettant d'exploiter la vulnérabilité, on note systemd-machined, qui fournit l'API DBus org.freedesktop.machine1.Image.Clone, ce qui entraîne un stockage temporaire de données dans le cache et un accès asynchrone à Polkit. L'interface
org.freedesktop.machine1.Image.Clone est accessible à tous les utilisateurs non privilégiés du système, qui peuvent provoquer des crashs de services systemd ou potentiellement exécuter du code avec des droits root (le prototype de l'exploit n'a pas encore été démontré). Le code permettant d'exploiter la vulnérabilité a été dans systemd-machined en 2015 dans la version (systemd 219 est utilisé dans RHEL 7.x).
Source : opennet.ru
