glibc malloc — Internes de l'allocateur (ptmalloc)

Heap Concepts

Structure d'un chunk

prev_size | size (3 bits flags: A M P)
fd | bk        (si libre : chaînage des bins)
... données utilisateur ...
P = PREV_INUSE, M = IS_MMAPPED, A = NON_MAIN_ARENA

Les bins

tcache (glibc 2.26+, par thread, LIFO, rapide) · fastbins (petits chunks, LIFO) · unsorted/small/large bins (chunks plus grands, recyclage) · top chunk (wilderness, étend le tas). Comprendre leur fonctionnement est requis pour toute exploitation heap.

Mitigations modernes

# tcache key (anti double-free) — glibc 2.29
# safe-linking : fd chiffré ( ptr ^ (addr>>12) ) — 2.32
# checks de taille/alignement renforcés
# -> les vieilles techniques (fastbin dup naif) sont bloquées