Skip to main content
BlogSécuritéDigest de sécurité Linode du 7 au 14 mars 2022

Digest de sécurité Linode du 7 au 14 mars 2022

Digest de sécurité Linode

Cette semaine, nous aborderons les vulnérabilités de haute sévérité dans le noyau Linux.

Dirty Pipe - Escalade des privilèges locaux sous Linux

CVE-2022-0847 permet à un utilisateur Linux non privilégié d'écraser n'importe quel fichier arbitraire en lecture seule. Un utilisateur peut exploiter cette vulnérabilité en injectant du code dans les processus root et en escaladant ses privilèges pour devenir un utilisateur root. 

À l'instar de la vulnérabilité omniprésente "Dirty Cow", un attaquant peut exécuter l'exploit Dirty Pipe et écrire du texte dans un fichier. Ce qui fait de Dirty Pipe une faille plus facile à exploiter, c'est qu'un utilisateur peut écrire du texte dans n'importe quel fichier arbitraire et, dans certains cas, il peut facilement élever ses privilèges par le biais de binaires SUID

Cause première - La vulnérabilité Dirty Pipe est causée par une variable pipe_buffer.flags non initialisée. Les tuyaux sont des outils utilisés pour la communication interprocessus, une extrémité y pousse des données tandis que l'autre extrémité peut tirer ces données. Un commit a rendu les tampons de tuyaux non initialisés, ce qui constitue une vulnérabilité de haute sévérité. En injectant PIPE_BUF_FLAG_CAN_MERGE dans une référence de cache de page, il est possible d'écraser des données dans le cache de page, simplement en écrivant de nouvelles données dans le pipe préparé d'une manière spéciale.

Cette vulnérabilité est assortie de quelques mises en garde : 

  • L'attaquant doit avoir les permissions de lecture pour le fichier
  • Le décalage ne doit pas se situer sur une limite de page 
  • L'écriture ne peut pas franchir une limite de page 
  • Le fichier ne peut pas être redimensionné 

Actuellement, il n'existe pas de solution pour atténuer cette vulnérabilité. Si vous utilisez une version du noyau Linux supérieure à 5.8, l'éditeur recommande de mettre à jour avec les versions suivantes : 5.16.11, 5.15.25 et 5.10.102.

Mise à jour du 14 mars 2022: Le dernier noyau Linode est disponible, il corrige Dirty Pipe.

Évasion de conteneurs via les cgroups

Les groupes de contrôle, ou cgroups, sont une fonctionnalité du noyau Linux qui alloue et répartit l'utilisation des ressources informatiques pour les processus. Dans certains cas, ces processus sont organisés en groupes hiérarchiques où l'allocation des ressources se fait en fonction du groupe.

Les cgroups sont couramment utilisés dans les conteneurs Linux parce que plusieurs processus s'exécutant dans un conteneur doivent être regroupés. 

CVE-2022-0492 est une vulnérabilité de fuite de conteneur dans laquelle un utilisateur peut s'échapper du conteneur et pivoter vers la machine hôte. Ceci n'affecte que l'architecture cgroup v1

Cause première - La vulnérabilité concerne le fichier release_agent, qui est une fonctionnalité de cgroups v1. Le fichier release_agent permet aux administrateurs de configurer un "agent de libération" qui s'exécute lorsqu'un processus dans le cgroup est terminé. Le release_agent n'est visible que dans le répertoire racine du cgroup et affecte tous les cgroups enfants. Lorsqu'un processus meurt, le noyau vérifie si la fonction notifiy_on_release est activée, et si c'est le cas, il lance le binaire configuré pour l'agent de libération. L'échappement du conteneur se produit parce que Linux n'a pas vérifié si le processus définissant le fichier release_agent a des privilèges administratifs (par exemple, la capacité CAP_SYS_ADMIN ). 

Cette vulnérabilité peut être atténuée en procédant comme suit :

  • Activation des profils de sécurité AppArmor, SELinux ou Seccomp 
  • Désactiver les espaces de noms des utilisateurs non privilégiés si cela n'est pas nécessaire
  • Exécuter le conteneur en tant qu'utilisateur non privilégié

Les chercheurs en sécurité de Palo Alto ont créé un test pour déterminer si votre environnement de conteneurs est vulnérable à CVE-2022-0492 :

Cette vulnérabilité est assortie de quelques mises en garde. Afin d'exploiter avec succès cette vulnérabilité, vous devez remplir les conditions suivantes : 

  • Un conteneur doit être exécuté en tant qu'utilisateur privilégié (root ou un utilisateur ayant le drapeau no_new_privs ).
  • AppArmor, SELinux ou Seccomp doit être désactivé.
  • L'hôte doit activer les espaces de noms des utilisateurs non privilégiés
  • Un conteneur doit se trouver dans un cgroup root v1. 

Netfilter : escalade des privilèges locaux via une écriture hors limites sur le tas

Netfilter est une structure du noyau Linux qui permet d'effectuer diverses opérations liées au réseau. Il permet le filtrage des paquets, la traduction des adresses réseau (et des ports), l'enregistrement des paquets et la mise en file d'attente des paquets dans l'espace utilisateur. Vous pouvez également construire des pare-feu Internet basés sur le filtrage de paquets avec ou sans état. 

CVE-2022-25636, est une vulnérabilité dans laquelle un utilisateur local peut effectuer une écriture hors limites dans la fonction nft_fwd_dup_netdev_offload (nf_dup_netdev.c) et obtenir des privilèges. Cette vulnérabilité affecte actuellement les versions 5.4-rc1 à 5.6.10 du noyau. 

Cause première - Dans la fonction nft_fwd_dup_netdev_offload, ctx->num_actions++ est utilisé pour compenser le tableau flow->rule->action.entries(nf_dup_netdev.c:67) lors de la configuration des règles de flux dup ou fwd sur une chaîne dont le déchargement matériel est activé. Le décalage se produit entre le nombre d'appels à l'incrémentation et le nombre d'entrées allouées. La taille du tableau alloué est basée sur le nombre d'expressions nftables qui ont expr.offload_flags&NFT_OFFLOAD_F_ACTION(nf_tables_offload.c:97), mais seul le type d'expression immediate a ceci (pas dup ou fwd). Cette différence permet à quelqu'un de créer une règle avec des expressions dup/fwd sans une immediate correspondante/précédente, ce qui conduit à un tableau d'entrées sous-dimensionné et à un nombre arbitraire d'écritures hors limites dans le tableau. Quelqu'un pourrait écrire un script et effectuer une écriture OOB qui peut être transformée en un ROP du noyau / une escalade des privilèges locaux.

Il est recommandé de mettre à jour votre noyau avec la dernière version. 


Commentaires

Laissez un commentaire

Votre adresse électronique ne sera pas publiée. Les champs obligatoires sont marqués d'un *.