Уязвимость в libinput, приводящая к выполнению кода при подключении вредоносного устройства

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

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

Источник: opennet.ru

Добавить комментарий