Une faille dans Sudo découverte et vite corrigée

La très populaire commande sudo, présente sur la quasi-totalité des distributions Linux et Unix, permettait à n’importe quel utilisateur de contourner les politiques de sécurité définies par l’administrateur et de s’accorder un accès root. Cette vulnérabilité documentée lundi a été corrigée depuis.

Sudo est un outil bien connu des utilisateurs de Linux. Cette commande autorise un utilisateur à exécuter un processus avec des privilèges qui ne sont pas les siens, sans avoir à s’authentifier sur une session lui accordant lesdits droits d’administration. Par défaut, la spécification RunAs inclut le mot clé ALL, permettant à n’importe quel utilisateur d’exécuter n’importe quelle commande.

Mais, sécurité oblige, les administrateurs peuvent configurer ce paramètre dans le fichier /etc/sudoers (qui lui n’est pas présent sur toutes les distributions) de sorte à définir quel utilisateur peut exécuter quel processus avec quel droit. Et notamment empêcher un accès root qui n’a pas été explicitement autorisé. Et c’est alors que CVE-2019-14287 entre en scène.

Je s’appelle root

Cette faille découverte par Joe Vennix, d’Apple Information Security, permet de contourner les réglages de sécurité mis en place par l’administrateur. « Lorsque sudo est configuré pour permettre à un utilisateur d'exécuter des commandes en tant qu'utilisateur arbitraire via le mot clé ALL dans une spécification RunAs, il est possible d'exécuter des commandes en tant que root en spécifiant l'ID utilisateur -1 ou 4294967295 » explique une note des développeurs de Sudo. Et ce quand bien même le RunAs n’autorise pas l’accès root.

Ce bug s’explique par la conversion défaillante de l’id utilisateur, la fonction traitant les deux identifiants susmentionnés en ID 0, soit l’id administrateur. De sévérité modérée, du fait des conditions nécessaires à son exploitation, cette faille a été corrigée avec la version 1.8.28 de Sudo.