X.Org/Wayland Security Advisory: June 10th, 2015 - CVE-2015-3164
Unauthorised local client access in XWayland
Ray Strode, a developer at Red Hat, discovered an authentication setup
issue inside the XWayland compatibility server, used to host X11 clients
inside a Wayland compositor's session. XWayland is used by Weston and
Mutter / GNOME Shell's Wayland mode.
Due to an omission in authentication setup, the XWayland server would
start up in non-authenticating mode, meaning that any client with access
to the server's UNIX socket was able to connect to the server and use it
as a regular client. No Wayland compositor was known to start XWayland
with TCP access open, so remote exploitation is not considered possible.
On many systems, all local users would have full access to the XWayland
server, allowing untrusted users to capture contents of, and input
destined for, other X11 clients.
This permission bypass does not extend to native Wayland clients:
XWayland is not given access to the buffers of any Wayland clients in
the host session, nor is any input sent to XWayland unless an X11
client was active at that time.
The resolution was to restrict XWayland connections to the same UID as
the server itself, matching Wayland's default permissions.
This vulnerability has been assigned CVE-2015-3164.
The separate XWayland DDX was introduced with version 1.16 of the X.Org
Server release, and this vulnerability has been present in all versions
since. Versions prior to these releases used a separate 'xwayland'
module within the Xorg DDX, which is unaffected by this vulnerability.
All Weston versions since 1.5.0 use the new Xwayland server, as well as
all released Wayland versions of Mutter / GNOME Shell.
Fixes are available in the patches for these X server git commits:
Which are now available from:
Fixes will also be included in the 1.18 series and its release candidates,
as well as the 1.17.2 stable release.
X.Org and the Wayland community thank Ray Strode of Red Hat for reporting
these issues to our security team and developing the fixes.
Relevant upstream commits:
This affects xorg-server-1.16 and newer when built with USE="wayland". Older versions are not affected.
[ANNOUNCE] xorg-server 1.17.2
This picks up a pile of fixes from master. Notable highlights:
- Fix for CVE-2015-3164 in Xwayland
- Fix int10 setup for vesa
- Fix regression in server-interpreted auth
- Fix fb setup on big-endian CPUs
- Build fix for for gcc5
Aaron Plattner (2):
xfree86: Fix xf86_check_platform_slot's handling of PCI
xfree86: Add GPU screens even if there are no active GDevs
Adam Jackson (1):
Adel Gadllah (1):
modesetting: Fix software cursor fallback
Alan Coopersmith (2):
Clear ListenTransConns entries in CloseWellKnownConnections
Accept x86_64 as well as i*86 for $host_cpu in Solaris on x86
Brent Collins (1):
shm: Fix xselinux resource initialization for xinerama pixmaps
Chris Wilson (2):
shm: Fix use-after-free in ShmDestroyPixmap
present: Copy unflip contents back to the Screen Pixmap
Colin Harrison (2):
os/xdmcp.c: Include Xtrans.h when building for WIN32
os/utils.c: Don't try to build os_move_fd() for WIN32
Dave Airlie (2):
os/access: fix regression in server interpreted auth
glamor: don't do render ops with matching source/dest (v2)
Dima Ryazanov (1):
xwayland: Implement smooth scrolling
Egbert Eich (6):
symbols: Fix sdksyms.sh to cope with gcc5
Xephyr: Don't crash when no command line argument is specified
Xephyr: Print default server display number if none is specified
Xephyr: Fix compile when debugging is enabled
Xephyr: Fix screen image draw for the non-Glamor & non-XHSM case
Xephyr: Fix broken image when endianess of client machine and host-Xserver differ
Emil Velikov (2):
randr: remove chatty error messages
randr: use randr: prefix in ErrorF()
Hans de Goede (1):
Re-enable non serverfd input devices immediately on vtenter
Jason Gerecke (2):
xfree86: Return NULL from xf86CompatOutput if no compat_output is defined
dix: Do not allow device transform to be set on valuatorless devices
Jon TURNEY (9):
ephyr: Avoid a segfault with 'DISPLAY= Xephy -glamor'
os: XDMCP options like -query etc. should imply -listen tcp
os: Teach vpnprintf() how to handle "%*.*s"
hw/xwin/glx: Refactor parsing of the <proto> XML element
hw/xwin/glx: Improve code generator to deal with latest Khronos OpenGL registry XML
hw/xwin: Report Cygwin version information in log
glamor: Fix build when configured --enable-glamor --disable-xshmfence
hw/xwin/winclipboard: Link xwinclip with -lpthread
hw/xnest: Fix build for MinGW
Jonathan Gray (2):
glamor: remove const from the return type of glamor_get_drawable_location()
glamor: fix build when DRI3 is not defined
Jürg Billeter (1):
int10: Fix error check for pci_device_map_legacy
Keith Packard (1):
mi: Partial pie-slice filled arcs may need more space for spans
Maarten Lankhorst (4):
glamor: only use (un)pack_subimage when available
glamor: do not check for gl errors in glamor_build_program
glamor: Use GL_FRAMEBUFFER instead of GL_READ_FRAMEBUFFER
glamor: GL_TEXTURE_MAX_LEVEL is not available on GLES2
Michal Srb (1):
Expose GetMaster to modules.
Michel Dänzer (2):
Add AC_SYS_LARGEFILE defines to dix-config.h
modesetting: Include dix-config.h from dumb_bo.c
Olivier Fourdan (4):
ephyr: Fail if glamor is requested but not usable
xwayland: Add dependency on glamor libs
glamor: check max native ALU instructions
dix: Fix image byte order on big endian hardware
Ray Strode (5):
systemd-logind: filter out non-signal messages from message filter
systemd-logind: don't second guess D-Bus default timeout
xwayland: Enable access control on open sockets [CVE-2015-3164 1/3]
os: support new implicit local user access mode [CVE-2015-3164 2/3]
xwayland: default to local user if no xauth file given. [CVE-2015-3164 3/3]
Robert Ancell (1):
xwayland: Fix error strings
Rui Matos (2):
dix/events: Set currentTime to the given time stamp in NoticeTime
xwayland: Throttle our cursor surface updates with a frame callback
Vicente Olivert Riera (1):
backtrace.c: Fix word cast to a pointer
git tag: xorg-server-1.17.2
renamed copy of xorg-server-1.17.1-r1.ebuild works
The authentication setup in XWayland 1.16.x and 1.17.x before 1.17.2 starts
the server in non-authenticating mode, which allows local users to read from
or send information to arbitrary X11 clients via vectors involving a UNIX
1.17.2 in tree. The fixes should be probably ported back to the older versions in tree.
Is it ready to go stable?
(In reply to Mikle Kolyada from comment #6)
> Is it ready to go stable?
Running 1.17.2 here with MATE and works fine.
Maintainer(s), please advise if you when you are ready for stabilization or call for stabilization yourself.
Will call for stabilization on 8/15 if not done by then.
Before xorg-server-1.17.2 can go stable, a number of other packages need to go stable first. This is further complicated by the transition to new eselect-opengl.
xorg-server-1.16.4-r3 and xorg-server-1.16.4-r4 have been pushed to fix this issue.
fwiw to elucidate on comment #9 in order to upgrade to xorg-xserver 1.17.2 on my machine I attempted the keywording necessary for my machine. All of the following were required
this was attempted and X then failed to start with startxfce4 or kdm
For 1.16 - Currently in the tree we have 1.16.4-r5. Are we ready to go stable with that version?
1.17.4 is non stable if you encounter issues with it. 1.17.2 pushed the security fix for this issue. If you encounter any problems with any 1.17 versions please file another Bug.
x11-base/xorg-server-1.16.4-r5 is being stabilized in bug 559062. Marking dependence.
This issue was resolved and addressed in
GLSA 201701-64 at https://security.gentoo.org/glsa/201701-64
by GLSA coordinator Thomas Deutschmann (whissi).