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