バッファが溢れること、またそれにより生ずる不具合。セキュリティホールの一つ。
バッファの大きさは一定であるが、それを超えた大きさのデータを書き込んでしまうと、該当のバッファではない別の領域に書き込むことになり、無関係の領域のデータを破壊することになる。これがバッファオーバーフローである。
例えば、Cにおける入力関数のgets()ではバッファの大きさを指定できず、そのためバッファより大きなデータを受け取ってしまったり、strcpy関数で複写元の文字列が予想外に長くなり複写先のバッファサイズが不足してしまったり等が主たる原因である。
Microsoft Windowsはじめ、オペレーティングシステム(OS)が複雑になるにつれOS自体がバッファオーバーフローを数多く抱えることになり、ここからバッファオーバーフローがあることを前提としたセキュリティ議論が本格化することとなった。
このような状況下でどのようにしてセキュリティがらみのバッファオーバフローを防止するかについて、AMD、次いでIntelは、NXビットというマイクロプロセッサ側からのアプローチによる解決法を提供した。