CVE-2017-1000367 est une vulnérabilité racine sévère Linux découvert par Qualys Security des chercheurs. La faille réside dans Sudo de “get_process_ttyname()” fonction pour Linux et pourrait permettre à un utilisateur avec des privilèges sudo pour exécuter des commandes en tant que root ou élever les privilèges root.
sudo, ou “superuser faire!,” est un programme pour Linux et UNIX qui permet aux utilisateurs d'exécuter des commandes standards spécifiques en tant qu'utilisateur racine ou super-utilisateur.
CVE-2017-1000367: Détails
La fonction ouvre cette fonction ouvre “/proc /[pid]/stat” (homme proc) et lit le numéro de périphérique du TTY du champ 7 (tty_nr), les chercheurs expliquent. La mauvaise chose est que ces champs sont séparés par des espaces et sur le terrain 2 (comm, le nom de fichier de la commande) peut contenir des espaces qui est en fait la question.
Plus précisement:
Par exemple, si nous exécutons Sudo par le lien symbolique “./ 1 “, get_process_ttyname() appelle sudo_ttyname_dev() pour rechercher le numéro de tty inexistant “1” dans les search_devs intégrés[]. Suivant, sudo_ttyname_dev() appelle la fonction sudo_ttyname_scan() pour rechercher ce numéro de tty inexistant “1” dans un parcours en largeur d'abord de “/dev”.
La vulnérabilité découle de la façon Sudo parse informations « tty » à partir du fichier d'état de processus dans le système de fichiers proc. Sur les machines Linux, sudo analyse le / proc /[pid]/fichier stat pour décrire le numéro de périphérique de tty du processus à partir du champ 7 (tty_nr), comme expliqué dans le avis de sécurité.
CVE-2017-1000367 L'exploitation
Pour la faille à exploiter, l'utilisateur doit déjà avoir des privilèges sudo.
SELinux doit également être activée sur le système et doit avoir été sudo construit avec le soutien SELinux, les chercheurs ajoutent.
Pour exploiter le bug, l'utilisateur peut choisir un numéro de périphérique qui n'existe pas sous / dev. Si sudo ne trouve pas le terminal sous le répertoire / dev / pts, il effectue une recherche en largeur / dev. Il est possible d'attribuer un pseudo-terminal après sudo a vérifié / dev / pts mais avant sa largeur sudo réalise-première recherche du / dev. L'attaquant peut alors créer un lien symbolique vers le périphérique nouvellement créé dans un répertoire mondial inscriptibles sous / dev, par exemple / dev / shm.
Ce fichier sera utilisé comme entrée standard de la commande, sortie et d'erreur chaque fois un rôle SELinux est spécifiée sur la ligne de commande sudo. Si le lien symbolique sous / dev / SHM est remplacé par un lien vers un autre fichier avant de l'ouvrir par sudo, il est possible de remplacer un fichier arbitraire en écrivant à la sortie standard et d'erreur. Cela pourrait être escaladé à un accès complet à la racine par fichier de confiance tels que / etc / shadow ou même / etc / sudoers.
Comment réparer CVE-2017-1000367
Heureusement, la question est adressée et patché dans 1.8.20p1 sudo.
Aussi, le correctif pour l'analyse / proc /[pid]/stat un saut de ligne est contenue, est inclus dans 1.8.20p2 sudo. En raison des changements dans la façon dont 1.8.20p1 sudo / dev est traversée, il est impossible d'exploiter un / proc /[pid]/fichier stat qui contient une nouvelle ligne, chercheurs concluent.