Pull to refresh

Comments 84

UFO landed and left these words here
я все понял, в таких комментах нужно ставить смайлик)
За что минусуем-то в низу многие отписываются что в их дистрах баг уже пофиксили
Слово то какое некрасивое — залатают…
OpenSUSE 11.4 — X.Org 1.9.3 — не работает
Debian squeeze — X.org 1.7.7 — не работает
Так вилимо появилось в версиях старше 1.10.4. Смысл проверять младшие?
Написанно же с версии 1.11 и выше
Ну да, разблокировка существенно упростилась.
На самом деле так и есть -это фича.
Лок работает следующим образом — разворачивается на весь экран и перехватывает все нажатия клавиатуры.
А комбинация CTRL + ALT + * или CTRL + ALT + F11 предназначена для убивания приложения, которое захватило ваш экран.
За такие фичи надо отрывать яйца.
Было бы такое в винде, трояны локеры были бы не страшны.
UFO landed and left these words here
Ну несовсем, это как ломиться в закрытую дверь, а она, блин, с другой стороны открывается.
Тут в большей степени несовершенство метода блокировки. Развернулся на весь экран и перехватывает все нажатия, никак его не закрыть — нужно убить негодяя. Вот собственно зачем нужна данная фича. А то что он локер, это уже его проблемы :)
ArchLinux, X.org 1.11.3-1 — не получилось повторить
Аналогично, получилось. xorg-server-1.11.3-1
Но эта же нужно получить физический доступ к машине! Красненьким.
Если экран блокируют — значит есть от кого.
Добавьте в ~/.Xmodmap строчку
keycode 63 =
затем:
$ xmodmap ~/.Xmodmap
или перезапустите X

код 63 узнал с помощью утилиты xev
упс, должно быть keycode 63 = KP_Multiply иначе * не работает
Лучше даже так:

keycode 63 = KP_Multiply NoSymbol KP_Multiply NoSymbol
keycode 106 = KP_Divide NoSymbol KP_Divide NoSymbol
И, да. Не факт, что в вашей системе ~/.Xmodmap подгружается при старте.
Спасибо. Прописал себе в ~/.icewm/startup:
xmodmap -e "keycode 63 = KP_Multiply NoSymbol KP_Multiply NoSymbol"
xmodmap -e "keycode 106 = KP_Divide NoSymbol KP_Divide NoSymbol"

Работает
А ещё помогает

sudo nano /usr/share/X11/xkb/compat/xfree86

// interpret XF86_ClearGrab {
// action = Private(type=0x86, data=«ClsGrb»);
// };
Gentoo — самосборная.
x11-base/xorg-server-1.11.2-r2

Не проявилась…
хмм, такая же версия, но работает (amd64)
Да тут не из-за архитектуры. Зависит от того, как у тебя Х настроены.
Думаю, еще может зависеть от того, чем блокируется экран.

Например, не работает на X.Org X Server 1.11.2 + slimlock 0.10.1 из AUR @ Arch из репов.
На некоторых системах так же работает и CTRL + ALT + / (на numpad'е)
У меня не работает. Archlinux, xorg 1.11.3, блокировщик kde.
Прошу прощения, работает. * нужно жать на numpad.
О, да ещё и с нажатым нумлоком.
Хотя нет, всё равно не работает.
Debian уже пофиксили

xorg-server (2:1.11.3.901-2) unstable; urgency=high

* Revert «XKB: Add debug key actions for grabs & window tree» to stop
making it possible to bypass X screen locking programs. This is
CVE-2012-0064 (Closes: #656410).
* Set urgency to “high” accordingly.

— Cyril Brulebois Thu, 19 Jan 2012 10:47:49 +0100
А прикиньте сколько висел такой баг в винде и какая оперативность здесь.
Я на дебиане сижу 12 лет, поэтому не могу прикинуть сколько времени фиксят винду )
Думаю этого не могут прикинуть даже те кто 12 лет сидит на винде)
Большой плюс никсов, что пофиксить можно самостоятельно на уровне юзера, выше уже есть рецепт. В винде же только ждать, как я понимаю.
Да в винде возможно нашелся бы какой-нибудь недокументированный ключик в реестре. Ну а так то да, ждать до ближайшего Patch Tuesday, если только уязвимость не сочтут какой-то архикритичной, тогда за пару дней выходит патч.
На винде бы хотфикс был бы моментальным, я гарантирую это.
Там дыры и по хлеще висели месяцами, и вообще как вы можете гарантировать такое? Вы работаете в МС? Если нет, то у вас нет ни какого морально права давать такие гарантии.
Фух, я в безопасности. У меня на клавиатуре ноутбука символа * нет :-)
У меня нумпадные кнопки набираются через Fn+NumLk, но этот способ я сразу проверил, не работает.
Arch — Fixed

% pacman -Qi xkeyboard-config

Name           : xkeyboard-config
Version        : 2.4.1-3
URL            : http://www.freedesktop.org/wiki/Software/XKeyboardConfig
Licenses       : custom
Groups         : None
Provides       : xkbdata
Depends On     : xorg-xkbcomp
Optional Deps  : None
Required By    : libxklavier  xorg-server-common
Conflicts With : xkbdata
Replaces       : xkbdata
Installed Size : 5640.00 KiB
Packager       : Florian Pritz <bluewind@xinu.at>
Architecture   : any
Build Date     : Thu 19 Jan 2012 01:56:02 PM MSK
Install Date   : Fri 20 Jan 2012 01:42:09 PM MSK
Install Reason : Installed as a dependency for another package
Install Script : No
Description    : X keyboard configuration files

В генте пофиксили баг (#399347), пропатчив x11-misc/xkeyboard-config этим, и уже стабилизировали для amd64/x86/arm.

Так что все гентушники могут смело делать emerge --sync && emerge -vaD1 x11-misc/xkeyboard-config.
для Gentoo:

Версия с багом — 2.4.1-r2
Исправленная версия -2.4.1-r3

[I] x11-misc/xkeyboard-config
Available versions: 2.1 2.2.1-r1 2.3 2.4.1-r2 2.4.1-r3
Installed versions: 2.4.1-r3(10:34:01 PM 01/20/2012)
Homepage: www.freedesktop.org/wiki/Software/XKeyboardConfig
Description: X keyboard configuration database
А почему на скриншоте Убунта, если она-то как раз и не подвержена багу?
Хабракат умело выставлен. Интригует ;)
не подвержен данной уязвимости

позволяющая не обладая паролем проходит его запрос


Ну что это за перевод? Потрудились бы хотя бы вручную подкорректировать.
Да, я понял почему такое надо писать в ЛС. Теперь как-то глупо выглядит комментарий…
xxx: Интересно, а что делает сочетание клавиш Ctrl + Alt + Backspace?
* xxx has quit
(2:2183)$ p -Q xorg-server
Пароль:
xorg-server 1.11.3-1

slimlock не смог обойти.

P.S. archlinux
Arch
xorg-server 1.11.3-1
slimlock 0.10.2-2

работают и ctrl+alt+*, ctrl+alt+/.
Судя по ответу выше, вы еще не обновили xkeyboard-config.
А там баг уже починили (в версиях старше 2.2 не работали сочетания shift+Fx в mc)?
Linux Mint 12 Lisa, X.Org X Server 1.11.2.902 (1.11.3 RC 2) фича присутствует
У BSD'шников все спокойно, ибо в портах до сих пор xorg-server 1.7.7. ;-)
Очевидно среди читающих нашлось ровно 4 BSD'шника
У BSD'шников всё даже ещё спокойнее, потому что все её на серверах держать и в иксах не нуждаются. ;)
F16, репозиторий Test Updates отключен — получается. Хотя говорят, в RFR фикс прилетел уже утром.
У меня в Windows Seven подобная фича есть. После нажатия Win+L рабочий стол блокируется и без ввода пароля в систему не пускает. Но стоит нажать волшебную кнопочку «Переключить пользователя», как мне говорят «Добро пожаловать» и рабочий стол разблокируется =)

Подозреваю, что дело в том, что включен автологин и других пользователей в системе не зарегистрировано. Тем не менее забавно.
UFO landed and left these words here
Баг пофиксил. Вырвал клавиши из нумпада.
Надо было просто отпилить!

По теме поста — Убунта 10.04.3 LTS, х.орг — 1.7.6, gnome-screensaver 2.30
На ноуте повторить не получилось, возможно, потому что нумпадные знаки набираются через Fn,
а 4 одновременных кнопки могут пересекатся по шине и не различатся корректно.

Хотя, проверил только что,
state 0x1c, keycode 63 (keysym 0x1008fe21, XF86_ClearGrab), same_screen YES, тоесть, код корректный.
Не, скорее всего не получилось потому что 11 больше 7.
Предлагаю вашему вниманию моё небольшое независимое расследование причин, которые привели к появлению данного «бага».

Фича убивания приложений, захвативших клавиатуру, была в Xorg испокон веков. Вот например мануал на xorg.conf аж 2004 года. Обратите внимание на опции «AllowDeactivateGrabs» и «AllowClosedownGrabs» — действия срабатывают по нажатию тех же самых горячих клавиш. Обратите также внимание, что прямо там, в мануале, сказано, что включение этих возможностей может привести к обходу скринсейверов и блокираторов экрана:
Note that the options AllowDeactivateGrabs and AllowClosedownGrabs will allow users to remove the grab used by screen saver/locker programs. An API was written to such cases. If you enable this option, make sure your screen saver/locker is updated.

Более того, в то время в Х-сервере имелось специальное API, которое позволяло локерам отключать эти комбинации клавиш, даже если они были включены в конфиге. Все счастливы.

Затем, в преддверии выхода xorg-server-X11R7-1.6, эту функциональность стали выпиливать (2008 год):
Update the Allow*Grabs documentation for xf86misc removal.
Remove the remainder of grab deactivation and closedown.
Зачем и почему это было сделано, я так и не смог раскопать. Загадочным образом, на 2008 год в почтовых архивах Xorg доступен только март месяц. Видно только, что оба коммита произвел некто Adam Jackson из RedHat.

Через некоторое время (2009 год) то тут, то там, то сям стали появляться сообщения пользователей, недовольных таким положением дел. Причем, в качестве причин назывались не только какие-нибудь там «закрыть зависшее приложение», а вполне себе серьезные «невозможно нормально отлаживать графические приложения, использующие захват клавиатуры» (если во время действия захвата сработает точка останова в отладчике, получаем дедлок — клавиатура/мышь недоступны, т.к. захвачены программой; программа никогда не освободит захват, т.к. остановлена отладчиком).

В этом письме David Campbell спрашивает «А планируется ли вообще что-нибудь взамен утраченных функций? И можно ли, пока этой замены нет, вернуть всё назад?»

На что Peter Hutterer ему отвечает, что «возвращать ничего не будем, потому что этот код не вписывается в новую архитектуру X-сервера, но возможно в будущем данная функциональность будет реализована немного иначе».

И вот, настал 2011 год. В июне Daniel Stone отправляет в список рассылки xorg-devel свой патч, который добавляет четыре новых «приватных действия» (private XKB action) в X-Server:
* PrGrbs: распечатать в лог-файл список активных захватов устройств ввода
* DeaGrb: отключить все захваты
* KilGrb: убить все приложения, у которых есть захваты
* PrWins: вывести в файл древовидный список окон


Также он пишет, что для использования этих действий, необходимо назначить им сочетание клавиш:
To use these, you need to modify your XKB maps, e.g. the following to
have Ctrl+Alt+Enter print all currently active grabs:
— compat/xfree86:
interpret XF86DOS {
action = Private(type=0x86, data=«PrGrbs»);
};

— symbols/pc:
key { type=«CTRL+ALT», [ Return, XF86DOS ] };


Но мы с вами помним, что отключение захватов и убивание приложений давным-давно уже было реализовано. По иронии судьбы, реализовано оно было через этот же механизм «приватных действий». Соответственно, действия «отключить все захваты» и «убить всех захватчиков» уже имели свои идентификаторы. О чем и напомнил Даниэлю… Peter Hutterer:
compat/xfree86 still has the stuff for «Ungrab» and «ClsGrab».

#define XF86XK_Ungrab 0x1008FE20 /* force ungrab */
#define XF86XK_ClearGrab 0x1008FE21 /* kill application with grab */

we should keep using them if possible.


Даниел, разумеется, согласился и заменил в своем патче «DeaGrb» на «Ungrab», а «KilGrb» на «ClsGrb». Вместе с другими поправками патч попал в master-ветку git-репозитория Xorg.

Но никто не заметил, что для старых «Ungrab» и «ClsGrb» уже были назначены сочетания клавиш — те самые ctrl + alt + / и ctrl + alt + *. Только в то время они были по-умолчанию выключены и включались через конфиг, поэтому никого не пугали. А автор нового патча предполагал, что сам факт назначения клавиш на эти действия будет являться подтверждением желания пользователя их использовать, но он не знал, что они уже назначены по умолчанию.

Результат, как говорится, на лицо.

Как же правильно исправить этот баг? Правильно! Снять назначенные клавиши, что и предлагают сделать в разных местах Сети.

Что же сделали, например, в Debian (спасибо porzione за выдержку из лога)? Они полностью откатили этот патч! То есть пользователи Debian теперь даже если захотят, не смогут включить возможность противостоять «захватчикам» их экрана. :)

Такая вот непридуманная история, господа.
Таки накосячил с цитатами. А все потому, что «Предпросмотр» их не отображает. Ну вы поняли, что длинная цитата на самом деле короткая и относится только к английскому тексту. :)
Sign up to leave a comment.

Articles