Xmonisdn は、ISDN 接続の状態を示す X アプレットです。
そのアプレット上でマウスの左あるいは右ボタンをクリックすると、
二つのスクリプトを実行するように設定することができます。
Xmonisdn は root に setuid されてインストールされているために、
そのスクリプトはデフォルトルートの追加や削除が可能です。
しかし、そのスクリプトの所有者が root であることと、
他のグループや利用者から書き込めないことをチェックしている間に、
そのスクリプトは system() ライブラリ関数経由で実行されてしまいます。
この関数は、そのスクリプトを実行するシェルを起動させるのです。
つまり、このスクリプトは IFS や PATH の操作を通した攻撃に対して無防備なのです。
ただ、ISDN システムがネットワーク経路の操作をせずに
ダイヤル発信を防ぐ方法を提供するようになったので、
root への setuid はもはや必要ありません。
このことは、/dev/isdnctrl0 と /dev/isdninfo
にアクセスできるユーザなら誰でもできます。
Debian システムで、これらは dialout
グループが読み書きできるようになっていますので、
xmonisdn が dialout グループに所属する誰かによって実行されれば、
必要になる isdnctrl コマンドも実行できます。