An Easy But Serious Screensaver Security Problem In X.Org
Posted by Michael Larabel on January 18, 2012
I've been alerted this afternoon that there's an outstanding security vulnerability within the current X.Org Server that's receiving little attention. This active vulnerability could allow anyone with physical access to your system to easily bypass the desktop's screen lock regardless of your desktop environment.
A blog post at aeroxteam.fr initially uncovered and detailed this apparent vulnerability. A commit to XKB for X.Org Server 1.11 adds a few debug key actions for grabs and the window tree. One of the four new XKB actions allowed is killing clients with active grabs, which is what most (or perhaps all) desktop environment screensavers rely upon for their screensaver lock -- just ensuring they have the top window and are catching all input events. One of the other four options is unleashing all active grabs. While a debugging feature, both of these are appearing by default in some of the leading Linux distributions.
CTRL+ALT+F10 by default in the xorg-server will now ungrab all currently active grabs and CTRL+ALT+F11 will kill clients with active grabs, if you're running a stock XKB map. (Additionally as part of this commit, CTRL+ALT+F9 will print active grabs to the log file and CTRL+ALT+F12 will dump the current window tree to the log file). Another option is using CTRL+ALT+Keypad-Multiply for this bug. This is on X.Org Server 1.11 and it also is appearing that way in the Git for what will become X.Org Server 1.12 this March. This code was previously in the X.Org Server tree years ago as a debugging utility too, but back then it was disabled by default and only could be enabled if set within the xorg.conf.
As mentioned in the aforelinked blog post by "Gu1", this new debugging functionality isn't clearly documented nor can it even be disabled easily. To disable this screensaver workaround, you must edit the XKB keyboard mapping configuration manually to remove XF86Ungrab and XF86ClearGrab mentions. The commit was authored by Daniel Stone and sent into the xserver Git this past June.
X.Org Server 1.11+ users are affected, which is currently shipping in Fedora 16, is to be shipping in Ubuntu 12.04 LTS, Debian unstable, Arch Linux, Gentoo, and others. X.Org Server 1.11 was released last September prior to XDC2011 Chicago. GNOME 3.x and KDE 4.x are among the desktop environments affected by this security snafu.
Embedded below is an iPhone video I quickly recorded tonight after carrying out a clean install of Debian "Wheezy" on one of the Phoronix systems. Wheezy is currently using X.Org Server 1.11.1 and tested was the GNOME Shell. No package or configuration changes were made to the Debian Linux installation. After locking the screen of the Debian desktop, it was simply a matter of pressing the CTRL+ALT+Keypad-Multiply combination and you're back at the desktop without inputting any password.
In summary, if your Linux distribution is using X.Org Server 1.11+ -- it's been out there for four months ago while the commit introducing the potential problem has been in Git since last June -- (you can find out by running X -version) and the XKB mapping has the standard debugging features, you may be at risk of your screensaver lock being useless if anyone were to just hit a simple keyboard combination, since then they can be brought to your desktop with full access and no password being needed. This problem wouldn't be limited to Linux but any operating system using the modern (v1.11+) X.Org Server, such as the *BSDs and Solaris.