Linuxシステムで bubblewrap を使用してアプリケーションをサンドボックス化し、アプリケーションに/tmp/.X11-unix
への書き込みアクセス権を付与して、X Windowsクライアントにできるとしましょう。サンドボックス化されたアプリケーション(Xサーバーのエクスプロイトを使用しない)が、他のアプリケーションに送られるキーストロークを目に見えない形でログに記録することは可能ですか?一方、Linuxキーストロークロガー logkeys には、/dev/input/event#
デバイスの1つへのrootアクセスが必要です。一方、 xhotkeys はルート権限なしで任意のキーストロークをインターセプトできるため、サンドボックス化されたアプリが同様に任意のキーストロークをインターセプトし、イベントを合成イベントとして再ポストして、イベントが通過するようにすることができます目的の受信者に。
[〜#〜] edit [〜#〜]:サンドボックスアプリがX Windowsクライアント接続のみでキーストロークロギングを実行できる場合、 ネストされたXサーバー を起動し、サンドボックスにネストされたサーバーへのアクセスのみを与えることで、これを防ぐことができますか?
はい、X11接続だけでキーストロークロギングを実行できます。これを行う一般的な2つの方法は、XTEST
拡張機能を使用するか、XQueryKeymap()
を使用することです。 、キーボードの現在の状態を返します。 X11接続はソケットを経由するだけなので、プロセスがX11 Cookieにアクセスでき、Xorgで自身を認証できる場合、キーストロークを監視(および注入)できます。
ネストされたXサーバーを使用すると、これから保護されます(XnestではなくXephyrが非推奨であるため、後者をお勧めします)。サンドボックス化されたプロセスにネストされたサーバーのX11 Cookieへのアクセスを許可し、ルートX11 Cookieにアクセスできないようにする必要があります。