StackFences: a run-time approach for detecting stack overflows

André Zúquete

Resumo


Este artigo descreve o StackFences, uma técnica para detectar em tempo de execução transbordamentos de memória em variáveis locais de programas em C. Esta técnica é diferente das demais desenvolvidas para lidar com este problemaporque detecta directamente os transbordamentos de memória, em vez de detectar se valor específicos na pilha,como endereços de retomo, foram corrompidos devido a umtransbordamento de memória. Assim, o StackFences é útilnão só para detectar tentativas de intrusão mas tambémpara monitorizar a correcção de execução das aplicações.Foram também concebidas duas políticas de exploração doStackFences que permitem um equilíbrio apropriado entrecorrecção e desempenho. Para testar o StackFencesdesenvolveu-se um protótipo para sistemas Linux usando oTCC (Tiy C Compiler). Os módulos C compilados com oStackFences são totalmente compatíveis com módulos C compilados diferentemente ou com bibliotecas padrão. Os testes de eficácia confirmaram que todos os transbordamentos em variáveis locais são detectados antes de causar um estrago significativo.Os testes de desempenho executados com diversas ferramentas e parâmetros revelarain uma degradação de desempenho aceitável.

Palavras-chave


Buffer overflows; run-time detection; run-time correctness assessment; damage containment; dependability

Texto Completo:

PDF