Bleeping Computerは3月28日(米国時間)、「Decade-old Linux ‘wall’ bug helps make fake SUDO prompts, steal passwords」において、Linuxの「wall」コマンドから脆弱性が発見されたとして、注意を喚起した。この脆弱性を悪用することで、複数のユーザーが端末に接続する環境において、偽の「sudo」コマンドのプロンプトを表示して管理者パスワードを窃取できるリスクがある。

  • Decade-old Linux ‘wall’ bug helps make fake SUDO prompts、steal passwords

    Decade-old Linux ‘wall’ bug helps make fake SUDO prompts, steal passwords

脆弱性「CVE-2024-28085」の概要

wallコマンドはLinuxにログインしているすべてのユーザーにメッセージを送信するコマンド。システムを再起動する際などに残り時間や警告を通知する目的で使用される。

今回発見された脆弱性は「CVE-2024-28085」として追跡されており、発見者のSkyler Ferrante氏により「WallEscape」と名付けられている。Skyler Ferrante氏は、脆弱性の詳細と概念実証(PoC: Proof of Concept)コードを「skyler-ferrante/CVE-2024-28085: WallEscape vulnerability in util-linux」にて公開している。

Skyler Ferrante氏によると、この概念実証コードを動作させるには次の条件を満たす必要があるという。

  • 攻撃対象の環境にログインできる
  • wallコマンドにsetgidが設定されている
  • mesg(使用中の端末への書き込み許可属性)がy(書き込みを許可)に設定されている
  • 誤ったコマンドの入力が記録され、コマンド履歴を閲覧できる。これは「command-not-found」コマンドが存在する環境で機能する

Ubuntu 22.04はデフォルトでこれらすべての条件を満たすとされる。具体的な攻撃手順は次のとおり。

  1. 「/proc/${PID}/cmdline」を探索し、すべてのプロセスのコマンドライン収集を開始する
  2. ユーザーの「sudo」コマンドの実行を待つ
  3. sudoによって開始されるコマンドの実行を待つ
  4. 即座にwallコマンドを使用して偽のsudoのパスワード入力プロンプトを送信する
  5. パスワードの入力を間違えたと勘違いしたユーザーがパスワードを入力する
  6. パスワードと同一名称のコマンドが存在しない場合、「command-not-found」が起動され、そのコマンドラインオプションとしてパスワードが記録される
  7. 最初に起動したコマンドライン収集プロセスにパスワードを窃取される

脆弱性「CVE-2024-28085」の悪用を回避する対策

この脆弱性はパッケージ「linux-utils」のv2.40にて修正されている。Linuxを運用している管理者は、影響を確認してパッケージをアップデートすることが推奨されている。パッケージの更新ができない場合は、軽減策としてwallコマンドのsetgidを削除するか、またはmesgコマンドを使用して端末への書き込み許可属性をn(書き込み禁止)に設定することが望まれている。