House of Force — Corruption du top chunk

Heap glibc

Principe

La House of Force écrase la taille du top chunk (wilderness) avec une très grande valeur, de sorte qu'une allocation contrôlée déplace le top chunk vers une adresse arbitraire — donnant une écriture arbitraire au malloc suivant.

Étapes

# 1. Overflow -> écraser top->size par 0xffffffffffffffff
# 2. malloc(target - top - 0x20) deplace le top vers 'target'
#    (taille = distance, calcul signé)
# 3. malloc(n) renvoie un chunk à 'target' -> write-what-where
evil_size = target - top_addr - 0x20
malloc(evil_size); p = malloc(0x10)  # p == target

Obsolescence

Mitigée depuis glibc 2.29 : un check vérifie que la taille demandée ne dépasse pas la taille du top chunk. Reste un classique pédagogique pour comprendre la mécanique du heap glibc.