コンテンツへスキップ
uencoder

Double Free

ダブルフリーは同じポインタに対して free を 2 回呼ぶことである。ヒープメタデータを破壊し、任意書き込みやクラッシュを引き起こしうる。

目的

ダブルフリーがヒープ管理機構に与える被害とその防御を理解する。よくあるメモリ安全性欠陥である。

メカニズム

同じポインタの 2 回目の free で、ヒープ管理機構は解放済みブロックを再びフリーリストへ挿入し、循環やチャンクの重複を生じるため、後の malloc が重複したメモリを返しうる。防御:ポインタを NULL にする、参照カウント。

ユースケース

  • ヒープセキュリティ解析
  • メモリ管理監査
  • C/C++ セキュリティ

関連ツール

References