OpenSSH にリモートから悪用できる脆弱性が検出されました。

脆弱性

これらの欠陥が悪用されると、攻撃者は機密情報に不正にアクセスしたり、一般的に問題を引き起こしたりする可能性があります

についての情報が公開されました で検出された脆弱性 OpenSSHの実装 ssh-agent これにより、ssh 接続の相手側のホストへの ssh-agent アクセスを提供したシステム上でコードを実行できるようになります。

この脆弱性はすでに CVE-2023-38408 としてカタログ化されており、 リモートから悪用可能であるという点で注目に値します。 攻撃 ユーザーが攻撃者によって制御されているシステムに ssh 経由で接続した場合にのみ可能 「-A」オプションまたは構成ファイル内の ForwardAgent 設定を使用して、ssh 経由での ssh-agent へのソケット転送を有効にします。

公開鍵認証の秘密鍵をキャッシュするために使用される ssh-agent プロセスは、認証データを他のホストに保存しないように、ssh 接続のリモート側がローカル システムの ssh-agent にアクセスできるようにするオプションの転送モードをサポートします。

脆弱性 これは、PKCS #11 モジュールのロードをサポートする ssh-agent の存在に関連しています。 これは、特に、別のシステムに転送された Unix ソケットを介して ssh-agent を開始できます。

この機能 攻撃者がホストを制御することを許可します 接続されているもの 被害者のローカル システム上の /usr/lib* ディレクトリから共有ライブラリを即座にロードおよびアンロードします。 別の ssh-pkcs11-helper プロセスで。 この機能は、デフォルトで有効になっている ENABLE_PKCS11 オプションを使用してコンパイルされた ssh-agent に表示されます。

当初、共有ライブラリをロードする機能は脅威とは考えられていませんでした セキュリティのため、ロードは、ディストリビューションによって正式に提供されるライブラリを含む /usr/lib* システム ディレクトリからのみ可能であり、これらのライブラリを使用した操作は、ライブラリの関数を呼び出すことなく、dlopen() 関数と dlclose() 関数の呼び出しに限定されるためです。

しかし、 一部のライブラリにコンストラクター関数とデストロイヤー関数があることを見落としていました これらは、dlopen() および dlclose() 操作を実行するときに自動的に呼び出されます。 必要なライブラリを選択し、リモート コードの実行を整理するには、これで十分な場合があります。

攻撃力が発揮されるのは、 のデフォルト環境 Ubuntu、 他のディストリビューションではテストされていないため、「universe」リポジトリから XNUMX つのパッケージもインストールされます (ただし、一部のディストリビューションではデフォルト構成で攻撃できると想定されています)。

攻撃には 8 つの亜種が提案されました。

たとえば、実用的なエクスプロイトを作成するための有望なオプションの XNUMX つは、libgnatcoll_postgres.so ライブラリが dlopen() の実行時に、sigaltstack() 関数を呼び出すことによってシグナル ハンドラーで使用される別のシグナル スタックを登録し、dlclose() の呼び出し後にメモリを割り当てますが、シグナル スタックのログ記録 (SS_DISABLE) は無効にしないという事実に基づいています。

脆弱性を悪用するには、 次の操作が実行されます:

  • mmap のレイアウトを変更するために、さまざまなライブラリがロードされます。
  • libgnatcoll_postgres.so ライブラリがロードされ、代替シグナル スタックが登録され、munmap() が実行されます。
  • ライブラリは、mmap のレイアウトを変更し、別の信号スタックを別の書き込みモード メモリ領域 (ストリーム スタックや .data/.bss セグメントなど) に置き換えるためにロードされます。
  • SA_ONSTACK シグナル ハンドラーを登録するライブラリをロードしますが、dlclose() が呼び出されたときに munmap() で登録しません。
  • シグナルを受信して​​ SA_ONSTACK シグナル ハンドラーを呼び出すライブラリがロードされると、置き換えられたメモリ領域がシグナル ハンドラーからのスタック フレームによって上書きされます。
  • ライブラリは、置き換えられたメモリ領域の内容を具体的に上書きするためにロードされます。

脆弱性に関しては、これは言及する価値があります。 OpenSSH 9.3p2 リリースで修正されました 最近出版された。 新しいバージョンでは、PKCS#11 モジュールをロードするリクエストはデフォルトで無効になっています。 セキュリティの回避策として、ssh-agent の起動時に空の PKCS#11/FIDO ホワイトリスト (ssh-agent -P ») を指定するか、ホワイトリストで許可されるライブラリを明示的に定義できます。

最後に、あなたがそれについてもっと知ることができることに興味があるなら、あなたはの詳細を調べることができます 次のリンク。