Libinput corrige une faille qui transformait une fausse manette en accès root

La bibliothèque libinput est passée en version 1.31.2, et pas pour ajouter des fonctions, mais pour boucher un trou de sécurité plutôt vilain. C’est elle qui gère vos périphériques d’entrée (clavier, souris, pavé tactile, manette) sur la quasi-totalité des Linux modernes, aussi bien sous Wayland que sous l’ancien serveur graphique X.Org.
Autant dire qu’elle tourne sur presque toutes les machines de bureau sous Linux, des plus grand public aux plus pointues.
Le problème permettait d’exécuter du code arbitraire avec les droits root, c’est-à-dire les pleins pouvoirs sur le système. Et tout ça en passant par un détail qu’on n’imagine pas dangereux, le nom physique d’un faux périphérique.
Sur Linux, n’importe quel logiciel peut fabriquer un périphérique virtuel via deux interfaces du noyau, uinput et uhid. Pour les regrouper, libinput s’appuie sur udev, le composant qui détecte et configure tout ce qu’on branche sur la machine.
Et c’est là que ça coince. Un attaquant pouvait créer un appareil bidon dont l’attribut PHYS, le chemin physique du matériel, contenait un simple retour à la ligne. Du coup, udev lisait cette unique valeur comme deux lignes séparées, donc deux paires clé-valeur, dont une totalement injectée par l’attaquant.
Cette ligne injectée suffisait à détourner le comportement de udev et, au bout de la chaîne, à faire tourner la commande de son choix en root. Une injection par saut de ligne. Bête, mais redoutable.
Reste une nuance importante. Fabriquer un tel périphérique demande normalement les droits root, ce qui limite déjà beaucoup le danger. Sauf que certaines règles udev personnalisées ouvrent la porte aux utilisateurs normaux.
L’exemple cité est parlant. Installer le paquet "steam-devices" sur Fedora, ce que fait n’importe quel joueur pour que ses manettes soient correctement reconnues, suffit à exposer la faille à toute personne connectée à la session. Un geste parfaitement banal, donc.
La faille a été repérée par un chercheur surnommé Csome, et Peter Hutterer, le mainteneur historique de libinput, a publié le correctif dans la 1.31.2. La marche à suivre tient en une ligne, mettre à jour dès que votre distribution pousse le paquet.
Une faille root planquée dans le nom d’une fausse manette, déclenchée par un paquet aussi anodin que celui de Steam, ça a quand même quelque chose de franchement pénible.
Source :
Phoronix
Source : korben.info