LinuxシステムのFirefoxプロセスが自分のシステムのどの部分にもアクセスできないため、画面共有を中断できますか?
ビデオ通話中にFirefoxに画面共有機能があることがわかりました。つまり、プロセスが自分の画面の内容を読むことができるという意味です。
私はブラウザが画面上のすべてにアクセスできるのが好きではありません。これのメカニズムは何ですか?
答え1
X11で画面を共有できるのはなぜですか?
X11セキュリティモデルでは、Xサーバーにアクセスでき、Xサーバー拡張によって制限されていないすべてのクライアントはデフォルトで信頼され、同様のクエリを使用できます。XCopyArea
またはXGetImage
画面上のすべてのウィンドウの内容をキャプチャします。その理由は、X11プロトコルの最初のバージョンが1987年にリリースされ、セキュリティ機能が後で「追加」されたため、主に歴史的です。
Waylandは、より厳格なセキュリティ設計を備えています。シンセサイザーまたは指定された信頼できるアプリケーションのみが別のウィンドウの内容にアクセスできます。
Xアクセス制御拡張フレームワーク
画面共有をブロックする洗練されたソリューションは、次のものを使用することです。X アクセス制御拡張 (XACE)。この拡張は、詳細なアクセス制御決定を可能にするために他の拡張モジュールに対するフックを提供する。
残念ながら、特定のアプリケーションが外部ウィンドウにアクセスするのを防ぐことができる既存のモジュールが見つからなかったため、これらの拡張機能を直接作成する必要があります。これはかなり時間がかかる作業かもしれません。
Xセキュリティ拡張
より簡単な解決策は次のとおりです。セキュリティ拡張。 XACEよりも前に「信頼できる」クライアントと「信頼できない」クライアントだけが区別されるため、画面共有のみをブロックすることはありません。グラフィックアクセラレーション、カーソルキャプチャ、カスタムカーソル、フルスクリーンウィンドウなどの機能もあります。。そのため、誤動作が発生し、レンダリングが遅くなる可能性があります。
基本的なアイデアは、アプリケーションが「魔法のクッキー」を使用してXサーバーに権限を付与することです。これらの「cookie」は、本質的にアプリケーション~/.Xauthority
がXサーバーへの接続が許可されていることを証明するために使用できるファイル(または環境変数で参照されるファイル)に書き込まれる乱数です。クッキーは「信頼できる」または「信頼できない」のいずれかです。ログイン時に作成されたデフォルトのCookieは信頼できます。/tmp/xauth-*
XAUTHORITY
したがって、Firefoxを制限するには、新しいX権限ファイルに信頼できない新しいCookieを作成し、XAUTHORITY
環境変数を使用して起動時にFirefoxに信頼できないCookieを提供する必要があります。これは次の方法で行うことができます。xauth
注文する。
次のラッパースクリプトは、信頼できないXクライアントとして引数として提供されたプログラムを実行します。
#!/bin/sh
# Create empty file only accessible by the current user or empty it if already existing
(umask 0077; : > ~/.Xauthority-untrusted)
# Generate an untrusted magic cookie expiring 30 seconds after last use
xauth -f ~/.Xauthority-untrusted generate "$DISPLAY" MIT-MAGIC-COOKIE-1 untrusted timeout 30
# Set the environment variable
XAUTHORITY=~/.Xauthority-untrusted
export XAUTHORITY
# Replace the shell with the program given on the command line
exec "$@"
たとえば、保存しuntrusted.sh
て実行可能にします。その後、を使用して、信頼できないモードでFirefoxを起動できます./untrusted.sh firefox
。
これは悪意のあるアプリケーションから完全に保護されていません。アプリケーションがローカルコンピュータにあり、ユーザーアカウントで実行されている限り、悪意のあるアプリケーションが元の権限ファイルの場所を推測したり、次の問題が原因で発生した問題を利用したりする可能性があるため、この保護を回避することができます。xhost
アクセス制御は可能ですが、ブラウザが画面を共有するのを防ぐのに十分です。