Buffer overflows causar um comportamento inesperado do programa , como resultado de forma inadequada a substituição de memória. Um buffer é um bloco contíguo de memória de um tamanho fixo usado para armazenar dados , como uma seqüência de caracteres . A linguagem de programação C permite-lhe gravar os dados para o buffer , mesmo se for muito large.In Além de fazer seu programa falhar , os atacantes podem usar buffer overflows para executar código malicioso em sistemas que executam o programa. Apesar de todas as tentativas de proteger contra explorações de estouro de buffer , ele ainda é um ataque comumente explorados vector.In C, estouros de buffer pode ser mitigado , seguindo as melhores práticas de codificação segura. Instruções
1
Evite o strcpy funções da biblioteca C, strcat , sprtinf , vsprintf , recebe e scanf . Estas funções não são seguros e não executar verificação de limites antes de escrever a entrada ou ler um buffer, resultando em um buffer overflow. Verificação de limites é um método de usar declarações condicionais - como se , em seguida - . Verificar se uma leitura ou gravação está dentro do limite ao tampão
2
invalidar código executado a partir da pilha . A pilha é onde a memória , como buffers são armazenados enquanto o aplicativo está em execução. O código malicioso é executado escrevendo -o em pilha , onde é então executada . Embora a implementação pode ser difícil, alguma versão do Linux e do GNU C Compiler ( GCC) estão disponíveis que podem impedir isso.
3
Use uma Compilar que irá verificar se há possíveis condições de estouro de buffer . Extensões e correções estão disponíveis para os compiladores de C , como C , que avisá-lo quando você usa a função inseguro e tentativa de executar a verificação de limites em seu código.
4
Use programas gratuitos, como Escudo Stack e Stack Guarda de detectar e proteger contra estouro de buffer . (Veja os Recursos.)