これは、Set-user-ID および set-group-ID アプリケーションのみのセキュリティ上の問題です。ユーザー自体として実行されているアプリケーションの場合、問題の操作はいずれにせよオペレーティング システムによって拒否されるため、脅威はありません。
次のシナリオを考えてみましょう: UNIX プログラムがrootset-user-id 経由で実行されているとします。プログラムは を使用accessして別のユーザーのファイル権限をチェックし、ファイルを として実行しますがroot、権限チェックが成功した場合のみです。プログラムが と呼ばれsecurerun、次のように実行するとします。
securerun myfile
攻撃者は、次のアルゴリズムを使用して、このセキュリティ ホールを悪用するプログラムを実行することができます。
xyzユーザーが実行権限を持つファイルを書き込む
- 2 つのスレッドを開始
Aし、B
- スレッド
Aは数ミリ秒待機し、実行cp norunning xyzして、攻撃者が実行したいファイルに置き換えxyzますが、そのための実行権限はありません。
- スレッド
B呼び出しsecurerun xyz
攻撃者がタイミングを合わせて運が良ければ、securerun古い の実行権限を確認できますが、ハッカーが実行するはずのないxyz新しいxyzのコピーが実行されます。norunningチェックと実行の間には短い時間枠があるため、攻撃者がループ内で何度も戦略を試みると、ある時点で幸運に恵まれることになります。