I. 説明
System Vを出所とするloginの実装には、プロセスに渡す環境変数
などの引数をユーザが指定できるようになっているものがいくつもある。
こうした引数を格納するのにはバッファアレイが利用されているが、受け取った
引数の個数をチェックするところに欠陥が存在する。この欠陥のために
バッファアレイがオーバフローすることがある。
たいていのシステムでは、loginはsuidを設定されてはいない。
このため、loginは、loginを呼び出したユーザとして動作する。
しかし、telnetdやrlogindのような、ユーザの権限よりも強力な権限レベルで
動作するアプリケーションが
loginを呼び出した場合、ユーザはこの脆弱性を悪用して、その
プログラムの動作権限レベルを奪取することができてしまう。telnetdやrlogind
の場合は、root権限を奪取できることになる。
in.telnetdならびにin.rlogindはネットワークを介して利用できるもので
あるから、あるシステムに対してまったくアクセス権限がないリモートの
攻撃者でも、この脆弱性を悪用して、root権限を奪取できるであろう。
loginを呼び出すプログラムにUSER_Aのsuid (またはsgid)が設定されて
いた場合、この脆弱性を悪用してUSER_Aの権限レベルを奪取できることになる。
この脆弱性への攻撃は既に行なわれたことがあり、今後、増えるであろう。