server_top


2004年04月02日

libsafeによるBuffer Overflow防止

libsafeの入手とインストール
Avaya LabsからRPM版ををダウンロードしてインストール。

http://www.research.avayalabs.com/project/libsafe/src/libsafe-2.0-16.i386.rpm

# rpm -ivh libsafe-2.0-16.i386.rpm
libsafe ##################################################
Adding libsafe to ld.so.preload for system wide protection
/etc/ld.so.preload が以下のようになっているか確認

[/etc/ld.so.preload]
/lib/libsafe.so.2

libsafeの動作確認
まずは ldd で、"libsafe.so.2" が最初に読み込まれているか確認します。

$ ldd /bin/ls
/lib/libsafe.so.2 => /lib/libsafe.so.2 (0x40017000)
libtermcap.so.2 => /lib/libtermcap.so.2 (0x40025000)
libc.so.6 => /lib/libc.so.6 (0x40029000)
libdl.so.2 => /lib/libdl.so.2 (0x40155000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
次に、ディレクトリ /usr/doc/libsafe-2.0/exploits/ 以下に、バッファオーバーフローのサンプルプログラムがありますので実行してみます。

$ ./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... [Return]
Libsafe version 2.0.16
Detected an attempt to write across stack boundary.
Terminating /usr/doc/libsafe-2.0/exploits/t1.
uid=0 euid=0 pid=1935
Call stack:
0x40018439
0x4001853a
0x80485bc
0x40041ffa
Overflow caused by strcpy()
強制終了
強制終了した場合、/var/log/secure に記録されます。

# tail /var/log/secure
May 19 16:31:12 server libsafe.so[1953]: 2.0.16
May 19 16:31:12 server libsafe.so[1953]: Detected an attempt to write across stack boundary.
May 19 16:31:12 server libsafe.so[1953]: Terminating /usr/doc/libsafe-2.0/exploits/t1.
May 19 16:31:12 server libsafe.so[1953]: uid=0 euid=0 pid=1953
May 19 16:31:12 server libsafe.so[1953]: Call stack:
May 19 16:31:12 server libsafe.so[1953]: 0x40018439
May 19 16:31:12 server libsafe.so[1953]: 0x4001853a
May 19 16:31:12 server libsafe.so[1953]: 0x80485bc
May 19 16:31:12 server libsafe.so[1953]: 0x40041ffa
May 19 16:31:12 server libsafe.so[1953]: Overflow caused by strcpy()

blank_space
投稿者 たけのうち : 2004年04月02日 00:47 | トラックバック
コメント
blank_space
コメントする









名前、アドレスを登録しますか?






blank_space
Trackback
blank_space