バッファオーバーフローへの対策 (4) - ライブラリ置換
|
|
標準 C ライブラリ中の危険な関数 (strcpy() など) を、バッファオーバーフロー対策版に置換する。これにより、危険な関数によるバッファオーバーフローが発生してもコマンドは単に異常終了するようになる。 置換した関数についてしかバッファオーバーフロー対策できないのが欠点だが、十分な数の関数を置換することにより、ほとんど問題にならないはず。
libsafe - ベル研開発。Linux 用。 1.3 版では strcpy(), strcat(), getwd(), gets(), [vf]scanf(), realpath(), [v]sprintf() を置換。 shared library となっており、/etc/ld.so.preload に登録することにより、 suid を含む全てのコマンドにおいて上記関数を簡便に置換できる。 RedHat Linux, TurboLinux などにおいて標準バンドルされるようになるらしい。