攻撃手法を技術的に理解するための連載、今回はスタックと並んでよく耳にする「ヒープ破壊」を取り上げます。 連載目次 前回取り上げたスタックオーバーフローは比較的理解しやすい攻撃手法なのですが、今回取り上げるヒープオーバーフローは少々分かりにくい面があります。恥ずかしながら、筆者自身、これまでなかなか理解ができていなかったのが実情です。スタック管理と比較すると、ヒープ管理はとても複雑で、解説が難しいのですが、ここではできるだけ単純化し、ポイントとなる点をご紹介していきます。 ヒープメモリとは スタックとヒープは、どちらもプログラムに動的なメモリ領域を提供するための仕組みです。スタックは関数の呼び出しなど、プログラムの制御に伴って利用されるもので、コンパイルの結果としてスタック操作が組み込まれるため、プログラマーが意識することは少ないと思います。 これに対してヒープは、プログラム中でmalloc
![ヒープに対する攻撃とその対策](https://cdn-ak-scissors.b.st-hatena.com/image/square/6e84fc6ab06f31b2e64248cbfc92fe06deb5bab5/height=288;version=1;width=512/https%3A%2F%2Fimage.itmedia.co.jp%2Fimages%2Flogo%2F1200x630_500x500_ait.gif)