サイバーセキュリティ・情報セキュリティの分野では、バッファオーバーフローはメモリ破壊系の脆弱性の一つとして知られ、攻撃者がバッファオーバーフロー脆弱性のあるプログラムに意図的に悪意のあるデータ(コード)を与えることにより、コンピュータの制御を乗っ取ってしまうことを可能にする。バッファオーバーフロー脆弱性を悪用した攻撃をバッファオーバーフロー攻撃という。バッファオーバーフローの具体例.簡単な例.電子メールアドレスを題材にした例.コンピュータプログラムを作るとき、固定長のバッファとよばれる領域を確保してそこにデータを保存するという手法がよく使われる。これがバッファオーバーフローである。仮にはみ出した部分にプログラムの動作上意味を持つデータがあれば、これを上書きして破壊することにより、プログラムはユーザの意図しない挙動を示すであろう。このようにバッファオーバーフローは、プログラムが用意したバッファの大きさを超えてデータを書き込んでしまうバグである。バッファオーバーフロー攻撃.情報セキュリティ・サイバーセキュリティにおいてバッファオーバーフロー攻撃は、バッファオーバーフローの脆弱性を利用した攻撃である。バッファオーバーフローの脆弱性は整数オーバーフロー、書式文字列バグ、などと同様、メモリ破壊系の脆弱性に相当する。古典的バッファオーバーフロー攻撃.スタックベースのバッファオーバーフロー攻撃.スタックベースのバッファオーバーフローについて説明するためにプロセスのメモリ利用方法を復習する。オペレーティングシステム(OS)は各ユーザプロセスに仮想アドレス空間を割り振り、WindowsやLinuxなどのOSでは上位のアドレスをカーネルが使うカーネル空間とし、残りをユーザプロセス自身が用いるユーザ空間とする。カーネル空間はユーザプロセスがアクセスする事はできず、通常のプログラミングでは意識する事はない。一方、ユーザ空間における仮想アドレスの最高位の箇所は関数のコールスタックを保存する(可変サイズの)スタック領域として用いられる。攻撃の基本的アイデア.戻りアドレスの値の予想.埋め込めるコード量が小さい場合の対処.ヒープスプレー.トランポリング.バッファオーバーフローの結果.プログラムのフリーズ・クラッシュ.