Canario de pila
¿Qué es Canario de pila?
Canario de pilaUn canario de pila es un valor secreto colocado entre los buffers locales de una funcion y la direccion de retorno guardada para detectar desbordes antes de que secuestren el flujo de control.
Los canarios de pila, introducidos por Crispin Cowan y el equipo de StackGuard en 1998, son valores aleatorios escritos entre las variables locales y la direccion de retorno guardada en la trama de pila. El compilador emite codigo de entrada que coloca el canario y de salida que lo verifica; un valor alterado aborta el programa antes de usar la direccion corrupta. Los toolchains modernos lo activan con -fstack-protector o /GS y usan un valor aleatorio por proceso mas un byte terminador (habitualmente 0x00) para frustrar desbordes que incluyan el canario. Los canarios complementan, pero no sustituyen, ASLR, DEP, CFI y los lenguajes con seguridad de memoria.
● Ejemplos
- 01
GCC con -fstack-protector-strong inserta un canario en funciones con arrays.
- 02
La opcion /GS de MSVC detecta un desborde basado en strcpy.
● Preguntas frecuentes
¿Qué es Canario de pila?
Un canario de pila es un valor secreto colocado entre los buffers locales de una funcion y la direccion de retorno guardada para detectar desbordes antes de que secuestren el flujo de control. Pertenece a la categoría de Seguridad de aplicaciones en ciberseguridad.
¿Qué significa Canario de pila?
Un canario de pila es un valor secreto colocado entre los buffers locales de una funcion y la direccion de retorno guardada para detectar desbordes antes de que secuestren el flujo de control.
¿Cómo defenderse de Canario de pila?
Las defensas contra Canario de pila combinan habitualmente controles técnicos y prácticas operativas, como se detalla en la definición.
¿Cuáles son otros nombres para Canario de pila?
Nombres alternativos comunes: StackGuard, Cookie de pila, GS cookie.