バッファ・オーバフロー攻撃
出典: くみこみックス
バッファ・オーバフロー攻撃(バッファ・オーバフローこうげき)
プログラムの入力バッファへのデータ書き込み時のチェックの不備をついてバッファをオーバフローさせる攻撃.インターネットに公開しているサーバに対して,サーバの管理者権限の取得やサービス不能(DoS)攻撃を意図して行われる.最近の代表的なクラッキング手法の一つで,CodeRedはその典型例.プログラミング時に想定していない非常に長い文字列が渡されたとき,入力バッファ領域の管理ロジックが甘いと,そのままバッファ領域に書き込んでしまう.すると,後に続くデータ領域を上書きして,プログラムの暴走やメモリ保護違反を生じる.例えば,C言語のgets()だけでバッファにデータを取り込むと,この問題を引き起こす.厳密な入出力チェックのロジックを組み込んでテストすれば回避できる初歩的なミスと言える.バッファ領域をスタティック領域ではなく一般のローカル変数としてスタック上に確保していれば,関数の戻り先アドレスなど,スタック上に積まれたデータを上書きしてしまうこともある.この戻り先アドレスに相当する位置にバッファ・オーバフローで任意のコードを指し示すアドレスを上書きすれば,どのようなプログラムへも制御を移すことができる.バッファ・オーバフローを起こしたプログラムが特権プロセスのコンテキストで動作していれば,このコードはシステム管理者権限で動作する.すなわち,システムを完全に制御することが可能になるわけである.
【出典】Interface編集部 編;組み込み技術用語集,Interface 2007年8月号 別冊付録,CQ出版社,2007年8月.