Zum Inhalt springen
uencoder

Double Free

Ein Double Free ist der zweimalige Aufruf von free auf denselben Zeiger; er korrumpiert Heap-Metadaten und kann beliebige Schreibzugriffe oder Abstürze ermöglichen.

Zweck

Die Schäden eines Double Free für die Heap-Verwaltung und seine Abwehr verstehen; ein häufiger Speichersicherheitsfehler.

Mechanismus

Beim zweiten free desselben Zeigers fügt die Heap-Verwaltung den bereits freigegebenen Block erneut in die Freiliste ein, womit Zyklen oder überlappende Chunks entstehen, sodass ein späteres malloc überlappenden Speicher zurückgeben kann. Abwehr: Zeiger nullen, Referenzzählung.

Anwendungsfälle

  • Heap-Sicherheitsanalyse
  • Speicherverwaltungs-Audit
  • C/C++-Sicherheit

Verwandte Tools

References