用語集の記事
ARTICLEバッファオーバーフロー
読み:バッファオーバーフロー
英語名:buffer over-flow
バッファオーバーフローとは、プログラムで用意してあるバッファの大きさを超えるデータが送り込まれ、データが溢れることである。
また、データを溢れさせることで、システムに誤動作を起こしたり、悪意のあるプログラムを実行することを指す。ウイルスを混入したり、システムに侵入してファイルを削除したり、情報を盗んだりすることも可能である。
別名バッファオーバーランとも呼ぶ。様々なアプリケーションソフトに共通する代表的なセキュリティホールの一つである。最も単純なケースでは、オーバーフローにより、そのバッファを使用するアプリケーションをクラッシュさせ、サービス拒否(DoS)を引き起こす。このような攻撃をDoS攻撃と呼ぶ。しかし、攻撃はそれだけに留まらず、攻撃者は任意の攻撃コードを実行させる場合が多い。
そもそもバッファとは、プログラムが受け取ったデータを格納するために確保する一時的なメモリー領域のことである。プログラムはあらかじめ決められた固定サイズのバッファを用意して、そこに受け取ったデータを書き込む。
例えば、コンピュータAのあるプログラムが利用できる全体のバッファが10だとする。そのプログラムが、コンピュータBとの通信の際に確保したバッファの量が2だとする。この場合、コンピュータBがコンピュータAに対して10のデータを送った場合、コンピュータAのプログラムはバッファが2しかないので、一度に10を受け取らず、2ずつ受け取るというのが正しい動作である。
しかし、10のデータを全て受け取ってしまい、確保した領域である2以外の8のデータも、別領域のバッファに書き込んでしまう現象が発生してしまう。この結果、プログラムは正常に動作しなくなったり、フリーズしてしまったりすることになる。また、悪質な他のプログラムが実行されるといった問題が発生する。
バッファーオーバーフローの対策として、プログラムは受け取ったデータがバッファのサイズを超えないように、データの長さをチェックすべきである。バッファオーバーフローによる被害を抑えるには、セキュリティホール関連の情報を頻繁にチェックし、ソフトウエアメーカー等から提供される修正プログラムをなるべく速やかに適用することが重要である。