Firejail の脆弱性によりシステムへの root アクセスが可能になる

Firejail アプリケーション分離ユーティリティで、ローカル ユーザーがホスト システム上で root 権限を取得できる脆弱性 (CVE-2022-31214) が確認されました。 パブリックドメインで利用可能な有効なエクスプロイトがあり、firejail ユーティリティがインストールされた openSUSE、Debian、Arch、Gentoo、および Fedora の現在のリリースでテストされています。 この問題は firejail 0.9.70 リリースで修正されました。 保護の回避策として、設定 (/etc/firejail/firejail.config) で「join no」および「force-nonewprivs yes」パラメータを設定できます。

Firejail は、分離のために Linux の名前空間、AppArmor、およびシステム コール フィルタリング (seccomp-bpf) を使用しますが、分離実行を設定するには昇格された特権が必要です。これは、ユーティリティ フラグ suid root にバインドするか、sudo で実行することで取得します。 この脆弱性は、「--join=」オプションのロジックのエラーによって引き起こされます。 " は、その中で実行されているプロセス識別子による環境の定義を使用して、既に実行中の分離環境 (サンドボックス環境のログイン コマンドに類似) に接続することを目的としています。 特権リセット前の段階で、firejail は指定されたプロセスの特権を決定し、「-join」オプションを使用して環境に接続されている新しいプロセスにそれらを適用します。

接続する前に、指定されたプロセスが firejail 環境で実行されているかどうかを確認します。 このチェックでは、ファイル /run/firejail/mnt/join の存在を評価します。 この脆弱性を悪用するために、攻撃者はマウント名前空間を使用して架空の非分離 Firejail 環境をシミュレートし、「--join」オプションを使用してそれに接続する可能性があります。 新しいプロセスでの追加権限の取得を禁止するモード (prctl NO_NEW_PRIVS) が設定で有効になっていない場合、firejail はユーザーをダミー環境に接続し、init プロセス (PID 1) のユーザー名前空間設定を適用しようとします。

その結果、「firejail -join」経由で接続されたプロセスは、ユーザーの元のユーザー ID 名前空間に変更されない特権を持つことになりますが、攻撃者によって完全に制御されている別のマウント ポイント空間に置かれることになります。 攻撃者は、作成したマウント ポイント スペースで setuid-root プログラムを実行することもできます。これにより、たとえば、ファイル階層内の /etc/sudoers 設定や PAM パラメータを変更したり、sudo またはコマンドを使用して root 権限でコマンドを実行したりできるようになります。 suユーティリティ。

出所: オープンネット.ru

コメントを追加します