02.07.2022

Обновление libinput 1.20.1 с устранением уязвимости

В библиотеке libinput 1.20.1, предоставляющей унифицированный стек ввода, позволяющий использовать одни и те же средства обработки событий от устройств ввода в окружениях на базе Wayland и X.Org, устранена уязвимость (CVE-2022-1215), позволяющая организовать выполнение своего кода при подключении к системе специально модифицированного/эмулируемого устройства ввода. Проблема проявляется в окружениях на базе X.Org и Wayland, и может быть эксплуатирована как при локальном подключении устройств, так и при манипуляциях с устройствами с интерфейсом Bluetooth. В случае выполнения X-сервера с правами root уязвимость позволяет добиться выполнения кода с повышенными привилегиями.

Проблема вызвана ошибкой форматирования строки в коде, отвечающем за вывод в лог информации о подключении устройства. В частности, проблема связана с тем, что в блок со строкой форматирования для функции printf попадало значение, полученное от устройства. Функция evdev_log_msg при помощи вызова snprintf изменяла исходную строку форматирования для printf, в которую в качестве префикса добавлялось имя устройства. Далее для вывода изменённая строка передавалась в функцию log_msg_va, которая в свою очередь использовала функцию printf с указанием полученного значения в первом аргументе, к которому применяется разбор символов форматирования. Из-за отсутствия проверки наличия спецсимволов в имени устройства, атакующий мог инициировать повреждение стека при возвращении устройством идентификатора, содержащего символы форматирования строки (например, «Evil %s»).

Источник.