web-dev-qa-db-ja.com

root以外のクライアントのみのX WindowsアクセスでエクスプロイトフリーのLinuxキーロギングを行うことは可能ですか?

Linuxシステムで bubblewrap を使用してアプリケーションをサンドボックス化し、アプリケーションに/tmp/.X11-unixへの書き込みアクセス権を付与して、X Windowsクライアントにできるとしましょう。サンドボックス化されたアプリケーション(Xサーバーのエクスプロイトを使用しない)が、他のアプリケーションに送られるキーストロークを目に見えない形でログに記録することは可能ですか?一方、Linuxキーストロークロガー logkeys には、/dev/input/event#デバイスの1つへのrootアクセスが必要です。一方、 xhotkeys はルート権限なしで任意のキーストロークをインターセプトできるため、サンドボックス化されたアプリが同様に任意のキーストロークをインターセプトし、イベントを合成イベントとして再ポストして、イベントが通過するようにすることができます目的の受信者に。

[〜#〜] edit [〜#〜]:サンドボックスアプリがX Windowsクライアント接続のみでキーストロークロギングを実行できる場合、 ネストされたXサーバー を起動し、サンドボックスにネストされたサーバーへのアクセスのみを与えることで、これを防ぐことができますか?

4
Matthew Cline

はい、X11接続だけでキーストロークロギングを実行できます。これを行う一般的な2つの方法は、XTEST拡張機能を使用するか、XQueryKeymap()を使用することです。 、キーボードの現在の状態を返します。 X11接続はソケットを経由するだけなので、プロセスがX11 Cookieにアクセスでき、Xorgで自身を認証できる場合、キーストロークを監視(および注入)できます。

ネストされたXサーバーを使用すると、これから保護されます(XnestではなくXephyrが非推奨であるため、後者をお勧めします)。サンドボックス化されたプロセスにネストされたサーバーのX11 Cookieへのアクセスを許可し、ルートX11 Cookieにアクセスできないようにする必要があります。

1
forest