Double Free
ダブルフリーは同じポインタに対して free を 2 回呼ぶことである。ヒープメタデータを破壊し、任意書き込みやクラッシュを引き起こしうる。
目的
ダブルフリーがヒープ管理機構に与える被害とその防御を理解する。よくあるメモリ安全性欠陥である。
メカニズム
同じポインタの 2 回目の free で、ヒープ管理機構は解放済みブロックを再びフリーリストへ挿入し、循環やチャンクの重複を生じるため、後の malloc が重複したメモリを返しうる。防御:ポインタを NULL にする、参照カウント。
ユースケース
- ヒープセキュリティ解析
- メモリ管理監査
- C/C++ セキュリティ