В X.Org Server 1.11 обнаружена
уязвимость, позволяющая через манипуляции с клавиатурой обойти режим
блокировки экрана и получить доступ к заблокированному рабочему
окружению пользователя. Проблема проявляется в дистрибутивах, перешедших
на X.Org Server 1.11 (Fedora 16, Arch Linux, Gentoo, тестовый выпуск
Debian Wheezy), для большинства хранителей экрана и систем блокировки
экрана, включая gnome-screensaver (GNOME) и kscreenlocker (KDE).
Проблема вызвана тем, что в выпуске X.Org Server 1.11 в состав XKB была интегрирована
функция принудительного завершения работы процесса, который
обрабатывает текущий ввод. Функция не отражена в официальной
пользовательской документации и предназначена для отладочных целей при
разработке программ, эксклюзивно перехватывающих ввод (при зависании
таких программ ранее было не обойтись без перезапуска X-сервера).
Примечательно, что до 2008 года в состав X.Org Server входила похожая
функция, управляемая опцией "Option AllowClosedownGrabs"
(Ctrl+Alt+Keypad-Multiply), но данная функция была по умолчанию
отключена и позднее совсем удалена из X.Org. В версии X.Org Server 1.11
работа комбинации Ctrl+Alt+Keypad-Multiply возвращена, при этом в Debian
Wheezy распознаётся по умолчанию.
Работа программ блокировки экрана сводится к обеспечению
постоянного перекрытия текущего содержимого рабочего стола через
создание окна в полноэкранном режиме и перехвата всех событий ввода.
Используя вышеотмеченную функцию, активируемую через специальную
клавиатурную комбинацию (Ctrl+Alt+F11 или Ctrl+Alt+умножить на цифровой
панели), можно принудительно завершить работу процесса, обслуживающего
блокировку экрана, и таким образом получить доступ к рабочему столу без
ввода пароля. Кроме того, среди появившихся в X.Org Server 1.11
отладочных функций также представлена возможность отключения
эксклюзивного захвата событий ввода (Ctrl+Alt+F10), которую также можно
использовать для обхода хранителя экрана.
В качестве обходного пути по защите от проявления уязвимости
предлагается вручную отредактировать конфигурацию xkb и удалить из неё
привязки клавиатурных комбинаций к событиям XF86_Ungrab и
XF86_ClearGrab. В частности, следует закомментировать строки 44-49 в
файле /usr/share/X11/xkb/compat/xfree86 с блоками "interpret XF86_Ungrab
{...};" и "interpret XF86_ClearGrab {...};", после чего выполнить
"setxkbmap $(setxkbmap -query | grep layout | awk '{print
$2}')". Другим методом является использование для блокирования экрана в
отдельной консоли программы vlock, которая блокирует переключение между виртуальными консолями.
Источник
|