一つ目の問題は、ld.so が環境変数を扱う際のものです。setuid アプリケー ションに安全な環境を提供するために、ld.so は、アプリケーションの実行に 影響を与える LD_PRELOAD や LD_LIBRARY_PATH などの特定の環境変数を削除 します。残念ながら、ある条件下において ld.so がそれらを削除しないよう になるようなバグがありました。このバグは、setuid アプリケーションが権 限を落とさず、また自力で環境変数削除することなく他のバイナリを実行する 場合に影響を与えます。
もう一つの問題は、glibc でのロケールの扱いです。glibc は、LANG and LC_* 環境変数に `/' などの文字が含まれてているかどうかを確認します。こ れは、何者かがプログラムに任意のファイルを読ませるように仕組んでいない かを確認するためです。残念ながら、これらのチェックには論理エラーがあり、 setuid アプリケーションに対し、ローカル化のセッティングのために任意の ファイルを使用させることができます。これを利用し、アプリケーションに任 意のコードを実行させることが可能となってしまいます。
これらの問題は、Debian GNU/Linux 2.1 (slink) 用のバージョン 2.0.7.19981211-6.3 および Debian GNU/Linux 2.2 (potato) 用の バージョ ン 2.1.3-13 では修正されています。glibc パッケージを早急にアップデート することをお勧めします。