
110
プログラムを実行したとき、コンピュータの内部では一時記憶用の領域
がそのコンピュータのメモリ上に確保されます。ここにはプログラムに対
して入力されたデータなども格納されますが、入力データのサイズが大き
すぎると、設計時に設定された領域を超えて格納しようとしてしまいます
(図4-17)。
開発者がプログラムを実装する際に、このサイズをチェックして超えな
いように制限していれば問題ないのですが、そうでない場合は、入力とし
て任意の文字列をこの領域に埋め込める可能性があります。もし攻撃者が
悪意のあるコードを書き込んだ場合、任意のプログラムが実行可能になり
ます。
C言語やC++などのプログラミング言語で開発されたプログラムでは、
メモリの使用をプログラマが適切に管理する必要があります。正しく管理
されていない場合、、、
などの問題が起こります。これらは
といわれる脆弱性の一種で、想定していた領域を超えてアクセスする
ことによって発生するものです(図4-18)。
バッファオーバーフローがある状態、つまり用意された領域の外まで書
き込みできる状態になっていると、前述のように攻撃者が用意した悪意の
あるコードを実行されてしまう可能性があります。
最近のWebアプリケーションはJava やPHP、Rubyといったプログラミ
ング言語で実装されていることが多く、このような言語で作成されたプロ
グラムではメモリの使用による脆弱性はほとんど発生しません。しかし ...