バッファオーバーフローへの対策 (4) - ライブラリ置換 (つづき)
|
|
BOWall - Windows NT 用。 [lw]strcpy*(), [w]strcat*(), [l]strcat*(), wcscat(), [w]strncat(), memcpy(), memmove(), sprintf(), swprintf(), [w]scanf(), [f]gets(), [f]getws() を隔離された環境で実行し、関数実行前後のリターンアドレスの状態を検査する。変化があればバッファオーバーフローがあったと判断。 この機構を追加するため、.DLL ファイルを直接置換する。 .DLL ひとつづつに対して作業を行う必要がある。
問題点 - インストールがめんどう、というか、システムファイルを書きかえる度胸が必要。 Windows 2000 の場合、DLL 地獄防止のためのシステムファイルプロテクション機能があるため、本手法のような .DLL 直接置換はできないと思う。