ダイナミックローダー
問題の本質: 動作中、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") への呼び出しを強制的にスキップします。
専門家が発見した脆弱性
追加: 問題には番号が割り当てられています
amd64 および i386 (このエクスプロイトは他のアーキテクチャにも適用できます)。
この問題はデフォルトのインストールでも悪用可能であり、権限のないローカル ユーザーが chpass または passwd suid ユーティリティの実行時にライブラリ置換を介して root としてコードを実行できるようになります。 動作に必要なメモリ不足状態を作り出すには、setrlimit を介して RLIMIT_DATA 制限を設定します。
出所: オープンネット.ru