私はX11を初めて使用するので、インターネットで言うほど本当に危険かどうかを知りたいのです。
これを理解する方法を説明します。現在のユーザーの下から起動されたアプリケーションは、キーボード、マウス、ディスプレイ(スクリーンショットを撮るなど)にアクセスできますが、これは好ましくありません。しかし、公式リポジトリ(たとえば、Debianの場合)からプログラムをインストールする場合、キーロガーなどが含まれている可能性は低いため、危険は誇張されているようです。私が間違っている?
はい、別のサーバーでアプリケーションを開くことができます(たとえば、Xephyr)ですが、共有クリップボードがないため、これは不便です。 tmpファイルに基づいてクリップボードを作成することも不便です。
現在のユーザーの下から起動されたアプリケーションはすべて、キーボード、マウス、ディスプレイ(スクリーンショットを撮るなど)にアクセスできますが、これは好ましくありません。
デスクトップ上のすべてのX11クライアントは、任意のウィンドウのコンテンツの取得、変更、任意のウィンドウのクローズ、他のクライアントへのキーおよびマウスイベントの偽装、任意の入力デバイスの取得など、相互に詳細にアクセスできます。
X11プロトコルの設計は、クライアントはすべて信頼され、協力するという考えに基づいています。お互いのつま先を踏むことはありません(後者は、Firefoxなどの最新のアプリによって完全に破壊されますChromeまたはJava)。
しかし、キーロガーなどを含む可能性が低い公式リポジトリ(Debianなど)からプログラムをインストールする場合、危険性の問題は明らかに誇張されます。私が間違っている?
プログラムにはバグがあり、悪用される可能性があります。 X11サーバーとライブラリが最新でない可能性があります。たとえば、すべてのX11クライアントは、無害なXkbリクエストを介して、現在のバージョンのDebian(Buster 10)のXサーバーをクラッシュできます。 (それは上流のソースでは fixed でしたが、Debianではまだ実現していませんでした)。クラッシュする可能性がある場合は、X11サーバーの特権(ハードウェアへのアクセスなど)を使用してコードを実行することもできる可能性があります。
Xwayland(およびDebianの通常のXorg Xserver)での緩い認証の問題については、 この答え の末尾の注記を参照してください。
はい、アプリケーションを別々のサーバー(Xephyrなど)で開くことができますが、共有クリップボードがないため、これは不便です。 tmpファイルに基づくクリップボードの作成も不便です。
追加の手順を実行しない限り、Xephyr
はデフォルトで任意のローカルユーザーがそれに接続できることに注意してください。それについての議論は this を参照してください。
複数のX11サーバー間で共有クリップボードを作成することは興味深い問題であり、これを混合するのではなく、独自のQ&Aに値します。
同じユーザーアカウントで同じマシン上で実行されるアプリケーションは、ptrace
システムコールを使用して互いのプロセスメモリを変更できるため、X11はここでの最も便利な攻撃面ではありません。
完全に信頼していないアプリケーションの場合、最初にそれらを別のユーザーIDで実行する必要があります(Androidはさまざまなベンダーのアプリケーションで使用できます)。XSECURITY拡張機能を使用して、 Xサーバーへの「信頼されていない」アクセストークン。これにより、アプリケーションのX11へのアクセスが制限されます。
X11の入力イベントには、入力イベントが入力デバイスから生成されたものか、別のプログラムから送信されたものかを示すSynthetic
フィールドがあり、受信プログラムは、合成イベントの処理方法を決定します。たとえば、xterm
無視します。 XTEST拡張機能を使用すると、テスト目的でソフトウェアからSynthetic
以外のイベントを生成できます。そのため、信頼されていないクライアントは、その拡張機能を使用できません。