ClickCease CVE-2021-38604 - Une nouvelle vulnérabilité dans Glibc | tuxcare.com

Rejoignez notre populaire bulletin d'information

Rejoignez 4 500+ professionnels de Linux et de l'Open Source !

2 fois par mois. Pas de spam.

L'équipe TuxCare identifie CVE-2021-38604, une nouvelle vulnérabilité dans glibc

13 août 2021 - L'équipe de relations publiques de TuxCare

L'équipe TuxCare est chargée d'effectuer des analyses approfondies des nouveaux CVE. Ceci est fait pour chaque nouvelle CVE qui apparaît et qui affecte, directement ou indirectement, l'écosystème Linux. Nous vérifions si les distributions pour lesquelles nous fournissons des services sont affectées. Lorsqu'un tel CVE affecte les distributions prises en charge, les membres de l'équipe retroussent leurs manches et commencent à creuser dans le code.

En effectuant ce travail sur CVE-2021-33574, Nikita Popov, un des membres de notre équipe, a identifié un problème avec la glibc en amont. Il s'avère qu'il est possible de provoquer une situation où une erreur de segmentation pourrait être déclenchée dans un chemin de code spécifique au sein de la bibliothèque. Cela peut, à son tour, conduire à un crash de l'application utilisant la bibliothèque, ce qui entraîne un problème de déni de service.

Gardez à l'esprit que la glibc fournit les principales primitives du système et est liée à la plupart, sinon à toutes les autres applications Linux, y compris les compilateurs et les interpréteurs d'autres langages. Elle est le deuxième composant le plus important d'un système après le noyau lui-même.

Ce problème a été introduit avec le correctif amont original pour CVE-2021-33574, spécifiquement dans le fichier mq_notify.c:

 

@@ -133,8 +133,11 @@ helper_thread (void *arg)
            (void) __pthread_barrier_wait (&notify_barrier);
        }
      else if (data.raw[NOTIFY_COOKIE_LEN – 1] == NOTIFY_REMOVED)
–       /* The only state we keep is the copy of the thread attributes.  */
–       free (data.attr);
+       {
+         /* The only state we keep is the copy of the thread attributes.  */
+         pthread_attr_destroy (data.attr);
+         free (data.attr);
+       }

 

Alors que l'appel free() est immunisé contre les pointeurs NULL qui lui sont passés, pthread_attr_destroy() ne l'est pas. Il a été possible d'identifier deux situations où le noyau Linux utiliserait le message NOTIFY_REMOVED tout en passant des attributs de thread copiés en cours de route dans le champ data.attr. Malheureusement, une application hôte peut y passer une valeur NULL si elle souhaite que la glibc génère un thread avec des attributs par défaut. Dans ce cas, la glibc déréférencerait un pointeur NULL dans pthread_attr_destroy, ce qui entraînerait un plantage de l'ensemble du processus.

Conformément aux directives de divulgation responsable, la vulnérabilité et la correction du code ont été soumises à l'équipe responsable de glibc, et un CVE a été demandé à Mitre (CVE-2021-38604). Dans la glibc, elle a été attribuée au bogue 28213. Celui-ci a déjà été incorporé dans la glibc amont.

Un nouveau test a également été soumis à la suite de tests automatisés de la glibc pour détecter cette situation et éviter qu'elle ne se reproduise à l'avenir. Parfois, des changements dans des chemins de code non liés peuvent entraîner des changements de comportement ailleurs dans le code sans que le programmeur en soit conscient. Ce test permet de détecter cette situation.

Pour le contexte, la famille de fonctions "mq_" fournit une fonctionnalité d'API de file d'attente de messages conforme à POSIX et des notifications asynchrones de messages entrants, et est généralement utilisée pour les communications interprocessus.

 

Liens pertinents :

https://sourceware.org/git/?p=glibc.git;a=commit;h=42d359350510506b87101cf77202fefcbfc790cb

https://sourceware.org/bugzilla/show_bug.cgi?id=28213

Vous cherchez à automatiser la correction des vulnérabilités sans redémarrage du noyau, temps d'arrêt du système ou fenêtres de maintenance programmées ?

Découvrez le Live Patching avec TuxCare

Devenez rédacteur invité de TuxCare

Commencer

Courrier

Rejoindre

4,500

Professionnels de Linux et de l'Open Source
!

S'abonner à
notre lettre d'information