Shadow stack
Qu'est-ce que Shadow stack ?
Shadow stackUne shadow stack est une pile separee et protegee qui conserve des copies des adresses de retour afin que le processeur detecte une alteration de la pile normale et bloque les attaques ROP.
La shadow stack fonctionne en parallele de la pile d'appel classique : chaque appel empile l'adresse de retour sur les deux piles et chaque retour les compare. En cas de divergence, le processeur leve une exception et le processus se termine avant d'utiliser l'adresse corrompue. La technique, popularisee par les travaux academiques sur la CFI, est aujourd'hui implementee en materiel par Intel CET shadow stack et Arm v8.5-A Guarded Control Stack (GCS). Des versions logicielles existent (LLVM SafeStack, clang -fsanitize=safe-stack) avec un cout en performance et en isolation. Elle couvre l'arrete arriere de la CFI ; les appels indirects necessitent toujours CFI/IBT.
● Exemples
- 01
Windows 11 active les shadow stacks utilisateur sur les CPU compatibles CET.
- 02
Arm GCS detecte un debordement qui ecrase le LR sauvegarde.
● Questions fréquentes
Qu'est-ce que Shadow stack ?
Une shadow stack est une pile separee et protegee qui conserve des copies des adresses de retour afin que le processeur detecte une alteration de la pile normale et bloque les attaques ROP. Cette notion relève de la catégorie Sécurité applicative en cybersécurité.
Que signifie Shadow stack ?
Une shadow stack est une pile separee et protegee qui conserve des copies des adresses de retour afin que le processeur detecte une alteration de la pile normale et bloque les attaques ROP.
Comment fonctionne Shadow stack ?
La shadow stack fonctionne en parallele de la pile d'appel classique : chaque appel empile l'adresse de retour sur les deux piles et chaque retour les compare. En cas de divergence, le processeur leve une exception et le processus se termine avant d'utiliser l'adresse corrompue. La technique, popularisee par les travaux academiques sur la CFI, est aujourd'hui implementee en materiel par Intel CET shadow stack et Arm v8.5-A Guarded Control Stack (GCS). Des versions logicielles existent (LLVM SafeStack, clang -fsanitize=safe-stack) avec un cout en performance et en isolation. Elle couvre l'arrete arriere de la CFI ; les appels indirects necessitent toujours CFI/IBT.
Comment se défendre contre Shadow stack ?
Les défenses contre Shadow stack combinent habituellement des contrôles techniques et des pratiques opérationnelles, comme détaillé dans la définition ci-dessus.
Quels sont les autres noms de Shadow stack ?
Noms alternatifs courants : Pile fantome, Safe stack, GCS.
● Termes liés
- appsec№ 217
Integrite du flot de controle
L'integrite du flot de controle (CFI) restreint les appels indirects et les retours du programme a un ensemble precalcule de cibles legitimes, bloquant ROP et JOP.
- appsec№ 545
Intel CET
Intel CET (Control-flow Enforcement Technology) est une fonctionnalite du processeur qui combine une shadow stack materielle et l'Indirect Branch Tracking (IBT) pour bloquer ROP, JOP et COP.
- appsec№ 925
Return-Oriented Programming
Le ROP est une technique d'exploitation par reutilisation de code qui enchaine de courtes sequences terminees par RET pour executer un calcul arbitraire sans injecter de code.
- appsec№ 1095
Canari de pile
Un canari de pile est une valeur secrete placee entre les tampons locaux d'une fonction et son adresse de retour sauvegardee pour detecter les depassements avant qu'ils ne detournent le flot de controle.
- appsec№ 064
ASLR
La randomisation de l'espace d'adressage place aleatoirement le code, les piles, les tas et les bibliotheques en memoire afin qu'un attaquant ne puisse pas predire les adresses cibles.
- appsec№ 670
Securite memoire
La securite memoire est la propriete qu'un programme ne lise, n'ecrive ni n'execute jamais une memoire qu'il n'a pas legitimement allouee, ce qui supprime des classes entieres de vulnerabilites.