■スタック・バッファ・オーバーラン(stack buffer overrun)
バッファ・オーバーフローの一種。
バッファ・オーバーフローは、確保したメモリ領域(バッファ)を超えてデータが入力されることを許してしまう脆弱性で、プログラムが異常終了したり、その領域に不正に書き込んだプログラムが実行されたりする。そのうち、メモリ中のスタック領域におけるバッファ・オーバーフローを「スタック・オーバーフロー」と呼ぶ。
スタック領域とは、OSやアプリケーションがデータを一時的に格納するために確保するメモリ領域のこと。スタックには、サブルーチンを呼び出す際の戻り番地などを格納するためにも利用される。そのため、データの長さを十分に確認せずにスタックに格納すると、本来確保していた領域からデータが溢れ出すことで、すでに格納されていたサブルーチンからの戻り番地などが上書きされてしまう。これを巧妙に悪用すると、攻撃者が指定した番地へとプログラムをジャンプさせることが可能になり、任意のコードが実行できてしまう。
またWindowsでは、例外ハンドラが呼び出すプログラムのアドレスがスタックに格納されている。そこで、スタック・バッファ・オーバーランを発生させ、このアドレスを書き換えておき、その後にメモリ・アクセス違反などの例外を発生させることで、攻撃者が送り込んだ任意のコードを実行させることもできる。
バッファ・オーバーフローの脆弱性といった場合、このスタック・バッファ・オーバーランであることが多い。
・バッファ・オーバーフロー攻撃/バッファ・オーバーラン攻撃
http://www.hotfix.jp/archives/word/2003/word03-01.html
|