web-dev-qa-db-ja.com

解放後使用の脆弱性を利用する方法

解放後使用の脆弱性について詳しく知りたいと思います this チュートリアル。それでも私はそれをよく理解しておらず、それがどのように機能するかについての説明を期待しています。

3
user104787

CやC++などのプログラミング言語には、プログラムがデータを保存するためにメモリを手動で割り当てたり割り当て解除したりする必要があるものがあります。メモリが割り当て解除された後、そのメモリは他のデータを格納するために再利用できます。ただし、Cプログラムが正式にメモリブロックの割り当てを解除した後でも、メモリブロックの読み取りと書き込みは可能です。これが発生する場合、それは事実上常に意図しないバグです。多くの場合、コンパイラとオペレーティングシステムは、これが発生したことを検出してプログラムをクラッシュさせることができますが、すべての不測の事態を捕捉することはできません。

つまり、プログラムは1つのデータ(実際にはもはや関係ないはず)の読み取りまたは書き込みであると考えますが、その間に格納されていた完全に関連のない他のデータでもこれを行います。これにより、たとえば、データが攻撃者によって提供されたデータで上書きされたり、機密データが読み取られてプログラムの出力に侵入したりする可能性があります。

これを悪用する方法について:解放後使用が発生する状況はアプリケーションに大きく依存しているため、普遍的に適用できる答えはありません。

5
Philipp