Aller au contenu

Glossaire

tcache (cache de thread)

Cache par thread de chunks de tas libérés, présent dans glibc 2.26+, qui accélère les petites allocations et constitue une cible courante des techniques d'exploitation du tas.

Le tcache (cache de thread) est un ensemble par thread de listes chaînées simples de chunks libres que glibc 2.26 et versions ultérieures utilisent pour servir rapidement les petites allocations. Un chunk libéré stocke dans son propre corps le pointeur vers le chunk libre suivant (fd), et malloc renvoie ce que pointe la tête de liste.

Cette conception fait du tcache une cible fréquente : un use-after-free ou un double free qui écrase le fd d'un chunk libéré permet à un attaquant de contrôler où sera placée la prochaine allocation — une primitive d'écriture puissante. glibc a ensuite ajouté une clé anti-double-free (2.29) et le safe-linking (2.32), qui applique un XOR entre le fd et un secret dérivé du tas, obligeant l'attaquant à d'abord obtenir une fuite d'adresse du tas. Voir exploitation du tas avec tcache et use-after-free.