バッファオーバーフロー 【buffer overflow】 バッファオーバーラン / buffer overrun / BOF / BOR

概要

バッファオーバーフロー(buffer overflow)とは、コンピュータプログラムの動作異常の一つで、あるデータの受け取りや保管のために用意された領域(バッファ)に想定以上の長さのデータを書き込んでしまい、溢れたデータが隣接する領域を不正に書き換えてしまうこと。また、溢れたデータによって引き起こされる予期しない動作。

プログラムがメモリに書き込もうとするデータ長や領域の終端のチェックを怠ると、あらかじめ確保した領域の端を超えて隣接する別のデータのための領域を溢れたデータ断片で上書きしてしまう。上書きされた領域は本来想定されていない内容に変更されてしまうため、プログラムが異常終了する等の悪影響が及ぶ。ネットワークを通じた外部からの攻撃に悪用できるため、典型的なソフトウェア脆弱性の一つとして広く知られる。

C言語やC++言語など、ポインタのような低レベル(ハードウェア寄り)の操作が可能で言語仕様レベルでの安全対策などがあまり無いプログラミング言語のプログラムに発生しやすい。いわゆるスクリプト言語のような開発者に直接的なメモリ操作をさせない仕様の言語では(言語処理系自体のバグを除いて)発生しにくい。

これまでに数多くのソフトウェアにバッファオーバーフローの不具合が発見され、修正プログラムが発行されている。抜本的な対策としてはプログラム中にバッファを溢れさせるコードを作成しないようにするしかなく、既存の不具合は発見次第修正するしかない。x86系プロセッサのXDビットNXビット)のようにCPUやOSなどのレベルで対策する手法もいくつか考案されたが、既存の不具合を完全に無効化しながら実行に支障がないようにすることは難しい。

バッファオーバーフロー攻撃 (バッファオーバーラン攻撃)

ソフトウェアに存在するバッファオーバーフローを引き起こすコードを悪用し、外部からわざと想定より長いデータを与えることでプログラムを異常終了させたり、攻撃用のコードを送り込んで実行させたりする攻撃手法があり、バッファオーバーフロー攻撃(バッファオーバーラン攻撃)と呼ばれる。

攻撃者が任意の攻撃を実行できる手法もあり、コンピュータウイルス感染に悪用されたり、最悪の場合は管理者権限を乗っ取られて外部から遠隔操作され、重要なデータの漏洩、改竄、削除や、外部の別のシステムへの攻撃の踏み台にされることもある。

(2018.5.28更新)

他の辞典による解説 (外部サイト)

試験出題履歴

ITパスポート試験 : 平29春 問80 平26秋 問59
この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。