SPONSORED

バッファオーバーフロー(ばっふあおーばーふろー)

最終更新:2026/4/27

バッファオーバーフローとは、メモリのバッファ領域を超えてデータが書き込まれる現象、またはそれを可能にする脆弱性のことである。

別名・同義語 バッファオーバーラン境界越え

ポイント

バッファオーバーフローは、セキュリティ上の重大な問題を引き起こす可能性があり、攻撃者がシステムの制御を奪う手段として利用されることがある。

バッファオーバーフローとは

バッファオーバーフローは、コンピュータプログラムにおけるセキュリティ上の脆弱性の一つです。プログラムがデータを格納するために確保したメモリ領域(バッファ)の容量を超えて、データを書き込もうとすることで発生します。この際、隣接するメモリ領域にデータが上書きされ、プログラムの誤動作やクラッシュ、最悪の場合には悪意のあるコードの実行を許してしまう可能性があります。

バッファオーバーフローの発生原因

バッファオーバーフローは、主に以下の原因で発生します。

  • 入力値の検証不足: プログラムがユーザーからの入力値や外部からのデータに対して、適切な長さや形式の検証を行わない場合。
  • 文字列操作関数の誤用: C言語などのプログラミング言語において、文字列操作関数(strcpyなど)を使用する際に、バッファのサイズを考慮せずに使用した場合。
  • 配列の境界チェックの欠如: 配列にアクセスする際に、配列の範囲を超えないようにチェックが行われていない場合。

バッファオーバーフローの対

バッファオーバーフローを防ぐためには、以下の対策が有効です。

  • 入力値の検証: ユーザーからの入力値や外部からのデータに対して、長さや形式の検証を徹底する。
  • 安全な関数の使用: strcpyなどの危険な関数ではなく、strncpyなどの安全な関数を使用する。
  • 配列の境界チェック: 配列にアクセスする際に、配列の範囲を超えないようにチェックを行う。
  • コンパイラのセキュリティ能の活用: コンパイラの提供するバッファオーバーフロー検出機能や保護機能を活用する。
  • アドレス空間配置のランダム化 (ASLR): メモリのアドレス配置をランダム化することで、攻撃者がバッファオーバーフローを利用して悪意のあるコードを実行することを困難にする。

バッファオーバーフローの事例

過去には、バッファオーバーフローを悪用した多くのセキュリティインシデントが発生しています。有名な事例としては、Code RedやNimdaといったワームの拡散が挙げられます。これらのワームは、バッファオーバーフローの脆弱性を利用して、サーバーを乗っ取り、他のサーバーに感染を広げました。

SPONSORED