Glossaire
Shadow stack
Pile séparée et protégée qui ne stocke que les adresses de retour : un retour n'est autorisé que s'il correspond à l'adresse sauvegardée au moment de l'appel.
Une shadow stack conserve une seconde copie de chaque adresse de retour dans une mémoire que les écritures ordinaires ne peuvent pas modifier. À chaque call, l'adresse de retour est empilée à la fois sur la pile normale et sur la shadow stack ; à chaque ret, les deux sont comparées et une divergence déclenche une faute. Un débordement de tampon de pile qui écrase l'adresse de retour est donc détecté au retour suivant.
Intel CET fournit une shadow stack matérielle sur les processeurs x86-64 récents, activée avec -fcf-protection et le support du système d'exploitation (protection de pile matérielle de Windows, et espace utilisateur Linux depuis le noyau 6.6). Le ShadowCallStack de Clang est une variante logicielle pour AArch64. Voir intégrité du flot de contrôle.