În biblioteca libinput, care oferă un stack unificat pentru intrare pentru Wayland și X.Org Server, a fost identificată o vulnerabilitate (CVE neatribuit) care permite executarea de cod cu privilegii de root prin conectarea unui dispozitiv de intrare virtual de către un utilizator local, simulându-l în spațiul utilizatorului prin uinput sau uhid. Problema a fost remediată în versiunile 1.31.3 și 1.30.4.
Vulnerabilitatea este prezentă în handler-ul udev libinput-device-group și
este cauzată de lipsa unei escapări adecvate a caracterelor speciale în atributele obținute de la dispozitive și transmise în subsistemul udev sub forma „cheie=valoare”. Prin substituirea caracterului de nouă linie („\n”) în atribut, se poate realiza adăugarea unei reguli udev personalizate, de exemplu, prin executarea comenzii uinput UI_SET_PHYS(„poc\n<SECOND_KEY>=<value>”). Pentru a executa comenzi arbitrare cu privilegii de root, este suficient să se introducă o regulă udev cu proprietatea „REMOVE_CMD”, care lansează comanda specificată după deconectarea dispozitivului.
Pentru a exploata vulnerabilitatea, atacatorul trebuie să aibă acces la dispozitivul /dev/uinput sau /dev/uhid. De obicei, accesul la uinput și uhid este rezervat doar utilizatorului root, însă în unele distribuții sunt furnizate reguli udev care permit utilizatorilor neprivilegiați să utilizeze uinput. De exemplu, în Fedora, aceste reguli sunt activate la instalarea pachetelor steam-devices, antimicrox și kdeconnectd. Un prototip de exploit este disponibil.
Sursa: opennet.ro
