バッファオーバーフロー

読み方 : ばっふぁおーばーふろー

バッファオーバーフローとは

プログラムの不具合(バグ)の一種。CやC++言語で書いたプログラムで、プログラムが確保した主記憶の領域を越えて、データを入力した場合に生じる。この状態になると本来変更されるべきでない主記憶領域の値が書き替えられるため、プログラムは想定していない動作をする。バッファオーバーランとも呼ぶ。この現象を悪用して、ハッカーがパソコンやサーバーに不正なアクセスをしたり、ウイルスがパソコンやサーバーに感染したりすることがある。

C/C++のプログラムでは、データ入力を受け付ける際に固定長の「バッファ領域」を確保して、そこにデータを読み込むことが多い(Visual BasicやJavaなど他のプログラミング言語では、あまりそういうことをしない)。データの大きさがバッファ領域を越えていないかどうか検査するコードを書いておけば、バッファオーバーフローは防げる。だが面倒なので、プログラマはついつい怠りがちである。

ハッカーやウイルスはそこにつけ込む。バッファ領域に入りきらず、あふれ出したデータは、主記憶上にある「スタック領域」を書き替えてしまう場合がある。スタック領域には、ある処理が終了した場合の戻りアドレスが書かれており、ここが変更されると処理を実行する順番が変わってしまう。

出典:ITpro「今日のキーワード」(C)日経BP社

[2010年 1月 1日 公開]

大塚商会の法人向け通販サイト(たのめーる)のご紹介