Aller au contenu

Glossaire

Global Offset Table (GOT)

La table des adresses résolues à l'exécution des fonctions importées ; inscriptible sous liaison paresseuse, ce qui en fait une cible pour rediriger les appels.

La Global Offset Table (GOT) contient les adresses à l'exécution des fonctions importées et des données globales. Les appels à une fonction importée sautent vers un stub de la Procedure Linkage Table (PLT), qui lit l'adresse réelle de la fonction depuis son entrée dans la GOT et y saute. Avec la liaison paresseuse, les entrées sont résolues lors de la première utilisation, si bien que la GOT doit être inscriptible à l'exécution.

C'est cette inscriptibilité qu'exploite une attaque par écrasement de la GOT : une écriture arbitraire qui modifie une entrée redirige l'appel suivant qui passe par elle, par exemple en transformant puts en system. Le RELRO complet résout toutes les importations au démarrage et remappe la GOT en lecture seule, transformant une telle écriture en faute immédiate. Voir détourner la GOT.