Wayland のショートカット マネージャーである swhkd の脆弱性

swhkd (Simple Wayland HotKey Daemon) で、一時ファイル、コマンド ライン パラメータ、および Unix ソケットの誤った動作に起因する一連の脆弱性が確認されました。 このプログラムは Rust で書かれており、Wayland プロトコル (X11 ベースの環境で使用される sxhkd プロセスの構成ファイル互換性のある類似物) に基づく環境でホットキーの押下を処理します。

このパッケージには、ホットキー アクションを実行する非特権 swhks プロセスと、root として実行され uinput API レベルで入力デバイスと対話するバックグラウンド swhkd プロセスが含まれています。 Unix ソケットは、swhks と swhkd の間の対話を組織するために使用されます。 Polkit ルールを使用すると、ローカル ユーザーは /usr/bin/swhkd プロセスを root として実行し、任意のパラメータをそれに渡すことができます。

特定された脆弱性:

  • CVE-2022-27815 – プロセス PID を予測可能な名前のファイルに保存し、他のユーザーが書き込み可能なディレクトリ (/tmp/swhkd.pid) に保存します。 どのユーザーでもファイル /tmp/swhkd.pid を作成し、そこに既存のプロセスの pid を入れることができます。これにより、swhkd が起動できなくなります。 /tmp でのシンボリック リンクの作成に対する保護がない場合、この脆弱性を利用して、任意のシステム ディレクトリでファイルを作成または上書きしたり (PID がファイルに書き込まれます)、システム上の任意のファイルの内容を判別したり (swhkd がPID ファイルの内容全体を標準出力に出力します)。 リリースされた修正では、PID ファイルが /run ディレクトリではなく、/etc ディレクトリ (/etc/swhkd/runtime/swhkd_{uid}.pid) に移動されたことに注目してください。このディレクトリには、PID ファイルも属していません。
  • CVE-2022-27814 – 構成ファイルの指定に使用される「-c」コマンドライン オプションを操作すると、システム上の任意のファイルの存在を確認できます。 たとえば、/root/.somefile を確認するには、「pkexec /usr/bin/swhkd -d -c /root/.somefile」を実行します。ファイルが見つからない場合は、「/root/.somefile が存在しません」というエラーが表示されます。 ”と表示されます。 最初の脆弱性の場合と同様、問題の解決は不可解です。問題の解決は、結局のところ、外部ユーティリティ「cat」('Command::new("/bin/cat")).arg(path) が実行されるという事実に帰着します。設定ファイルを読み取るために起動されます。output()')。
  • CVE-2022-27819 – この問題は「-c」オプションの使用にも関連しており、これにより、ファイルのサイズとタイプをチェックせずに構成ファイル全体がロードおよび解析されます。 たとえば、空きメモリを使い果たし、誤った I/O を作成してサービス拒否を引き起こすには、起動時にブロック デバイスを指定する (「pkexec /usr/bin/swhkd -d -c /dev/sda」) か、または無限のデータ ストリームを生成するキャラクター デバイス。 この問題は、ファイルを開く前に権限をリセットすることで解決されましたが、ユーザー ID (UID) のみがリセットされ、グループ ID (GID) は同じままであるため、修正は完全ではありませんでした。
  • CVE-2022-27818 – Unix ソケットは、書き込み可能なディレクトリに作成された /tmp/swhkd.sock ファイルを使用して作成され、最初の脆弱性と同様の問題が発生します (どのユーザーでも /tmp/swhkd.sock を作成し、生成または傍受できる可能性があります)キー押下イベント)。
  • CVE-2022-27817 - 入力イベントはすべてのデバイスおよびすべてのセッションから受け入れられます。つまり、 別の Wayland セッションまたはコンソールのユーザーは、他のユーザーがホットキーを押したときにイベントを傍受できます。
  • CVE-2022-27816 swhks プロセスは、swhkd と同様に、書き込み可能な /tmp ディレクトリ内の PID ファイル /tmp/swhks.pid を使用します。 この問題は最初の脆弱性と似ていますが、swhks は特権のないユーザーで実行されるため、それほど危険ではありません。

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

コメントを追加します