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

プログラムがメモリに書き込もうとするデータ長や領域の終端のチェックを怠ると、あらかじめ確保した領域の端を超えて隣接する別のデータのための領域を溢れたデータ断片で上書きしてしまう。上書きされた領域は本来想定されていない内容に変更されてしまうため、プログラムが異常終了する等の悪影響が及ぶ。ネットワークを通じた外部からの攻撃に悪用できるため、典型的なソフトウェア脆弱性の一つとして広く知られる。
C言語やC++言語など、ポインタのような低レベル(ハードウェア寄り)の操作が可能で言語仕様レベルでの安全対策などがあまり無いプログラミング言語のプログラムに発生しやすい。いわゆるスクリプト言語のような開発者に直接的なメモリ操作をさせない仕様の言語では(言語処理系自体のバグを除いて)発生しにくい。
これまでに数多くのソフトウェアにバッファオーバーフローの不具合が発見され、修正プログラムが発行されている。抜本的な対策としてはプログラム中にバッファを溢れさせるコードを作成しないようにするしかなく、既存の不具合は発見次第修正するしかない。x86系プロセッサのXDビット(NXビット)のようにCPUやOSなどのレベルで対策する手法もいくつか考案されたが、既存の不具合を完全に無効化しながら実行に支障がないようにすることは難しい。
バッファオーバーフロー攻撃 (バッファオーバーラン攻撃)
ソフトウェアに存在するバッファオーバーフローを引き起こすコードを悪用し、外部からわざと想定より長いデータを与えることでプログラムを異常終了させたり、攻撃用のコードを送り込んで実行させたりする攻撃手法があり、バッファオーバーフロー攻撃(バッファオーバーラン攻撃)と呼ばれる。
攻撃者が任意の攻撃を実行できる手法もあり、コンピュータウイルス感染に悪用されたり、最悪の場合は管理者権限を乗っ取られて外部から遠隔操作され、重要なデータの漏洩、改竄、削除や、外部の別のシステムへの攻撃の踏み台にされることもある。
関連用語
他の用語辞典による「バッファオーバーフロー」の解説 (外部サイト)
- ウィキペディア「バッファオーバーラン」
- 日経 xTECH Networkキーワード「バッファーオーバーフロー」
- 日経 xTECH IT基本用語辞典「バッファオーバーフロー」
- SOMPO CYBER SECURITY サイバーセキュリティ用語集「バッファオーバーフロー」
- @IT セキュリティ用語事典「バッファオーバーフロー」
- @IT 5分で分かるシリーズ「バッファオーバーフロー」
- Insider's Computer Dictionary「バッファ・オーバーフロー」
- Fortinet サイバー用語集「バッファオーバーフロー」
- Trellix セキュリティ用語「バッファオーバーフロー」
- F5 用語集「バッファオーバーフロー」