X11危險嗎?

X11危險嗎?

我是 X11 的新手,想了解它是否真的像網路上所說的那麼危險。

我將解釋我是如何理解這一點的。從目前使用者下啟動的任何應用程式都可以存取鍵盤、滑鼠、顯示器(例如截圖),這不好。但是,如果我們從官方存儲庫安裝程序(例如,對於 Debian),其中不太可能包含鍵盤記錄器等,那麼危險似乎被誇大了。我錯了嗎?

是的,您可以在單獨的伺服器上開啟應用程式(例如,Xephyr),但這很不方便,因為沒有共用剪貼簿。基於tmp檔案建立剪貼簿也很不方便。

答案1

從目前使用者下啟動的任何應用程式都可以存取鍵盤、滑鼠、顯示器(例如截圖),這不好。

桌面上的所有 X11 用戶端都可以深度相互訪問,包括獲取任何視窗的內容、更改它、關閉任何視窗、向任何其他客戶端偽造按鍵和滑鼠事件、抓取任何輸入設備等。

X11 協議的設計基於這樣的理念:客戶端都是受信任的,並且會協作,而不是踩對方的腳趾(後者完全被 Firefox、Chrome 或 Java 等現代應用程式打破)。

但是,如果我們從官方存儲庫(例如,Debian)安裝程序,而這些程序不太可能包含鍵盤記錄器等,那麼危險問題顯然被誇大了。我錯了嗎?

程式有缺陷,可能會被利用。 X11 伺服器和函式庫可能不是最新的。例如,任何 X11 用戶端都可以碰撞目前版本 Debian (Buster 10) 中的 X 伺服器透過無害的 Xkb 請求。 (那是固定的在上游原始碼中,但尚未在 Debian 中實現)。如果它能夠使其崩潰,那麼它也有可能能夠使用 X11 伺服器的權限(存取硬體等)執行程式碼。

對於 Xwayland 中認證不嚴格的問題(以及 Debian 中的常規 Xorg Xserver),請參閱末尾的註釋這個答案

是的,您可以在單獨的伺服器(例如 Xephyr)上開啟應用程序,但這很不方便,因為沒有共用剪貼簿。基於tmp檔案建立剪貼簿也很不方便。

請注意,除非您採取額外的步驟,Xephyr允許任何本地用戶預設連接到它。看對此進行討論。

在多個 X11 伺服器之間建立共用剪貼簿是一個有趣的問題,值得單獨進行問答,而不是與此混合。

答案2

使用相同使用者帳戶運行在同一台機器上的應用程式可以使用ptrace系統呼叫來修改彼此的進程內存,因此 X11 並不是這裡最方便的攻擊面。

對於您不完全信任的應用程序,您需要先使用不同的用戶ID 運行它們(就像Android 對來自不同供應商的應用程式所做的那樣),並且您可以使用XSECURITY 擴展為X 伺服器來產生「不受信任」的存取令牌,應用程式對 X11 的存取受到限制:

  • 無法存取不針對自己視窗的輸入事件
  • 無法存取 XTEST 擴展
  • 沒有透明窗戶

X11 中的輸入事件有一個Synthetic字段,用於告知輸入事件是從輸入裝置產生還是從另一個程式發送,並且接收程式決定如何處理合成事件,例如xterm忽略它們。 XTEST 擴充功能允許Synthetic從軟體產生非事件用於測試目的,這就是為什麼不受信任的客戶端不允許使用該擴充功能。

相關內容