Découverte d’une vulnérabilité d’élévation de privilège dans sudo

Sudo est une commande Unix qui permet à un administrateur système d'accorder à certains utilisateurs (ou groupes d'utilisateurs) la possibilité de lancer une commande en tant qu'administrateur, ou comme autre utilisateur, tout en conservant une trace des commandes saisies et des arguments.

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 (le plus haut niveau de privilège) en spécifiant l'ID utilisateur -1 ou 4294967295. Un utilisateur peut exécuter des commandes en tant que root même si la spécification Runas interdit explicitement l'accès root tant que le mot clé ALL est listé en premier dans la spécification Runas.

Cette vulnérabilité est due au fait que les appels système setresuid(2) et setreuid(2), que sudo utilise pour changer l'ID utilisateur avant d'exécuter la commande, traitent l'ID utilisateur -1 (ou son équivalent non signé 4294967295), de manière incorrecte. La commande sudo est exécutée en tant qu'ID utilisateur 0 (root), donc lorsque sudo essaie de passer à l'ID utilisateur -1, aucun changement ne se produit, et sudo lance la commande en tant que root. Les entrées de journal pour les commandes exécutées de cette façon afficheront l'utilisateur cible comme 4294967295 au lieu de root. De plus, les modules de session PAM ne seront pas exécutés pour la commande.

Informations
+

Risques

  • Élévation de privilège locale

Criticité

  • Score CVSS : 8.8

Existence d’un code d’exploitation de la vulnérabilité

  • Pas besoin de code d’exploitation.

Composants & versions vulnérables

  • Les versions Sudo antérieures à la 1.8.28 sont affectées.

CVE

  • CVE-2019-14287

Recommandations
+

Mise en place de correctif de sécurité

  • Mettre à jour sudo vers la version 1.8.28

Solution de contournement

  • Aucune solution n'a été proposée autre que la mise à jour.