CVE-2021-3156. Le Bug Sudo Qui A Cassé Internet

Récemment, Qualys a publié CVE-2021-3156 : un bug sudo mortel qui existe depuis 10 ans et affecte non seulement Linux, mais aussi macOS, AIX et Solaris. Dans ce module, nous passerons en revue certains aspects cruciaux de celui-ci d’une manière très facile à suivre.

Qu’est-ce Que CVE-2021-3156 ?

CVE-2021-3156 est un exploit de tas qui affecte lebinaire sudo qui est presque omniprésent sur tous les systèmes d’exploitation comme Unix.

En le décomposant, un débordement de tampon dans le tas peut être exploité par N’IMPORTE QUEL utilisateur local , quels que soient les niveaux de privilèges, pour obtenir un accès root au système.

Quelles Versions De Sudo Sont Affectées Par Cela ?

La vulnérabilité affecte toutes les versions sudo suivantes :

  • Toutes les versions héritées de 1.8.2 à 1.8.31p2
  • Toutes les versions stables de 1.9.0 à 1.9.5p1

Le bug semble être là depuis environ 10 ans maintenant ! Il a été introduit en juillet 2011 (commit 8255ed69). La vulnérabilité est également présente dans MacOS Big Sur et de nombreux autres systèmes de type UNIX.

Qu’est-ce Qui Cause Le Bogue ?

Dans cette démonstration, nous aurions besoin de sudoedit qui n’est qu’un lien symbolique vers sudo

€ fichier /usr/bin/sudoedit
/usr/bin/sudoedit : lien symbolique vers sudo

Selon Baron Samedit :

  1. exécuter sudo en mode « shell » ( commande shell -c )
  2. exécuter sudoedit avec l’ indicateur -s (MODE_SHELL) ou le shell -i (MODE_LOGIN_SHELL)
  3. Le bogue dans sudo , relatif à la commande sudoedit , peut être exploité pour éviter les caractères de séquence d’échappement et déborder le tampon basé sur le tas via un argument de ligne de commande qui se termine par un seul caractère barre oblique inverse.

Cette vulnérabilité particulière peut être exploitée par un attaquant pour faire déborder un tampon et contrôler sa taille (souvent à l’aide d’un nop sled ), ce qui peut conduire à l’exécution de commandes avec les privilèges root.

Comment Vérifier Si Votre Version Sudo Est Vulnérable ?

Pour vérifier si votre version sudo est vulnérable, vous pouvez taper :

€ sudoedit -s '\'

Si vous obtenez un message d’erreur en tant que tel, sachez que votre version sudo est vulnérable :

€ sudoedit -s '\'
Segmentation fault (core dumped)

Comment Corriger Ce Bug ?

Pour résoudre ce problème, nous devons mettre à niveau notre version sudo . Cela peut être fait en utilisant le gestionnaire de paquets de votre distribution. Par exemple, sur Ubuntu/Debian, vous pouvez utiliser le gestionnaire de paquets apt :

€ sudo apt update && sudo apt -only-upgrade install sudo

Sur les systèmes basés sur Arch, cela peut être résolu avec :

€ sudo pacman -Syu

Pour Fedora/Red Hat/CentOS :

€ sudo dnf mise à jour

Pour SUSE et OpenSUSE :

€ sudo zypper lp -a | grep -i sudo

Après la mise à jour, vous pouvez vérifier votre version sudo avec :

€ sudo -version
Version sudo 1.9.5p2

Si votre version est 1.9.5p2 ou ultérieure, félicitations ! Vous avez patché votre système. Notez que le bogue ci-dessus a été corrigé dans la distribution Debian stable (buster) avec la version 1.8.27-1+deb10u3

En faisant un contrôle ultérieur, on obtient :

€ sudoedit -s '\'
utilisation: fichier sudoedit ...

Par conséquent, nous n’obtenons plus le défaut de segmentation ! Notre bug a donc été corrigé ! CVE-2021-3156 ? Plus vulnérable !

Conclusion

CVE-2021-3156 est l’un des bogues les plus notoires en raison de sa nature qui peut permettre à TOUT UTILISATEUR d’obtenir un accès root. Cela signifie que si un attaquant prend pied sur votre système, même en tant qu’utilisateur de faible priorité comme www-data , il peut compromettre l’ensemble de la machine en compromettant la racine. De plus, lebinaire sudo est considérablement gonflé et les utilisateurs sont enclins à passer à doas comme une nouvelle façon d’exécuter des commandes qui nécessitent des privilèges root. Vous pouvez lire le rapport complet de Qualy ici !