[Secure-testing-team] Bug#539699: xscreensaver: unlocked because killed, infinite loop with small screen
David Fries
david at fries.net
Mon Aug 3 02:18:03 UTC 2009
Package: xscreensaver
Version: 5.05-3
Severity: grave
Tags: security patch
Justification: user security hole
Reproduce by setting a narrow X resolution, in this case I was running
Xnest at 410x384, type something to get the password dialog, but it
never comes up. xscreensaver goes into an infinite loop eating
memory, and the one time I let it run, the Linux kernel out of memory
detector killed xscreensaver unlocking the X server. That's why I
marked this with the security tags.
Do any hardware and X software automatically pick up and use newly
plugged in displays? If so, it might be exploited by, plugging in a
custom display device with a small screen, and use this exploit to
kill the screen saver get access to the system, then restart the
xscreensaver to make detection more difficult.
The problem is when mlstring_wrap detects a space will copy the
whitespace on to a new line and then truncate the original string for
the current line. If in the next iteration the line is still too
long, and the current whitespace character is the first one
encountered it is in an infinite loop finding the same whitespace
character.
In my case line_length is 5, and the string is
"Please enter your password."
This patch will leave the whitespace in the previous line so it can't
be found the next iteration. It will also make the previous line too
wide, but only the whitespace would be over the border.
On a site note it might be a good idea to always put the logo on the
right side, or put it on the right side when the width is too small.
With the patch at 410 pixels wide the logo takes up almost all of the
screen and the text is just visible at the right side.
diff --git a/driver/mlstring.c b/driver/mlstring.c
index d6df844..a850890 100644
--- a/driver/mlstring.c
+++ b/driver/mlstring.c
@@ -153,6 +153,8 @@ mlstring_wrap(mlstring *mstring, XFontStruct *font, Dimension width)
if (wrap_at == -1) /* No space found, hard wrap */
wrap_at = line_length;
+ else
+ wrap_at++; /* Leave the space at the end of the line. */
newml = calloc(1, sizeof(*newml));
if (!newml) /* OOM, don't bother trying to wrap */
-- System Information:
Debian Release: 5.0.2
APT prefers stable
APT policy: (500, 'stable')
Architecture: i386 (i586)
Kernel: Linux 2.6.29-rc3
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
Shell: /bin/sh linked to /bin/bash
Versions of packages xscreensaver depends on:
ii libatk1.0-0 1.22.0-1 The ATK accessibility toolkit
ii libc6 2.7-18 GNU C Library: Shared libraries
ii libcairo2 1.6.4-7 The Cairo 2D vector graphics libra
ii libglade2-0 1:2.6.2-1 library to load .glade files at ru
ii libglib2.0-0 2.16.6-2 The GLib library of C routines
ii libgtk2.0-0 2.12.12-1~lenny1 The GTK+ graphical user interface
ii libice6 2:1.0.4-1 X11 Inter-Client Exchange library
ii libpam0g 1.0.1-5+lenny1 Pluggable Authentication Modules l
ii libpango1.0-0 1.20.5-5 Layout and rendering of internatio
ii libsm6 2:1.0.3-2 X11 Session Management library
ii libx11-6 2:1.1.5-2 X11 client-side library
ii libxext6 2:1.0.4-1 X11 miscellaneous extension librar
ii libxinerama1 2:1.0.3-2 X11 Xinerama extension library
ii libxml2 2.6.32.dfsg-5 GNOME XML library
ii libxmu6 2:1.0.4-1 X11 miscellaneous utility library
ii libxpm4 1:3.5.7-1 X11 pixmap library
ii libxrandr2 2:1.2.3-1 X11 RandR extension library
ii libxrender1 1:0.9.4-2 X Rendering Extension client libra
ii libxt6 1:1.0.5-3 X11 toolkit intrinsics library
ii libxxf86misc1 1:1.0.1-3 X11 XFree86 miscellaneous extensio
ii libxxf86vm1 1:1.0.2-1 X11 XFree86 video mode extension l
ii xscreensaver-data 5.05-3 data files to be shared among scre
Versions of packages xscreensaver recommends:
ii libjpeg-progs 6b-14 Programs for manipulating JPEG fil
ii perl [perl5] 5.10.0-19 Larry Wall's Practical Extraction
ii wamerican [wordlist] 6-2.3 American English dictionary words
pn xli | xloadimage <none> (no description available)
Versions of packages xscreensaver suggests:
ii fortune-mod [fortune] 1:1.99.1-3.1 provides fortune cookies on demand
ii iceape-browser [www-bro 1.1.14-1 Iceape Navigator (Internet browser
ii iceweasel [www-browser] 3.0.6-1 lightweight web browser based on M
ii konqueror [www-browser] 4:3.5.9.dfsg.1-6 KDE's advanced file manager, web b
ii lynx-cur [www-browser] 2.8.7dev9-2.1 Text-mode WWW Browser with NLS sup
ii streamer 3.95.dfsg.1-8 television capture tool (images/mo
pn xdaliclock <none> (no description available)
pn xfishtank <none> (no description available)
pn xscreensaver-gl <none> (no description available)
-- no debconf information
More information about the Secure-testing-team
mailing list