Détection d'un bogue dans le ramasse-miettes Linux pouvant entraîner une élévation des privilèges 

vulnérabilité systemd

Il ya quelques jours Jann Horn de l'équipe Google Project Zero, qui a précédemment identifié les vulnérabilités Spectre et Meltdown, a dévoilé une technique pour exploiter une vulnérabilité trouvé dans le ramasse-miettes du noyau Linux (CVE-2021-4083).

Vulnérabilité est causé par une condition de concurrence lorsque les descripteurs de fichier de socket unix sont nettoyés et permet potentiellement à un utilisateur local non privilégié d'exécuter votre code au niveau du noyau.

Le problème est intéressant car la fenêtre temporelle au cours de laquelle la condition de concurrence se produit a été jugé trop petit créer de véritables vulnérabilités, mais l'auteur de l'étude a montré que même des vulnérabilités initialement sceptiques peuvent devenir une source d'attaques réelles si le créateur de la vulnérabilité dispose des compétences et du temps nécessaires.

Yann Corne a montré comment, à l'aide de manipulations en filigrane, il est possible de réduire la condition Un événement de course qui se produit lors de l'appel simultané des fonctions close() et fget() à une vulnérabilité use-after-free entièrement exploitée et de l'accès à une structure de données déjà libérée dans le noyau.

Une condition de concurrence se produit pendant le processus de fermeture d'un descripteur de fichier tout en appelant les fonctions close() et fget() en même temps. L'appel à close() peut être exécuté avant l'exécution de fget(), ce qui confondra le collecteur d'éléments inutilisé car, selon refcount, la structure du fichier n'aura pas de références externes, mais restera attachée au descripteur de fichier, c'est-à-dire que le ramasse-miettes supposera qu'il a un accès exclusif à la structure, mais en fait pour une courte période de temps, l'entrée restante dans la table des descripteurs de fichier continuera d'indiquer que la structure est en cours de libération.

Pour augmenter la probabilité entrer dans une condition de course, plusieurs astuces ont été utilisées qui ont permis d'augmenter la probabilité de succès de la participation à 30% lors de l'exécution d'optimisations spécifiques du système. Par exemple, pour augmenter le temps d'accès à une structure avec des descripteurs de fichiers de plusieurs centaines de nanosecondes, les données ont été vidées du cache du processeur en polluant le cache avec une activité sur un autre cœur du processeur, ce qui a permis de renvoyer la structure de la mémoire et pas le cache rapide du processeur.

La deuxième caractéristique importante il était l'utilisation d'interruptions générées par un temporisateur matériel pour augmenter le temps de course. Le timing a été choisi pour que le gestionnaire d'interruptions se déclenche lors de l'apparition de la condition de concurrence et interrompe l'exécution du code pendant un certain temps. Pour retarder davantage le retour du contrôle, epoll a généré environ 50 XNUMX entrées dans la file d'attente, ce qui a nécessité une itération dans le gestionnaire d'interruptions.

La technique exploitation de la vulnérabilité a été divulgué après une période de non-divulgation de 90 jours. Le problème

et il a été réparé début décembre. Le correctif a été inclus dans le noyau 5.16 et a également été déplacé vers les branches LTS du noyau et les packages avec le noyau fourni dans les distributions. Il convient de noter que la vulnérabilité a été identifiée lors de l'analyse d'un problème similaire CVE-2021-0920, qui se manifeste dans le ramasse-miettes lors du traitement de l'indicateur MSG_PEEK.

Une autre vulnérabilité découverte récemment dans le noyau Linux, c'était le CVE-2022-0742 Quoi peut épuiser la mémoire disponible et provoquer à distance un déni de service en envoyant des paquets icmp6 spécialement conçus. Le problème est lié à une fuite de mémoire qui se produit lors du traitement des messages ICMPv6 avec les types 130 ou 131.

Le problème est présent depuis le noyau 5.13 et a été corrigé dans les versions 5.16.13 et 5.15.27. Le problème n'affectait pas les branches stables Debian, SUSE, Ubuntu LTS (18.04, 20.04) et RHEL, il a été corrigé sur Arch Linux.

Enfin si vous souhaitez en savoir plus de la note, vous pouvez vérifier les détails dans le lien suivant.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données : AB Internet Networks 2008 SL
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.