В библиотеката 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
