
私は 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 サーバー間で共有クリップボードを作成することは興味深い問題であり、これと混同するのではなく、独自の Q&A に値します。
答え2
同じユーザー アカウントを持つ同じマシン上で実行されているアプリケーションは、ptrace
システム コールを使用して互いのプロセス メモリを変更できるため、ここでは X11 が最も便利な攻撃対象領域ではありません。
完全に信頼できないアプリケーションの場合は、最初に別のユーザー ID で実行する必要があります (Android が別のベンダーのアプリケーションに対して行うのと同じように)。また、XSECURITY 拡張機能を使用して、X サーバーの「信頼されていない」アクセス トークンを生成し、アプリケーションの X11 へのアクセスを制限できます。
- 自分のウィンドウに向けられていない入力イベントにはアクセスできません
- XTEST拡張機能にアクセスできない
- 透明な窓はありません
X11 の入力イベントには、Synthetic
入力イベントが入力デバイスから生成されたか、別のプログラムから送信されたかを示すフィールドがあり、受信側プログラムは合成イベントをどのように処理するか (たとえば、xterm
単に無視する) を決定します。XTEST 拡張機能Synthetic
により、テスト目的でソフトウェアから非イベントを生成できます。そのため、信頼できないクライアントはこの拡張機能を使用できません。