C · Avançado · Inglês · Técnico
stack canary
Valor secreto colocado na stack entre os buffers locais e o endereço de retorno. Se um overflow o sobrescrever, o programa é abortado antes de a função retornar.
Onde usar
Ligado com -fstack-protector-strong no gcc, é uma defesa barata contra stack smashing. Não impede o overflow, apenas detecta a corrupção ao sair da função.
Em código
gcc -fstack-protector-strong -O2 prog.c
# aborta: stack smashing detectedExemplos
The stack canary caught the overflow before the function returned.
O stack canary pegou o overflow antes de a função retornar.
Distros enable the stack canary by default.
As distros ativam o stack canary por padrão.
Cuidado
Achar que dispensa código correto: leituras fora do limite e overflows no heap não são detectados por ele.
Sinônimos
stack protector
Origem
Alusão ao canário usado em minas para avisar do perigo.