スタックバッファオーバーフローとは
スタックバッファオーバーフローは、割り当てられたスペースよりも長いプログラムがコンピュータのメモリにエントリを作成するときに発生します。 状況によっては、これによりメモリ内の他のデータが破損し、コンピューターの実行に問題が生じる可能性があります。 また、悪意のあるアプリケーションがスタックバッファーオーバーフローを悪用して、コンピューターの他の部分を制御することもできます。
スタックバッファオーバーフローからの名前は、最初にスタックから派生します。これは、事実上、データが整理されたアクティブリストです。この用語は、物理的なアイテムを積み重ねるという例えに由来します。 この1つのバージョンであるコールスタックは、コンピュータープログラムが特定の瞬間に動作しているプログラムのさまざまな部分、サブルーチンを追跡するために使用するリストです。 コールスタックは一時的に動作し、すばやくアクセスする必要があるため、ハードドライブなどの永続的なストレージではなく、コンピューターのメモリに配置されます。
最新のオペレーティングシステムでは、複数のプログラムを一度に実行できるため、スタックの呼び出しなど、メモリの割り当て方法を整理する必要があります。 これは、バッファを割り当てることにより効率的に行われます。バッファは、特定のバッファに必要な最大領域に対応できるように設計されたメモリ内の領域です。 ほとんどの場合、スペースの一部は使用されないため、異なるアプリケーションからのデータ間のバッファーとして機能し、突然余分なスペースが必要になった場合に対処する余地を残します。 視覚化する1つの方法は、各主題領域に一定のスペースを割り当てる図書館を考えることです。たとえば、ある主題に関するすべての本が図書館の同時に、それらのいずれかがチェックアウトされるのではありません。
スタックバッファオーバーフローは、割り当てられたスペースを超える方法でプログラムが呼び出しスタックデータをバッファに書き込むときに発生します。 これは、通常はプログラムのバグを通じて、誤って発生する可能性があります。 たとえば、ユーザーが電話番号を入力できるようにアプリケーションが設計されているが、入力できる文字数に制限がない場合、ハッカーは無制限フィールドを使用して意図的にスタックバッファオーバーフローを引き起こすことができます。 。 オペレーティングシステムの動作方法によっては、ハッカーが別のアプリケーションまたはオペレーティングシステム自体に間接的にアクセスする可能性があります。
スタックバッファオーバーフローの影響を緩和する方法はいくつかあります。 1つは、アドレス空間レイアウトのランダム化として知られています。 これにより、コンピューター上のデータの最も重要な領域がランダムに配置されます。 ハッカーがスタックバッファオーバーフローを引き起こしたり悪用したりしたとしても、ハッカーは信頼できる方法で侵害を悪用することはできないという考え方です。