いくつかの背景:
setuidビット:
実行可能ファイルのsetuidビットにより、任意のユーザーによって実行される実行可能ファイルは、実行可能ファイルの所有者によって実行されているかのように実行されます。したがって、rootが所有するプログラムにsetuidが設定されている場合、誰が実行しても、root権限で実行されます。もちろん、それほど単純ではありません。このウィキペディアの記事を参照するか、Unix環境でのStevenのプログラミングのコピーを入手してください。
コアダンプ:
コアダンプは、ファイルへのプログラムの作業メモリのダンプです。このウィキペディアの記事を参照してください。
suid_dumpable:
これは、上記のようにコアをsetuidプログラムからダンプできるかどうかを制御します。下記参照。これはカーネル調整パラメータであり、次のように変更できます。
sudo sysctl -w kernel.suid_dumpable=2
この調整可能パラメータについては、サワーコードのドキュメントで確認できます。インストールされている場合は、/usr/src/linux-source-2.6.27/Documentation/sysctl/のようなディレクトリにあります。この場合、以下の参照はそのディレクトリのfs.txtにあります。uname -a
コマンドを使用して、カーネルのバージョンを確認します。
重要な理由:
これはセキュリティリスクになる可能性があります。
つまり、コアダンプがあり、通常のユーザーがそれらを読み取ることができる場合、特権情報が見つかる可能性があります。プログラムがメモリに特権情報を持っていて、適切にダンプされ、ユーザーがダンプを読み取ることができる場合、その特権情報を見つける可能性があります。
参照:
This value can be used to query and set the core dump mode for setuid
or otherwise protected/tainted binaries. The modes are
0 - (default) - traditional behaviour. Any process which has changed
privilege levels or is execute only will not be dumped
1 - (debug) - all processes dump core when possible. The core dump is
owned by the current user and no security is applied. This is
intended for system debugging situations only.
2 - (suidsafe) - any binary which normally not be dumped is dumped
readable by root only. This allows the end user to remove
such a dump but not access it directly. For security reasons
core dumps in this mode will not overwrite one another or
other files. This mode is appropriate when adminstrators are
attempting to debug problems in a normal environment.