<div dir="ltr">Hello all,<div><br></div><div>I am Ian Liu and this is my first post to this list, salute.</div><div><br></div><div><b>Short description</b></div><div>Why X11 doesn't include the authorization cookie when DISPLAY's host is localhost? Is there a way to include it?</div>


<div><br></div><div><b>Long description</b></div><div>I work on a project where we do X11 forwarding "by hand", meaning that we manually register xauth cookies and set displays. We may have a scenario like this: machine <b><font color="#ff0000">A</font></b> connects to <b><font color="#00ff00">B</font></b> which connects to <b><font color="#0000ff">C</font></b> via locally bind'ed TCP. The bridge between the machines is done with SSH forwards.</div>


<div><br></div><div>The display is on machine <b><font color="#ff0000">A</font></b>, and a graphical program runs on <b><font color="#0000ff">C</font></b>, so we make SSH tunnels between <b><font color="#ff0000">A</font></b><b><font color="#00ff00">B</font></b> and <b><font color="#00ff00">B</font></b><b><font color="#0000ff">C</font></b>, and export the DISPLAY variable in <b><font color="#0000ff">C</font></b> to <b>localhost:port</b>, where <b>port</b> is the port forwarded by the ssh tunnel, minus 6000.</div>


<div><br></div><div>When the connection reaches <b><font color="#ff0000">A</font></b>, usually we must forward the incoming TCP connection to the X11 unix domain socket (/tmp/.X11-unix/X0). We did this by writing our own TCP to Unix socket forwarder. But our forwarder creates a security issue when executed by the user. It allows arbitrary users to export their display to the first one's display.</div>


<div>So, what we did was to make the same check SSH does when forwarding X, which is to compare the xauth cookie that arrives in the header of a X connection.</div><div><br></div><div>But, if the display exported is localhost, X doesn't send the authorization cookie, and we cannot validate it anymore. Is there a reason for this?</div>

<div><br></div><div>I hope I was clear enough, please advice me if nothing was understood.</div><div><br></div><div>Kind regards,</div><div>Ian L. Rodrigues.</div><div><br></div><div>PS.: The project I work on is Free software, available here: <a href="http://bitbucket.org/gebrproject/gebr">bitbucket.org/gebrproject/gebr</a></div>

</div>