Nella libreria libinput, che fornisce uno stack di input unificato per Wayland e il server X.Org, è stata rilevata una vulnerabilità (CVE non assegnato) che consente l'esecuzione di codice con privilegi di root tramite la connessione di un utente locale a un dispositivo virtuale di input, simulato nello spazio utente tramite uinput o uhid. Il problema è stato risolto nelle versioni 1.31.3 e 1.30.4.
La vulnerabilità è presente nell'elaboratore udev del gruppo di dispositivi libinput e
è causata dall'assenza di corretta sanificazione dei caratteri speciali negli attributi ricevuti dai dispositivi e inviati al sottosistema udev nella forma «chiave=valore». Attraverso la sostituzione del carattere di nuova riga («\n») nell'attributo, è possibile aggiungere una propria regola udev, ad esempio eseguendo il comando uinput UI_SET_PHYS(«poc\n<SECOND_KEY>=<value>»). Per eseguire comandi arbitri con privilegi di root, è sufficiente inserire in questo modo una regola udev con la proprietà «REMOVE_CMD», che esegue il comando specificato dopo la disconnessione del dispositivo.
Per sfruttare la vulnerabilità, un attaccante deve avere accesso al dispositivo /dev/uinput o /dev/uhid. Di solito, l'accesso a uinput e uhid è consentito solo all'utente root, ma alcune distribuzioni forniscono regole udev che permettono agli utenti non privilegiati di utilizzare uinput. Ad esempio, in Fedora, tali regole vengono attivate durante l'installazione dei pacchetti steam-devices, antimicrox e kdeconnectd. È disponibile un prototipo dell'exploit.
Fonte: opennet.ru
