ld.so OpenBSD の脆弱性

ダイナミックローダー ld.soOpenBSD に含まれている、特定の条件下で、 SUID/SGID- アプリケーションは LD_LIBRARY_PATH 環境変数を残すため、昇格された特権で実行されているプロセスのコンテキストでサードパーティのコードを読み込むことができます。 脆弱性を修正するパッチはリリースで利用可能です 6.5 и 6.6。 バイナリパッチ(システムパッチ) amd64、i386、および arm64 プラットフォーム用のバージョンはすでに製品化されており、このニュースが公開されるまでにダウンロードできるようになるはずです。

問題の本質: 動作中、ld.so はまず環境から LD_LIBRARY_PATH 変数の値を抽出し、_dl_split_path() 関数を使用してそれを文字列の配列 (ディレクトリへのパス) に変換します。 現在のプロセスが SUID/SGID アプリケーションによって開始されたことが後で判明した場合、作成された配列と、実際には LD_LIBRARY_PATH 変数がクリアされます。 同時に、_dl_split_path() がメモリ不足になった場合 (これは環境変数のサイズに明示的な 256 KB 制限があるため困難ですが、理論的には可能です)、_dl_libpath 変数は値 NULL を受け取り、その後のチェックが行われます。この変数の値は、_dl_unsetenv("LD_LIBRARY_PATH") への呼び出しを強制的にスキップします。

専門家が発見した脆弱性 Qualys、 としても 以前に開示されたいくつかの 問題。 脆弱性を特定したセキュリティ研究者は、問題がいかに迅速に解決されたかに注目しました。OpenBSD プロジェクトが通知を受け取ってから XNUMX 時間以内にパッチが準備され、アップデートがリリースされました。

追加: 問題には番号が割り当てられています CVE-2019-19726。 oss-security メーリング リストで作成 公式発表、OpenBSD 6.6、6.5、6.2、および 6.1 アーキテクチャで実行されるプロトタイプのエクスプロイトを含む
amd64 および i386 (このエクスプロイトは他のアーキテクチャにも適用できます)。
この問題はデフォルトのインストールでも悪用可能であり、権限のないローカル ユーザーが chpass または passwd suid ユーティリティの実行時にライブラリ置換を介して root としてコードを実行できるようになります。 動作に必要なメモリ不足状態を作り出すには、setrlimit を介して RLIMIT_DATA 制限を設定します。

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

コメントを追加します