Уязвимость, позволяющая обойти блокировку хранителя экрана (и ее решение)

Собственно ссылка на новость
Суть в том - что в xorg-server-1.11* существует недокументированная, но вполне официальная возможность убить приложение эксклюзивно перехватывающее ввод несколькими банальными хоткеями.

Справедливости ради стоит отметить, что данный эксплоит не работает на версии xorg-server-1.11.3 (по словам SKonst из irc-канала)

Однако устанавливать версию пакета отмеченную нестабильной </сарказм> тоже не есть хорошо.

В той же статье есть рекомендации, как прикрыть эту уязвимость. Это и попробуем сделать используя шаблоны calculate


Предварительно создадим на сервере структуру каталогов /var/calculate/remote/templates/install (если это еще не сделано) и создадим корректные .calculate_directory
Небольшое отступление - если вы хотите применить эти настройки не на сервере, а на локальной машине - то используйте /var/calculate/templates вместо /var/calculate/remote/templates/install
приведенные команды можно сразу выполнять на сервере из под рута, но лучше понимать что делаешь.

## определимся с каталогом в который ложим патч, для сервера следующий:
tmplt_dir=/var/calculate/remote/templates
## делать если еще отсутствует
mkdir -pv ${tmplt_dir}/install
## мудрить много не будем,
## просто скопируем из директории со стандартными шаблонами
cp -a /usr/share/calculate/templates/install/.calculate_directory ${tmplt_dir}/install/

теперь создадим непосредственно директорию для патча исправляющего данную уязвимость и пропишем нужные данные.

mkdir ${tmplt_dir}/install/fix_x-1.11
cd ${tmplt_dir}/install/fix_x-1.11
echo '# Calculate path=/usr/share/X11/xkb name=compat 
cl_name==calculate-install&&ac_install_merge==up&&pkg(x11-misc/xkeyboard-config)!=' 
>.calculate_directory
cat >xfree86 <<EOF
 # Calculate format=patch
<reg>interpret XF86_(ClearGrab|Ungrab)\s*{[^}]+};</reg>
<text>// masked interpret XF86_\1</text>
EOF

Учитывая, что минимум у одного человека (по его словам) уязвимость не повторяется, но при написании данного шаблона я не заморачивался с версиями, похоже придется шаблон переделывать.
Но уязвимость закрыть надо как можно быстрее. Так что выкладываю в таком виде и жду ваших отзывов/предложений/критики.

на кальке “уязвимость” не работает…

Этож не баг, это фича.

ну хз, у меня работает до патча работала. Кстати - да, проверил на машинах которые давно не обновлял - там не работает. Но там и xorg-server постарее.
Машина на которой работало:

~ # uname -srvmio
Linux 3.1.6-calculate #1 SMP PREEMPT Sun Jan 15 00:06:54 EET 2012 x86_64 AuthenticAMD GNU/Linux
~ # eix -c xorg-server
[I] x11-base/xorg-server (1.11.2-r2@14.01.2012): X.Org X servers
~ # eix -c x11-misc/xkeyboard-config
[I] x11-misc/xkeyboard-config (2.4.1-r2@14.01.2012): X keyboard configuration database

2 Евгений Савченко
на какой конфигурации не работает?

Михаил Гагауз писал(а):

ну хз, у меня работает до патча работала. Кстати - да, проверил на машинах которые давно не обновлял - там не работает. Но там и xorg-server постарее.
Машина на которой работало:
[…]
2 Евгений Савченко
на какой конфигурации не работает?

ни на какой не работает, а хотелось бы… хоткеи великая вещь…

работало только с xorg-server-1.11.x
Исправлено в https://bugs.gentoo.org/show_bug.cgi?id=399347

И вообще, зачем велосипед изобретать?!.
И исправлять такие надо вещи только в upstream, т.е. в Gentoo.

Делаем emerge --sync; emerge -DNu world и все (включая другие баги) исправлены.