Xorg:在 X 中作为远程用户进行身份验证允许我访问其他用户的应用程序吗?

Xorg:在 X 中作为远程用户进行身份验证允许我访问其他用户的应用程序吗?

我正在尝试运行一个 docker 容器(出于安全原因),我想从中查看 GUI 应用程序。

我目前在两个选项之间,我不确定是否应该将其流量转发到我的 X 服务器 (1) 或在容器内运行 X 服务器,然后连接到它 (2)。

我当前的解决方案是(1),但是我担心安全性。假设容器在我的主机服务器中经过身份验证,例如:

  • 与其他应用程序交互时抓取我的鼠标和键盘输入
  • 它可以查询有关其他窗口的信息吗?或者根本知道他们的状态吗?

编辑:如果上述任何一个为真,(2)会解决它吗?

答案1

是的,所有 X11 客户端都可以完全访问所有窗口和显示屏上的所有其他资源。

他们不仅可以抓住键盘和鼠标,获取窗口和像素图的完整内容(或破坏它们;-)),而且还可以伪造的通过 XTEST 扩展进行键盘和鼠标输入。

X11 协议的设计纯粹是合作性的,并假设客户端行为良好——任何编写糟糕的 X11 应用程序都可能造成绝对的破坏,其中许多应用程序确实如此(Java 应用程序不请自来地抢走了焦点,Firefox 在更新页面时将自己弹出到顶部, ETC)。

在容器内运行 X 服务器,然后连接到它 (2)。

在容器内运行Xvfb——这是一个无法访问硬件的 X11 服务器。或者,如果您想与 GUI 程序交互,可以使用像Xephyr[1]这样的嵌套 X11 服务器。请注意,除非您向其传递参数-auth,否则 X11 服务器将允许任何本地客户端连接到它。

相关内容