X11転送を許可することに対する、または拒否することに対するセキュリティ上の懸念と理由のいくつかは何ですか。私は一般的に、セキュリティの全面的な偽装の下でそれを許可しないアプローチをとっています。最近、ユーザーに、X11転送セッションを許可することによるセキュリティへの影響は無視できるものであると考えていることを指摘してもらいました。 X11フォワーディングを許可することの害とは何か、なぜ許可したいのかについて、もっと知りたいと思いました。
X11転送の意味は、サーバーからクライアントへのチャネルを開くことです。単純なSSHセッションでは、クライアントはサーバーよりも信頼されます。クライアントを制御している誰もがサーバーでコマンドを実行できます(シェルアクセスを想定)。ただし、その逆は当てはまりません。 X11転送を使用すると、サーバーはクライアントへのシェルアクセスを取得する可能性があります。
テキストセッションでは、サーバーからクライアントに戻るチャネルが制限されています。サーバーはクライアントに表示される出力を決定し、特にクライアントで実行されているターミナルのエスケープシーケンスを悪用しようとすることができます。
X11セッションでは、サーバーはX11コマンドをクライアントに送信できます。 X11はセキュリティを念頭に置いて設計されたのではなく、表示しているすべてのプログラムはユーザーによって実行されるため、とにかく信頼できるという考えで設計されました。デフォルトでは、SSHはサーバーからのコマンドに X11 SECURITY extension による制限を適用します。 SECURITY拡張機能は、キーボードグラブやキーインジェクションなどの明らかな攻撃を無効にしますが、フォーカススティーリングなどの他の攻撃を許可します。
X11転送を有効にして、someserver
へのSSH接続を開いたとします。主なリスクは、someserver
が悪意のあるものである場合、someserver
は、自分のコンピューターで開いているウィンドウやアプリケーションに対してあらゆる種類の厄介なことを実行できるということです。
たとえば、someserver
は自分のコンピューターのウィンドウを開く、開いている他のウィンドウを閉じる、開いている他のウィンドウの内容をスパイする、他のウィンドウに入力したキーをスパイする、インジェクトすることができる他のウィンドウがローカルで実行されているローカルアプリケーションであっても、開いている他のウィンドウへのキーストロークとマウスイベントのなりすまし。
他の回答で説明されている、sshを介したX転送のリスクに対する1つの解決策は、偽装Xサーバーと呼ばれるものを使用することです。コンテナ上で、一部のXワークを背後の実際のXサーバーに渡します。ホストの実際のXデスクトップでは、疑似X画面が単一のXウィンドウとして表示されます。
セキュリティツールとして意図されたものではありませんが、Xephyrはその説明に適合します。
そのため、バニラubuntuイメージからlxd/lxcコンテナーを作成し、それにfirefox、openvpn、Xephyr、およびpusleaudioを入力するJavaScriptプログラムを作成しました。
https://github.com/craigphicks/browser-on-lxc-vpn-xephyr
https://www.npmjs.com/package/browser-on-lxc-vpn-xephyr
強力なセキュリティの主張はしませんが、それは概念実証の演習でした。