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