В библиотеке libinput, предоставляющей унифицированный стек ввода для Wayland и X.Org Server, выявлена уязвимость (CVE не назначен), позволяющая добиться выполнения кода с правами root через подключение локальным пользователем виртуального устройства ввода, сэмулированного в пользовательском пространстве через uinput или uhid. Проблема устранена в выпусках 1.31.3 и 1.30.4.
Уязвимость присутствует в udev-обработчике libinput-device-group и
вызвана отсутствием должного экранирования спецсимволов в атрибутах, получаемых от устройств и передаваемых в подсистему udev в форме «ключ=значение». Через подстановку символа перевода строки («\n») в атрибут, можно добиться добавления своего правила udev, например, через выполнение uinput-команды UI_SET_PHYS(«poc\n<SECOND_KEY>=<value>»). Для выполнения произвольных команд с правами root достаточно подобным способом подставить udev-правило со свойством «REMOVE_CMD», запускающем указанную команду после отключения устройства.
Для эксплуатации уязвимости атакующий должен иметь доступ к устройству /dev/uinput или /dev/uhid. Обычно доступ к uinput и uhid имеет только пользователь root, но в некоторых дистрибутивах поставляются udev-правила, позволяющие непривилегированным пользователям использовать uinput. Например, в Fedora подобные правила выставляются при установке пакетов steam-devices, antimicrox и kdeconnectd. Доступен прототип эксплоита.
Источник: opennet.ru
