バッファオーバーフローとは
バッファオーバーフローは、プログラムがバッファに書き込もうとしてその境界の外側にステップしようとすると発生し、その結果、プログラムは別のプログラムに属する可能性のあるメモリに情報を書き込みます。 これは、オペレーティングシステム内のメモリの整合性に違反し、実行中のプログラムに重大なエラーと潜在的なクラッシュをもたらします。 バッファオーバーフローの主な危険は、2つの主要な要素に起因しています。 まず、バッファの外部に書き込まれた情報は、コンピュータのメモリマップ(メモリの場所のリスト)が説明できないため、表面上は「失われ」ます。 第二に、バッファオーバーフローは、別のプログラムのメモリに保存されている情報を誤って上書きし、別のプログラムの実行を効果的に妨害する可能性があります。
「バッファ」は、コンピュータが1つのポイントから別のポイントに情報を転送している間に一時的な保存場所として使用されるメモリの領域です。 バッファの最も一般的な使用法は、通常、ビデオまたはオーディオの再生です。コンピューターは、メモリ内の追加のX秒の映像またはオーディオをキューに入れ、システムで何かが一時的に間違えても再生が中断されないようにします。 国に地図上に描かれた境界線内にのみ存在するように、バッファはコンピュータのメモリ内の特定の所定の場所内にのみ存在します。 これらの仮想「ライン」の外に出ると、実行中のプログラムだけでなく、システム上の他のプログラムにも問題が生じます。
基本的に、プログラムは割り当てられた管轄外に出て、別の作業プログラムのスペースに侵入しました。 これが発生すると、バッファーの外側に書き込まれた情報は、コンピューターのマップから事実上落ちます。 言い換えると、システムにはそれを取得する方法がありません。 コンピュータは、メモリに割り当てられた特定のバッファ領域内でバッファされた情報を検索することだけを「知っている」ため、オーバーフローした情報がどこに行ったのかを知る方法はありません。
これに加えて、バッファオーバーフローは、コンピュータで実行されている他のプログラムを混乱させる可能性があります。 バッファの両側のメモリストレージスペースが、実行中の他のプログラムにすでに割り当てられていると想像してください。 バッファ内の情報が設計された領域を超えて出血すると、メモリのこれらのセクションにすでに保存されている情報が上書きされ、破損します。 したがって、バッファオーバーフローは、隣接するプログラムの有効性を損なうだけでなく、自身の操作を破壊する可能性がある問題です。