CyberGlossary

脆弱性

バッファオーバーフロー

別称: バッファオーバーラン

定義

メモリ安全性の欠陥で、確保済みバッファの末尾を超えて書き込みが行われ、隣接メモリが破壊されてしばしばコード実行を可能にする。

バッファオーバーフローは、C や C++ などの言語で入力長を宛先バッファのサイズと適切に比較しない場合に発生します。あふれたバイト列は隣接するスタックフレーム、ヒープチャンク、関数ポインタ、戻りアドレスなどを上書きし、攻撃者は制御フローを乗っ取ったりデータを漏えいさせたりできます。古典的なスタックオーバーフローは多くの歴史的エクスプロイトの基盤であり、ヒープオーバーフローも現在なお頻発します。緩和策としてはスタックカナリア、ASLR、DEP/NX、CFI、より安全な libc 関数、ファズテスト、そして Rust のようなメモリ安全言語への移行などが採られます。CWE-119 等で分類され、OWASP や SANS の上位リストにも常連です。

  • CVE-2014-0160(Heartbleed):OpenSSL のメモリ読み取りオーバーフロー。
  • Morris ワーム(1988):fingerd のスタックオーバーフローを悪用。

関連用語