Ilja van Sprundel, a security researcher with IOActive, has
discovered a large number of issues in the way various X client
libraries handle the responses they receive from servers, and has
worked with X.Org's security team to analyze, confirm, and fix
these issues.
Most of these issues stem from the client libraries trusting the
server to send correct protocol data, and not verifying that the
values will not overflow or cause other damage. Most of the time X
clients & servers are run by the same user, with the server
more privileged from the clients, so this is not a problem, but
there are scenarios in which a privileged client can be connected
to an unprivileged server, for instance, connecting a setuid X
client (such as a screen lock program) to a virtual X server (such
as Xvfb or Xephyr) which the user has modified to return invalid
data, potentially allowing the user to escalate their privileges.
The vulnerabilities include:
Integer overflows calculating memory needs for replies.
Sign extension issues calculating memory needs for replies.
Buffer overflows due to not validating length or offset values in
replies.
Integer overflows parsing user-specified files.
Unbounded recursion parsing user-specified files.
Memory corruption due to unchecked return values.