Skip to main content
BlogSécuritéDigest de sécurité Linode 30 janvier - 6 février 2022

Linode Security Digest 30 janvier - 6 février 2022

Digest de sécurité Linode

Cette semaine, nous aborderons trois vulnérabilités de haute gravité qui pourraient permettre à des attaquants d'élever leurs privilèges s'ils disposent d'un accès local au système.

Noyau Linux eBPF - Vulnérabilité de validation d'entrée incorrecte

CVE-2022-23222 décrit une vulnérabilité provenant de la gestion par le noyau des programmes eBPF. Un attaquant qui peut exécuter BPF peut planter le système ou exécuter du code arbitraire dans le contexte du noyau.

Cause première - Le vérificateur BPF ne restreint pas correctement plusieurs types de pointeurs *_OR_NULL, ce qui permet à ces types de faire de l'arithmétique de pointeur. Ceci peut être exploité pour exécuter du code arbitraire ou planter le système. 

Note importante : Unprivileged BPF est désactivé par défaut dans la plupart des distros. Le bogue a été introduit dans la version 5.8.0 du noyau et corrigé dans la version 5.14.17. La disponibilité d'exploits publics est une autre raison pour laquelle CVE-2022-23222 représente un risque important.

Le fait de rester à jour avec le dernier noyau proposé par votre distribution Linux est un moyen simple de vous protéger contre cette vulnérabilité. Si votre Linode démarre un noyau fourni par nous, vous pouvez vérifier que le profil de configuration de votre Linode est configuré pour démarrer le dernier noyau, puis redémarrer votre Linode. 

Si vous ne pouvez pas mettre à jour vers un noyau corrigé immédiatement, vous pouvez également atténuer cette vulnérabilité en vous assurant que unprivileged_bpf_disabled est défini sur 1. L'exemple suivant appliquera une atténuation temporaire jusqu'à ce que votre Linode redémarre. Assurez-vous d'écrire ce paramètre dans un fichier de configuration sysctl et de redémarrer votre Linode de manière sécurisée pour maintenir l'atténuation.

# sysctl -w kernel.unprivileged_bpf_disabled=1

Source : Tr3e wang de SecCoder Security Lab

Échapper à un conteneur en utilisant Débordement de tas dans le noyau Linux

CVE-2022-0185 est un bug de débordement de tas qui permet à un attaquant ayant accès à un utilisateur non privilégié d'élever ses privilèges au niveau de root. Pour ce faire, l'attaquant doit disposer d'une capacité Linux spécifique, CAP_SYS_ADMIN. Il est important de noter que lorsque Docker (ou d'autres IRC) sont utilisés dans un cluster Kubernetes, le filtre seccomp est désactivé par défaut, cette vulnérabilité pourrait donc être exploitée dans ces cas.

Cause première - Le bogue est causé par un sous-écoulement d'entier présent dans le fichier fs/fs_context.c:legacy_parse_paramce qui entraîne une erreur de calcul de la longueur maximale valide. Cela entraîne un débordement d'entier dans le composant "File System Context". 

Un sous-écoulement se produit lorsqu'une opération de soustraction réduit un nombre entier non signé à une valeur inférieure à zéro. Comme les entiers non signés ne peuvent pas représenter des nombres négatifs, le calcul qui en résulte s'enroule autour de la valeur maximale de l'entier. Lorsque ce débordement se produit dans la fonction legacy_parse_param, la vérification de la taille échoue et l'attaquant peut écrire au-delà des limites de la mémoire allouée de 4 kb dans l'espace du noyau. En utilisant cette "écriture non liée", l'attaquant peut modifier les valeurs dans la mémoire du noyau et, par exemple, ajouter un accès à lui-même à tout autre processus s'exécutant sur le même nœud.

La commande "capsh -print" peut être utilisée dans le contexte de l'utilisateur actuel pour dresser la liste des capacités activées. L'exploitation repose sur la capacité CAP_SYS_ADMIN ; cependant, la permission ne doit être accordée que dans l'espace de noms actuel. Un utilisateur non privilégié peut utiliser unshare (CLONE_NEWNS | CLONE_NEWUSER) pour entrer dans un espace de noms avec la permission CAP_SYS_ADMIN et ensuite procéder à l'exploitation pour rooter le système. Cependant, l'utilisation de seccomp empêchera l'attaquant d'entrer dans l'espace de noms avec cette capacité.

La vulnérabilité a été introduite dans le noyau 5.1 et corrigée dans la version 5.16.2. Le code d'exploitation fait déjà surface en ligne. Voici l'article original pour plus de détails techniques sur les résultats. 

Le fait de rester à jour avec le dernier noyau proposé par votre distribution Linux est un moyen simple de vous protéger contre cette vulnérabilité. Si votre Linode démarre un noyau fourni par nos soins, vous pouvez également vérifier que le profil de configuration de votre Linode est configuré pour démarrer le dernier noyau, puis redémarrer votre Linode. Si vous n'êtes pas en mesure de mettre à jour vers un noyau corrigé immédiatement, vous pouvez appliquer ces mesures d'atténuation :

  • Réduire au minimum l'utilisation de conteneurs privilégiés ayant accès à la capacité CAP_SYS_ADMIN. 
  • Pour les conteneurs non privilégiés, s'assurer qu'un filtre seccomp est en place pour bloquer l'appel unshare réduira le risque.
  • Atténuer l'exploitation à partir de conteneurs non privilégiés en désactivant la capacité de l'utilisateur à utiliser des espaces de noms d'utilisateurs au niveau de l'hôte. L'exemple suivant appliquera une atténuation temporaire jusqu'à ce que votre Linode redémarre. Assurez-vous d'écrire ce paramètre dans un fichier de configuration sysctl et de redémarrer votre Linode de manière sécurisée pour maintenir l'atténuation.
# sysctl -w kernel.unprivileged_userns_clone=0

PwnKit - Vulnérabilité d'escalade des privilèges locaux dans Polkit

Polkit est un composant permettant de contrôler les privilèges au niveau du système dans les systèmes d'exploitation de type Unix. Il fournit une méthodologie systématique permettant aux processus non privilégiés de communiquer avec les processus privilégiés. En outre, quelqu'un peut également utiliser polkit pour exécuter des commandes avec des privilèges élevés à l'aide de la commande pkexec (généralement avec root). 

CVE-2021-4034 est une vulnérabilité de corruption de mémoire dans pkexec de polkit, un programme SUID-root installé par défaut sur la plupart des distributions Linux majeures. Une exploitation réussie permet à tout utilisateur non privilégié d'obtenir facilement les privilèges de root dans la configuration par défaut.

Cause première - Le programme pkexec ne valide pas correctement le nombre d'arguments qui lui sont transmis, ce qui permet à quelqu'un d'exécuter du code arbitraire en tant qu'utilisateur privilégié. 

Toutes les versions de Polkit à partir de 2009 sont vulnérables et exploitables même si le démon Polkit lui-même n'est pas en cours d'exécution.

Le fait de rester à jour avec le dernier noyau proposé par votre distribution Linux est un moyen simple de vous protéger contre cette vulnérabilité. Si votre Linode démarre un noyau fourni par nos soins, vous pouvez vérifier que le profil de configuration de votre Linode est configuré pour démarrer le dernier noyau, puis redémarrer votre Linode. Si vous n'êtes pas en mesure de mettre à jour vers un noyau corrigé immédiatement, vous pouvez temporairement atténuer le problème en supprimant le bit SUID de pkexec :

# chmod 0755 /usr/bin/pkexec

Commentaires

Laissez un commentaire

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