Shadow stack
O que é Shadow stack?
Shadow stackUma 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.
A shadow stack roda em paralelo com a pilha de chamadas convencional: cada chamada empilha o endereco de retorno em ambas e cada retorno compara-os. Se diferirem, o processador gera uma trap e o processo aborta antes de usar o endereco corrompido. O mecanismo foi popularizado em artigos academicos sobre CFI e hoje existe em hardware como Intel CET shadow stack e Arm v8.5-A Guarded Control Stack (GCS). Ha implementacoes apenas em software (LLVM SafeStack, clang -fsanitize=safe-stack) com custos em desempenho e isolamento. Cobre a aresta para tras da CFI; chamadas indiretas continuam a exigir CFI/IBT.
● Exemplos
- 01
Windows 11 forca shadow stacks em modo utilizador em CPUs com CET.
- 02
Arm GCS deteta um estouro que sobrescreve o LR guardado.
● Perguntas frequentes
O que é 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. Pertence à categoria Segurança de aplicações da cibersegurança.
O que significa 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.
Como funciona Shadow stack?
A shadow stack roda em paralelo com a pilha de chamadas convencional: cada chamada empilha o endereco de retorno em ambas e cada retorno compara-os. Se diferirem, o processador gera uma trap e o processo aborta antes de usar o endereco corrompido. O mecanismo foi popularizado em artigos academicos sobre CFI e hoje existe em hardware como Intel CET shadow stack e Arm v8.5-A Guarded Control Stack (GCS). Ha implementacoes apenas em software (LLVM SafeStack, clang -fsanitize=safe-stack) com custos em desempenho e isolamento. Cobre a aresta para tras da CFI; chamadas indiretas continuam a exigir CFI/IBT.
Como se defender contra Shadow stack?
As defesas contra Shadow stack costumam combinar controles técnicos e práticas operacionais, conforme detalhado na definição acima.
Quais são outros nomes para Shadow stack?
Nomes alternativos comuns: Pilha sombra, Safe stack, GCS.
● Termos relacionados
- 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№ 545
Intel CET
Intel CET (Control-flow Enforcement Technology) e uma funcionalidade da CPU que combina shadow stack por hardware e Indirect Branch Tracking (IBT) para bloquear ROP, JOP e COP.
- 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№ 1095
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.
- 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№ 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.