OpenSSH の forwarded ssh-agent の脆弱性 CVE-2023-38408 が FIX:RCE にいたる恐れ

A flaw in OpenSSH forwarded ssh-agent allows remote code execution

2023/07/24 SecurityAffairs — Qualys Threat Research Unit (TRU) の研究者たちがが、OpenSSH の forwarded ssh-agent に存在するリモートコード実行の脆弱性を発見した。OpenSSH (Open Secure Shell) は、ネットワーク上で安全な暗号化通信を提供する、オープンソースのツール/ユーティリティのセットである。つまり、SSH (Secure Shell) プロトコルの実装として広く使われており、インターネットなどの安全でないネットワーク上で、他のコンピューターやサーバとの安全なリモート接続を、ユーザーは確立できることになる。


この脆弱性 CVE-2023-38408 にはパッチが適用されているが、脆弱な OpenSSH の転送された ssh-agent 上で、リモートの攻撃者に任意のコマンドを許す可能性がある。OpenSSH の forwarded ssh-agent は広く使われているため、この問題には直ちに対処する必要があると、Qualys Research Unit は警告している。

SSH 公開鍵認証用の秘密鍵をキャッシュする ssh-agent は、 パスフレーズを定期的に入力する必要性を減らしている。このプログラムは、ログイン・セッションなどの開始時に鍵をメモリに保存る。したがって、このプログラムにより、パスフレーズを再度入力することなく、サーバへのリモートログインが可能となる。

Qualys のセキュリティ研究者たちは、「この脆弱性の悪用に成功したリモートの攻撃者は、脆弱な OpenSSH 転送 ssh-agent 上で任意のコマンドを実行できるようになる。我々は、Ubuntu Desktop 22.04/21.10 上で PoC エクスプロイトを開発し、この脆弱性を独自に検証できた。他の Linux ディストリビューションにも脆弱性があり、悪用が可能だと思われる。Qualys の調査チームは、この脆弱性を確認した直後に、ベンダーである OpenSSH に報告し、協調して脆弱性を公表した」と述べている。

この脆弱性は、OpenSSH 9.3p2 以前の、すべてのバージョンに影響する。

なお、脆弱性が悪用されるのは、脆弱なバージョンを実行しているシステムに特定のライブラリがインストールされ、攻撃者が制御するシステムへ向けて、SSH 認証エージェントが転送された場合のみとなる。

研究者たちは、以下のように述べている:

“/usr/lib” にある全ての共有ライブラリは、公式のディストリビューション・パッケージから提供されており、ssh-agent が共有ライブラリに対して dlopen() および dlclose() 以外の操作を行うことは、一般的ではない。したがって、安全に見えるが、多くの共有ライブラリは dlopen() および dlclose() が実行されたときに副作用を持つため、ssh-agent のようなセキュリティに敏感なプログラムでロードおよびアンロードするのは安全ではない。

たとえば、多くの共有ライブラリには constructor と destructor の関数が含まれるため、それぞれが dlopen() と dlclose() により自動的に実行される。驚くべきことに、公式ディストリビューション・パッケージの共有ライブラリに存在する、4つの一般的な副作用を連鎖させることで、この非常に限定的なプリミティブ (/usr/lib からの共有ライブラリの dlopen() と dlclose()) を、(ASLR/PIE/NX にもかかわらず) ssh-agent における信頼性の高いワンショットのリモートコード実行に変換できた。

——

以下は、この脆弱性の公開スケジュールである:

  • 2023-07-06: アドバイザリ草案と初期パッチが OpenSSH に送られた。
  • 2023-07-07: OpenSSH が改良パッチを送付。
  • 2023-07-09: パッチのフィードバックが OpenSSH に送られた。
  • 2023-07-11: OpenSSH から最終パッチを受け取る。
  • 2023-07-14: OpenSSH は 7月19日にセキュリティのみのリリースを計画した。
  • 2023-07-19: 協調リリース。

なお、2023年2月に、OpenSSH のメンテナたちは、バージョン 9.2 をリリースし、 多くのセキュリティ脆弱性に対処した。そこには、 サーバ (sshd) のメモリの安全性に関する、脆弱 CVE-2023-25136 も含まれる。