Skip to main content

スタックバッファオーバーフローとは何ですか?

stackスタックバッファーオーバーフローは、プログラムが割り当てられたスペースよりも長いコンピューターメモリにエントリーすると起こることです。状況によっては、これはメモリ内で他のデータを破損し、コンピューターの実行に問題を引き起こす可能性があります。他の場合には、スタックバッファーオーバーフローが悪意のあるアプリケーションによって活用されて、コンピューターの他の部分を制御することができます。:この用語は、物理的なアイテムを積み重ねることの類推から来ています。これの1つのバージョン、

コールスタック、

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