ヒープオーバーフロー


Heap_overflow
ヒープオーバーフロー、ヒープオーバーラン、またはヒープスマッシングは、ヒープデータ領域で発生するバッファオーバーフローの一種です。ヒープオーバーフローは、スタックベースのオーバーフローとは異なる方法で悪用できます。ヒープ上のメモリは実行時に動的に割り当てられ、通常はプログラムデータが含まれます。悪用は、このデータを特定の方法で破壊して、アプリケーションにリンクリストポインタなどの内部構造を上書きさせることによって実行されます。正規のヒープオーバーフロー手法は、動的メモリ割り当てリンケージ( mallocメタデータ)、結果のポインタ交換を使用して、プログラム関数ポインタを上書きします。
たとえば、古いバージョンのLinuxでは、ヒープ上で2つのバッファーが隣り合って割り当てられていると、最初のバッファーが2番目のバッファーのメタデータを上書きする可能性が使用中のビットを2番目のバッファのゼロに設定し、長さを小さな負の値に設定してnullバイトをコピーできるようにすることで、プログラムがfree()最初のバッファを呼び出すときに、これら2つのバッファを1つのバッファにマージしようとします。 。これが発生すると、解放されたと想定されるバッファーは、以前に割り当てられたバッファーの最初の8バイトに2つのポインターFDおよびBKを保持することが期待されます。BKはFDに書き込まれ、ポインターを上書きするために使用できます。

コンテンツ
1 結果
2 検出と防止
3 も参照してください
4 参考文献
5 外部リンク

結果
偶発的なオーバーフローは、影響を受けるメモリ領域にアクセスするプロセスによって、データの破損や予期しない動作を引き起こす可能性がメモリ保護のないオペレーティングシステムでは、これはシステム上の任意のプロセスである可能性が
たとえば、Microsoft JPEG GDI +バッファオーバーフローの脆弱性により、影響を受けるマシンでコードをリモートで実行できる可能性が
iOSの脱獄では、ヒープオーバーフローを使用して、任意のコードが実行されることがよく

検出と防止
バッファオーバーフローと同様に、ヒープオーバーフローから保護する方法は主に3つWindowsやLinuxなどのいくつかの最新のオペレーティングシステムは、3つすべての実装を提供します。
通常はNXビットなどのハードウェア機能を使用して、コードとデータを分離することにより、ペイロードの実行を防止します
ヒープが固定オフセットで検出されないようにランダム化を導入します。通常は、 ASLR(アドレス空間配置のランダム化)などのカーネル機能を使用します。
ヒープマネージャーに健全性チェックを導入する
バージョン2.3.6以降、GNU libcには、たとえば、を呼び出すときにポインタの整合性をチェックすることによって、事後にヒープオーバーフローを検出できる保護が含まれていますunlink。ただし、以前のエクスプロイトに対するこれらの保護は、ほとんどすぐに悪用可能であることが示されました。 さらに、PaXは数年前により良い実装を導入しましたが、Linuxには2005年からASLRのサポートが含まれています。また、Linuxには2004年からNXビットのサポートが含まれています。
Microsoftは、2003年4月以降のWindows Server2003および2004年8月以降のWindowsXPService Pack 2で、ヒープ常駐バッファオーバーフローに対する保護を組み込んでいます。これらの緩和策は、安全なリンク解除とヒープエントリヘッダーCookieでした。Vista 、Server 2008、Windows 7などのWindowsの新しいバージョンには、一般的にターゲットとなるデータ構造の削除、ヒープエントリメタデータのランダム化、ヒープヘッダーCookieの役割の拡張、ランダム化されたヒープベースアドレス、関数ポインターエンコーディング、ヒープ破損の終了、アルゴリズムのバリエーションが含まれます。 。通常のデータ実行防止(DEP)とASLRも、この攻撃を軽減するのに役立ちます。

も参照してください
ヒープスプレー
スタックバッファオーバーフロー
エクスプロイト
シェルコード

参考文献
^ 「MicrosoftSecurityBulletinMS04-028、JPEG処理(GDI +)でのバッファオーバーランにより、コードの実行が許可される可能性があります(833987)」。Microsoft。2004年9月14日。
^ 「MallocMaleficarum」。2005年10月。
^ 「MALLOCDES-MALEFICARUM」。2009 。
^ 「ユーザーモードのヒープ破損の脆弱性の悪用を防ぐ」。Technetブログ、Microsoft Security Research&Defense。2009年8月4日。

外部リンク
楽しみと利益のためにヒープを壊す
HeiseSecurityのヒープオーバーフローに関する記事
Microsoft WindowsXPSP2ヒープ保護とDEPバイパスを無効にする