Qu'est-ce que Pile fantôme (shadow stack) ?

Mécanisme qui, à chaque appel de fonction, place aussi une copie de l'adresse de retour sur une pile distincte que les écritures ordinaires ne peuvent pas modifier, puis la compare au retour avec la valeur de la pile normale pour détecter la falsification de l'adresse de retour. En cas de discordance, une exception est levée et l'exécution s'arrête. Il est pris en charge par le matériel, notamment par Intel CET (Control-flow Enforcement Technology), et complique les attaques comme le ROP qui exploitent les débordements de tampon sur la pile.

Nom japonais: シャドウスタック

« Pile fantôme (shadow stack) » apparaît dans 2 questions d'entraînement réparties sur 1 thèmes, dont Sécurité matérielle : évolutions récentes.

Domaine: Sécurité matérielle : évolutions récentes

S'entraîner : questions sur Pile fantôme (shadow stack)

Quelle affirmation décrit correctement la pile fantôme (shadow stack) matérielle adoptée notamment par Intel CET (Control-flow Enforcement Technology) ?

  1. ALe contenu de la pile est sauvegardé à intervalles réguliers dans une mémoire non volatile, et lorsqu'un programme se termine anormalement, l'exécution reprend à partir de ce contenu
  2. BLes variables locales des fonctions sont placées dans une mémoire rapide distincte de la pile normale, ce qui réduit les défauts de cache et accélère les appels de fonction
  3. CLors de l'appel d'une fonction, une copie de l'adresse de retour est aussi placée sur une pile distincte que les écritures ordinaires ne peuvent pas modifier, et les deux sont comparées au retour
Afficher la réponse et l'explication

Réponse : C. Lors de l'appel d'une fonction, une copie de l'adresse de retour est aussi placée sur une pile distincte que les écritures ordinaires ne peuvent pas modifier, et les deux sont comparées au retour

Si une adresse de retour est réécrite, par exemple par un débordement de tampon sur la pile, l'exécution saute, au retour de la fonction, vers un emplacement choisi par l'attaquant. Avec une pile fantôme, l'instruction call empile l'adresse de retour à la fois sur la pile normale et sur la pile fantôme, et l'instruction ret compare les deux. Les pages de la pile fantôme sont d'un type spécial dans lequel les instructions store ordinaires ne peuvent pas écrire ; un attaquant qui a réécrit la pile normale ne peut donc pas modifier la copie, et une discordance déclenche une exception qui arrête l'exécution.

« Pile fantôme (shadow stack) » dans les explications

Questions mentionnant « Pile fantôme (shadow stack) » (2)

  1. Quelle affirmation décrit correctement la pile fantôme (shadow stack) matérielle adoptée notamment par Intel CET (Control-flow Enforcement Technology) ?
  2. À propos des fonctions matérielles qui soutiennent l'intégrité du flot de contrôle, quelle association est correcte entre ce qui protège les retours de fonction et ce qui protège les appels et sauts indirects, comme ceux qui passent par des pointeurs de fonction ?

Termes associés

Adresse de retour Débordement de tampon (buffer overflow) Intégrité du flot de contrôle (control-flow integrity) Pointeur de fonction Authentification de pointeurs (PAC) KPTI Meltdown IOMMU DMA (accès direct à la mémoire) Arm CCA (Confidential Compute Architecture)

Retour au glossaire