Aller au contenu

Glossaire

Use-after-free

Bug de sûreté mémoire où un programme continue d'utiliser un pointeur après la libération de la mémoire pointée, menant souvent à une confusion de types (CWE-416).

Un use-after-free (UAF, CWE-416) survient lorsqu'un code lit ou écrit à travers un pointeur dont l'objet a déjà été libéré. L'allocateur peut avoir attribué cette mémoire à un autre objet, si bien que le programme finit par interpréter des données sans rapport comme sa propre structure, y compris des champs tels que des pointeurs de fonction. Cette confusion de types explique pourquoi l'UAF fait partie des classes de bugs les plus graves dans les navigateurs, les noyaux et d'autres grandes bases de code C et C++.

Les causes profondes sont généralement une propriété mal définie, des callbacks qui survivent à leur contexte, ainsi que des caches ou des itérateurs conservant des références périmées. AddressSanitizer détecte l'UAF grâce à sa quarantaine ; les types de propriété et les langages sûrs pour la mémoire le préviennent. Voir corruption du tas et use-after-free.