Canario de pilha
O que é Canario de pilha?
Canario de pilhaUm canario de pilha e um valor secreto colocado entre os buffers locais de uma funcao e o endereco de retorno guardado para detetar estouros de pilha antes que sequestrem o fluxo.
Os canarios de pilha, introduzidos por Crispin Cowan e a equipa StackGuard em 1998, sao valores aleatorios colocados na trama da pilha entre as variaveis locais e o endereco de retorno guardado. O compilador emite codigo de entrada que coloca o canario e codigo de saida que o verifica; qualquer alteracao aborta o programa antes de usar o endereco corrompido. Toolchains modernas expoem isto via -fstack-protector ou /GS, com valor aleatorio por processo e byte terminador (em geral 0x00) para frustrar payloads que incluam o canario. Os canarios complementam, mas nao substituem, ASLR, DEP, CFI e linguagens com seguranca de memoria.
● Exemplos
- 01
GCC -fstack-protector-strong insere um canario em funcoes com arrays.
- 02
A opcao /GS do MSVC deteta um estouro causado por strcpy.
● Perguntas frequentes
O que é Canario de pilha?
Um canario de pilha e um valor secreto colocado entre os buffers locais de uma funcao e o endereco de retorno guardado para detetar estouros de pilha antes que sequestrem o fluxo. Pertence à categoria Segurança de aplicações da cibersegurança.
O que significa Canario de pilha?
Um canario de pilha e um valor secreto colocado entre os buffers locais de uma funcao e o endereco de retorno guardado para detetar estouros de pilha antes que sequestrem o fluxo.
Como se defender contra Canario de pilha?
As defesas contra Canario de pilha costumam combinar controles técnicos e práticas operacionais, conforme detalhado na definição acima.
Quais são outros nomes para Canario de pilha?
Nomes alternativos comuns: StackGuard, Cookie de pilha, GS cookie.