让我们说,在Linux上,我使用鼓泡膜对一个应用程序进行沙箱,并给予它对/tmp/.X11-unix的写访问权,这样它就可以成为X客户端。沙箱应用程序(不使用任何X服务器攻击)是否有可能以不可见的方式记录其他应用程序的击键?一方面,Linux击键记录器日志键需要根用户访问/dev/input/event#设备之一。另一方面,xhotkeys可以在没有任何根权限的情况下拦截任意的击键,因此沙箱应用程序也可以类似地拦截任意击键,然后将事件作为合成事件重新发布,以便将其传递给预定的接收方。
编辑:如果沙箱应用程序只使用sandboxed客户端连接就可以进行击键记录,那么可以通过启动嵌套X服务器并只允许沙箱访问嵌套服务器来阻止这种情况吗?
发布于 2017-11-30 04:23:50
是的,只使用X11连接就可以进行击键记录。这样做的两种常见方法是使用XTEST扩展,或者使用XQueryKeymap(),后者返回键盘的当前状态。当X11连接通过套接字时,如果一个进程能够访问X11 cookie,并且可以使用X11进行身份验证,它将能够监视(并注入)击键。
使用嵌套的X服务器可以防止这种情况发生(不过我建议使用Xephyr而不是Xnest,因为Xnest是不推荐的)。您必须让沙箱进程访问嵌套服务器的X11 cookie,并阻止它访问根X11 cookie。
https://security.stackexchange.com/questions/170596
复制相似问题