Canari de pile
Qu'est-ce que Canari de pile ?
Canari de pileUn 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.
Les canaris de pile, introduits par Crispin Cowan et l'equipe StackGuard en 1998, sont des valeurs aleatoires placees entre les variables locales et l'adresse de retour dans la trame de pile. Le compilateur emet du code a l'entree pour poser le canari et a la sortie pour le verifier; toute modification entraine l'arret du programme avant l'utilisation de l'adresse de retour corrompue. Les chaines de compilation modernes l'exposent via -fstack-protector ou /GS, avec une valeur aleatoire par processus et un octet terminateur (souvent 0x00) pour empecher les depassements qui incluraient le canari. Les canaris completent mais ne remplacent ni ASLR, ni DEP, ni CFI, ni les langages a memoire sure.
● Exemples
- 01
GCC -fstack-protector-strong insere un canari dans les fonctions avec tableaux.
- 02
L'option /GS de MSVC detecte un depassement provoque par strcpy.
● Questions fréquentes
Qu'est-ce que 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. Cette notion relève de la catégorie Sécurité applicative en cybersécurité.
Que signifie 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.
Comment fonctionne Canari de pile ?
Les canaris de pile, introduits par Crispin Cowan et l'equipe StackGuard en 1998, sont des valeurs aleatoires placees entre les variables locales et l'adresse de retour dans la trame de pile. Le compilateur emet du code a l'entree pour poser le canari et a la sortie pour le verifier; toute modification entraine l'arret du programme avant l'utilisation de l'adresse de retour corrompue. Les chaines de compilation modernes l'exposent via -fstack-protector ou /GS, avec une valeur aleatoire par processus et un octet terminateur (souvent 0x00) pour empecher les depassements qui incluraient le canari. Les canaris completent mais ne remplacent ni ASLR, ni DEP, ni CFI, ni les langages a memoire sure.
Comment se défendre contre Canari de pile ?
Les défenses contre Canari de pile 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 Canari de pile ?
Noms alternatifs courants : StackGuard, Cookie de pile, GS cookie.
● Termes liés
- 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№ 303
DEP
La prevention d'execution des donnees (DEP / NX / W^X) marque les pages memoire comme non executables pour empecher un attaquant d'executer du shellcode injecte dans la pile ou le tas.
- 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№ 1028
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.
- 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№ 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.
● Voir aussi
- № 545Intel CET