RHSB-2021-006 Failles dans les noms de chemin long aux points de montage dans le noyau et dans systemd (CVE-2021-33909, CVE-2021-33910)

Public Date: July 8, 2021, 11:28
Mis à jour October 24, 2024, 12:01 - Chinese, Simplified Anglais Japanese Korean

Est-ce que cette infomation vous a été utile ?

Resolved État
Important Impact

Insights vulnerability analysis

View exposed systems

Red Hat est au courant de deux failles causées par la manipulation incorrecte des noms de chemin longs. La première vulnérabilité se trouve dans le noyau Linux, où un attaquant local peut augmenter le niveau de ses privilèges, et porte la désignation CVE-2021-33909. La deuxième vulnérabilité se trouve dans systemd, où un attaquant local peut planter systemd et l'ensemble du système, et porte la désignation CVE-2021-33910.

Les deux vulnérabilités ont un indice de gravité jugé Important.

Les versions de produits Red Hat suivants sont directement affectées par CVE-2021-33909 :

  • Red Hat Enterprise Linux 8

  • Red Hat Enterprise Linux 7

  • Red Hat Enterprise Linux 6

Les versions de produits Red Hat suivants sont affectées par CVE-2021-33910 :

  • Red Hat Enterprise Linux 8

De plus, tout produit Red Hat pris en charge par la plateforme Red Hat Enterprise Linux (y compris RHEL CoreOS) est aussi potentiellement impacté. Cela comprend :

  • Conteneurs de produits basés sur les images de conteneurs RHEL ou UBI. Les images de base seront mises à jour pour inclure les corrections de cette vulnérabilités, veuillez vous assurer que les conteneurs sont à jour. L'index de santé des conteneurs (Container Health Index), qui fait partie du Red Hat Container Catalog, peut toujours être utilisé pour vérifier le statut de sécurité des conteneurs Red Hat.

  • Les produits qui obtiennent des packages du canal RHEL (cela inclut les produits en couches tels que OpenShift Container Platform, OpenStack, Red Hat Virtualization et autres). Veuillez vous assurer que les packages du noyau Red Hat Enterprise Linux et systemd sous-jacents sont à jour dans ces environnements de produits.

Pour déterminer si votre système est actuellement concerné par ces failles de sécurité, voir la section Diagnostic ci-dessous.

Ces deux vulnérabilités exploitent des conditions où les fichiers contenant un chemin longs ne sont pas traités comme il le faudrait.

La première vulnérabilité (CVE-2021-33909) est une attaque contre le noyau Linux. Un attaquant local non privilégié peut exploiter cette vulnérabilité en créant, montant et supprimant une structure de répertoire profonde dont la longueur totale du chemin dépasse 1 Go. Une attaque réussie entraîne une escalade des privilèges.

La deuxième vulnérabilité (CVE-2021-33910) est une attaque contre systemd (le gestionnaire de systèmes et de services) et nécessite un attaquant local ayant la capacité de monter un système de fichiers avec un long chemin. Cette attaque provoque le plantage de systemd, des services qu'il gère et de l'ensemble du système, qui ne répond plus.

Red Hat a enquêté pour savoir si une atténuation possible existe pour ce problème et n'a pas été en mesure d'identifier un exemple pratique. Veuillez mettre à jour le paquet affecté dès que possible.

Les chercheurs ont signalé les deux vulnérabilités suivantes. Une brève description de chaque défaut et de son impact est présentée ci-dessous. 

CVE-2021-33909

Une faille d'écriture hors limites a été trouvée dans le fichier seq_file du noyau Linux dans la couche Filesystem. Cette faille permet à un attaquant local disposant d'un privilège d'utilisateur d'accéder à une mémoire non limitée, ce qui entraîne un plantage du système ou une fuite d'informations internes du noyau. Le problème résulte de la non validation de la conversion size_t-to-int avant d'effectuer les opérations. 

Cette vulnérabilité est une vulnérabilité de conversion de type dans la couche système de fichiers du noyau Linux. Une vulnérabilité de conversion de type est une condition lors de la conversion entre deux types et peut conduire à un débordement, créant une grande valeur négative.

Un attaquant doit être capable de :

  • Créer un long chemin

  • Monter un système de fichiers à cet endroit

  • Supprimer le point de montage

  • Lire le fichier /proc/<pid>/mountinfo

Ce problème sera déclenché, entraînant une écriture sur la mémoire du noyau au niveau d’un offset (déport) contrôlable.

Le fichier mountinfo est un exemple de fichier seq_file, qui est un fichier virtuel par l’intermédiaire duquel le noyau présente une séquence d'enregistrements. Chaque enregistrement doit tenir dans un tampon seq_file, dont la taille est suivie sous la forme size_t (une valeur non signée de 64 bits). Le problème se manifeste lorsqu'un chemin de point de montage très long est utilisé dans la fonction show_mountinfo.  

Ce processus s’attend à un int (integer / entier relatif) comme longueur du tampon (une valeur signée de 32 bits) comme indiqué ci-dessous : 

show_mountinfo() -> seq_dentry() -> dentry_path((.. , .. , int buflen) 

Notez que "buflen" peut causer un problème de conversion de size_t-to-int, transformant le nombre en une valeur négative entraînant ainsi une vulnérabilité d'accès hors limites.     

Lorsque le point de montage est toujours utilisé mais que le chemin a été supprimé, la valeur incorrectement calculée est utilisée comme offset pour inscrire la chaîne "//deleted" en dehors du tampon alloué. Comme la valeur est négative, elle s’inscrit sur un emplacement situé entre 2 Go et 10 octets avant l'emplacement prévu du tampon.

L'écriture à ce décalage crée un déni de service, plante le système et provoque une corruption de la mémoire ou une escalade des privilèges en ciblant des emplacements mémoire spécifiques.

CVE-2021-33910

Une faille a été trouvée dans systemd. L'utilisation de la fonction alloca avec une taille non contrôlée dans la fonction unit_name_path_escape permet à un attaquant local, capable de monter un système de fichiers sur un chemin très long, de faire planter systemd et l'ensemble du système en allouant un très grand espace dans la pile.

Il s'agit d'une alloca() contrôlée par un attaquant dans systemd, qui permet à un attaquant local de planter le service systemd (PID 1) et le système tout entier. Alloca() est utilisé pour allouer l'espace requis par un programme sur la pile. Alloca() ne doit pas être utilisée lorsque la taille demandée est contrôlée par un utilisateur ou lorsqu'elle est trop grande, car sinon, le programme pourrait écrire en dehors de l'espace de pile alloué et se planter. 

Systemd surveille constamment le fichier /proc/self/mountinfo pour obtenir des détails sur les systèmes de fichiers montés et duplique en interne la chaîne de points de montage en utilisant alloca(). Si un attaquant peut monter un système de fichiers sur un chemin très long (par exemple en utilisant FUSE), il peut déclencher ce problème et planter le système.

Ce problème n'affectait pas les versions de systemd livrées dans Red Hat Enterprise Linux 7 car elles n'utilisaient pas strdupa(), qui utilise alloca() en couche sous-jacente, pour dupliquer les chaînes dans la fonction unit_name_path_escape(), mais strdup(), qui alloue de l'espace sur le segment de mémoire.


CVE-2021-33909 (noyau)

Important

CVE-2021-33910 (systemd)

Important

Red Hat Enterprise Linux 8

Affecté - Les correctifs seront disponibles pour tous les flux actifs.  

Affecté - Les correctifs seront disponibles pour tous les flux actifs.  

Red Hat Enterprise Linux 7

Affecté - Les correctifs seront disponibles pour tous les flux actifs.  

Non affecté

Red Hat Enterprise Linux 6

Affecté - Les correctifs seront disponibles pour tous les flux actifs.  

Non affecté

Nous conseillons à tous les clients de Red Hat exécutant des versions de produits Red Hat affectés de procéder aux mises à jour dès que les correctifs seront disponibles. Les clients sont invités à appliquer immédiatement les mises à jour disponibles et à activer les mesures de mitigation de l’impact qu'ils jugent appropriées.  

Produit

Composante(s)

Alerte / Mise à jour [1]

Red Hat Enterprise Linux 8 

noyau

RHSA-2021:2714


kernel-rt

RHSA-2021:2715


kpatch

RHSA-2021:2716


systemd

RHSA-2021:2717

Red Hat Enterprise Linux 8.2.0 Extended Update Support [2]

noyau

RHSA-2021:2718


kernel-rt

RHSA-2021:2719


kpatch

RHSA-2021:2720


systemd

RHSA-2021:2721

Red Hat Enterprise Linux 8.1.0 Extended Update Support [2]

noyau

RHSA-2021:2722


kpatch

RHSA-2021:2723


systemd

RHSA-2021:2724

Red Hat Enterprise Linux 7

noyau

RHSA-2021:2725


kernel-rt

RHSA-2021:2726


kpatch

RHSA-2021:2727

Red Hat Enterprise Linux 7.7 Extended Update Support [2]

noyau

RHSA-2021:2728


kpatch

RHSA-2021:2729

Red Hat Enterprise Linux 7.6 Extended Update Support [2]

noyau

RHSA-2021:2730


kpatch

RHSA-2021:2731

Red Hat Enterprise Linux 7.4 Update Services pour SAP Solutions, Advanced Update Support [3],[4]


noyau

RHSA-2021:2732

Red Hat Enterprise Linux 7.3 Advanced Update Support [4]


noyau

RHSA-2021:2733


Red Hat Enterprise Linux 7.2 Advanced Update Support [4]


noyau

RHSA-2021:2734

Red Hat Enterprise Linux 6 Extended Update Support [5]

noyau

RHSA-2021:2735

Red Hat Virtualization 4 pour Red Hat Enterprise Linux 8

redhat-virtualization-host

RHSA-2021:2736

Red Hat Virtualization 4 pour Red Hat Enterprise Linux 7

redhat-virtualization-host

RHSA-2021:2737



[1] Le lien "Avis/Mise à jour" sera ajouté une fois que les mises à jour seront mises en ligne.

[2] Qu'est-ce que l'abonnement à Red Hat Enterprise Linux Extended Update Support (EUS) ?

[3] Qu'est-ce que l'Advanced mission critical Update Support (AUS) ?

[4] Qu'est-ce que l'abonnement à Red Hat Enterprise Linux SAP Solutions ?

[5] L'accès à ce patch nécessite un abonnement actif à Extended Life-cycle Support (ELS). Veuillez contacter le service commercial de Red Hat ou votre représentant commercial spécifique pour plus d'informations si votre compte n'a pas d'abonnement ELS actif.

Un script de détection a été développé afin de déterminer si votre système est actuellement concerné par cette faille de sécurité. Pour vérifier la légitimité du script, vous pouvez télécharger la signature GPG détachée également. Les instructions sur la manière d'utiliser la signature GPG pour la vérification sont disponibles sur le Portail client. 

Version en cours : 1.0

Comments