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 funciona Canario de pilha?
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.
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.
● Termos relacionados
- appsec№ 064
ASLR
A aleatorizacao do espaco de enderecos coloca codigo, pilhas, heaps e bibliotecas em posicoes aleatorias da memoria para impedir que um atacante preveja enderecos.
- appsec№ 303
DEP
A prevencao de execucao de dados (DEP / NX / W^X) marca paginas de memoria como nao executaveis para impedir que um atacante execute shellcode injetado em pilha ou heap.
- appsec№ 217
Integridade do fluxo de controlo
A integridade do fluxo de controlo (CFI) restringe chamadas indiretas e retornos a um conjunto pre-calculado de destinos legitimos, bloqueando ROP e JOP.
- appsec№ 1028
Shadow stack
Uma shadow stack e uma pilha separada e protegida que guarda copias dos enderecos de retorno para o processador detetar manipulacoes na pilha normal e bloquear ROP.
- appsec№ 925
Return-Oriented Programming
ROP e uma tecnica de exploracao por reuso de codigo que encadeia pequenas sequencias de instrucoes terminadas em RET para executar computacao arbitraria sem injetar codigo.
- appsec№ 670
Seguranca de memoria
A seguranca de memoria e a propriedade de um programa nunca ler, escrever ou executar memoria que nao tenha alocado legitimamente, eliminando classes inteiras de vulnerabilidades.
● Veja também
- № 545Intel CET