バッファ・オーパーフロー対策(Exec-Shield)

■ FC6 / Fedora7 / Fedora8 / Fedora9
Exec-Shieldを有効にして、バッファ・オーパーフロー攻撃をブロックする。
■ Exec-Shieldの設定

現状確認
[root@server ~]# cat /proc/sys/kernel/exec-shield
1
Exec-Shieldを有効にする。
[root@server ~]# echo 2 > /proc/sys/kernel/exec-shield
再確認
[root@server ~]# cat /proc/sys/kernel/exec-shield
2
起動時に、有効にする。
[root@server ~]# vi /etc/rc.d/rc.local
echo 2 > /proc/sys/kernel/exec-shield    ← 追加

■ Exec-Shieldの動作確認

[root@server ~]# wget http://pubs.research.avayalabs.com/src/libsafe-2.0-16.i386.rpm
--20:09:05--  http://pubs.research.avayalabs.com/src/libsafe-2.0-16.i386.rpm
=> `libsafe-2.0-16.i386.rpm'
pubs.research.avayalabs.com をDNSに問いあわせています... 198.152.240.29
pubs.research.avayalabs.com|198.152.240.29|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 374,371 (366K) [text/plain]
100%[====================================>] 374,371      120.19K/s    ETA 00:00
20:09:09 (119.99 KB/s) - `libsafe-2.0-16.i386.rpm' を保存しました [374371/374371]
[root@server ~]# rpm -ivh libsafe-2.0-16.i386.rpm  ← libsafeのインストール
準備中...                   ########################################### [100%]
1:libsafe                ########################################### [100%]
Adding libsafe to ld.so.preload for system wide protection
[root@server ~]# cp /usr/doc/libsafe-2.0/exploits/t1 ./  ← 攻撃ツールをコピー
[root@server ~]# rpm -e libsafe  ← libsafeのアンインストール
Removing libsafe from /etc/ld.so.preload (if exists)
[root@server ~]# ./t1  ← 攻撃ツールの実行
This program tries to use strcpy() to overflow the buffer.
If you get a /bin/sh prompt, then the exploit has worked.
Press any key to continue...abc;  ← 適当に入力
セグメンテーション違反です  ← バッファオーバーフローがブロックされた
[root@server ~]# rm ./t1  ← 攻撃ツールを削除
rm: remove 通常ファイル `./t1'? y