2011年5月23日月曜日

SUID SGID ビットのついたプログラムの調査

こんばんわ、Cです。

SUID,SGIDの付いたファイルの調査方法について。

システム内に侵入した攻撃者が、root権限を得る方法として、
SUID,SGID ビットの付けられているプログラムの脆弱性をつく方法がある。

それならSUIDとか付けなければいいかと思うのだが、
そうも行かないものなのだ。
確かに、不必要なSUIDはただ危険なだけなのだが、必要なSUIDもある。

1つ例を挙げると、「passwd」。
「passwd」にはSUIDが付けられている。
なぜかというと、一般ユーザがパスワードを変更するには、
ownerがrootのパスワードファイルを変更する必要がある。
そのため「passwd」をroot権限で実行しなければならないのだ。

SUIDの付いたプログラムに脆弱性が無ければ問題は無いのだが、
残念ながら、完全なプログラムを作成するというのは無理なものだ。

それに、すでにroot権限を奪取した攻撃者がSUIDの付いたプログラムを
紛れ込ませている可能性もある。そう、backdoor。

この扉になりうるファイルを調査して、把握しておく必要がある。

■調査スクリプト
#!/bin/sh
find / \( -perm -4000 -o -perm -2000 \) -type f > /var/log/sidlog.new
diff /var/log/sidlog.new /var/log/sidlog.old >> /var/log/sidlog
mv /var/log/sidlog.new /var/log/sidlog.old

上記スクリプトを1日1回くらいcronで転がしてやるといいだろう。

ちなみにこういうことをする場合はちゃんとログローテーションしないと
ログで溢れてgame over!

以上

0 件のコメント:

コメントを投稿