他人の端末でエスケープシーケンスを置き換えられる脆弱性

util-linux パッケージで提供され、端末にメッセージを送信することを目的とした Wall ユーティリティで脆弱性 (CVE-2024-28085) が確認されました。このユーティリティにより、エスケープ シーケンスの操作を通じて他のユーザーの端末が攻撃される可能性があります。この問題は、wall ユーティリティが入力ストリームではエスケープ シーケンスをブロックするが、コマンド ライン引数ではブロックしないため、攻撃者が他のユーザーの端末でエスケープ シーケンスをエスケープできることが原因で発生します。

たとえば、「wall $(printf "\033[33mHI")」を実行すると、「HI」を黄色で印刷できます。画面上のポインタの移動、クリア、およびコンテンツの置換を可能にするエスケープ シーケンスを使用すると、別のユーザーの端末で sudo パスワード プロンプトを表示することをシミュレートできます。ユーザーがこのトリックに気付かずにパスワードを入力した場合、そのパスワードは存在しないコマンドとして入力履歴に表示されます (実際、ユーザーはコマンドではなくコマンドラインにパスワードを入力します)。 “\033[3A” // カーソルを 3 行上に移動します。 “\033[K” // 前の出力を削除します。 “[sudo] password for a_user:” // ダミーの sudo リクエストを表示します。 “\033[?25l” / / 入力を非表示にする背景色を設定します "\033[38;2;48;10;36m"

入力されたコマンドが見つからなかったという警告が発行されると、多くのディストリビューションでは /usr/lib/command-not-found ハンドラーが実行され、不足しているコマンドを含むパッケージを識別し、それがインストールできるかどうかに関するヒントが提供されます。 。問題は、command-not-found ハンドラーが起動されるときに、存在しないコマンドがコマンド ライン パラメーターとしてハンドラーに渡されることです。このハンドラーは、システム上のプロセスを表示するときに表示されます (たとえば、アンインストールされたユーティリティを実行しようとしたとき)。 「xsnow」、「/usr」はプロセスのリスト /lib/command-not-found - xsnow" に表示されます。したがって、攻撃者は実行中のプロセスを監視し(たとえば、予測された PID 番号の「/proc/$pid/cmdline」の発生を分析することによって)、被害者がコマンド ラインで入力したパスワードを特定することができます。

ユーザーが架空の sudo プロンプトに応答してパスワードを入力できるようにするためのトリックが提案されています。その本質は、プロセスのリストで sudo ユーティリティの実際の起動を追跡し、完了するまで待機することです。その直後に「壁」を越えて攻撃を行う。攻撃者はエスケープ シーケンスを操作することで、実際に sudo を実行した後のメッセージを偽のパスワード再入力プロンプトに置き換えることができます。被害者は、パスワードを入力したときに間違いを犯したと考え、もう一度パスワードを入力し、「command-not-found」ハンドラーの引数にパスワードが含まれていることを明らかにする可能性があります。

攻撃を成功させるには、「mesg」モードを「y」に設定する必要があります。これは、Ubuntu、Debian、および CentOS/RHEL ではデフォルトで設定されています。この攻撃は、gnome-terminal を使用したデフォルト構成の Ubuntu 22.04 で実証されています。 Debian では、「command-not-found」ハンドラーがディストリビューションでデフォルトで有効になっていないため、攻撃は困難です。また、CentOS/RHEL では、wall ユーティリティが setgid フラグなしでインストールされ、有効になっているため、攻撃は機能しません。他人の端末にアクセスすることはできません。 Windows ターミナルを使用する場合、攻撃はクリップボードの内容を変更するように変更される可能性があります。

この脆弱性は、2013 リリースで Wall コマンド ラインにメッセージを指定する機能が追加された後、2.24 年から util-linux パッケージに存在していますが、エスケープ シーケンスのクリーンアップが忘れられていました。この脆弱性の修正は、昨日のリリースの util-linux 2.40 に含まれています。 util-linux 2.39 のリリースでこの脆弱性を修正しようとしたときに、ロケールの操作による制御文字の置換を可能にする別の同様の脆弱性が確認されたことは注目に値します。

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

コメントを追加します