ataques de estouro de buffer são uma forma comum de ataque de um hacker para causar o caos em um sistema. Há ataques baseados em estouro de pilha , que são raras , e pilha baseada ataques, que erroneamente redefinir o limite de memória para uma pilha , fazendo-a transbordar. Os dados transbordante se move para outros buffers , corrompendo ou sobrescrevendo os dados válidos lá, potencialmente causando uma cascata de buffers corrompidos , bem como uma cascata de transbordando taças de champanhe . Para evitar ataques de estouro de buffer , você vai precisar ter conhecimentos técnicos de programação de computadores , o acesso ao código em questão eo tempo e paciência para vasculhar páginas e páginas de código para implementar as mudanças necessárias para proteger seus sistemas. Instruções
1
Escrever código de segurança para evitar ataques de estouro . Em C, há uma série de funções vulneráveis que os hackers podem explorar a sobrecarregue buffers. Minimize o uso de strcpy () , strcat () , sprintf () e vsprintf (), que não realizam verificação de limites. Se possível, evitar o uso de gets () , que não especifica quantos caracteres devem ser lidas e, assim, deixa o seu código vulnerável . Se você usar o scanf () , certifique-se de especificar uma largura para o formato % s para evitar derrapagens .
2
Verifique se você pode usar trampolins para evitar estouro de buffer. Desde buffer overflow ocorre nas pilhas de memória e não no código, a solução mais simples parece estar impedindo suas pilhas de executar qualquer código por inserção de um pequeno pedaço de código para proibir estas ações . Isto é possível em Linux, mas é muito difícil . Apenas alguns compiladores usam os pequenos pedaços de código chamados trampolins , que atuam como uma barreira entre o código de chamada de uma função e da própria função. Assim, se o código malicioso tenta substituir um buffer , o trampolim pode interceptar e anular as tentativas do hacker .
3
Implementar ferramentas de compilador para lhe dar avisos quando você usar o código que você deixa vulnerável a ataque. Algumas dessas ferramentas irá gerar o código que proíbe estrangeiros de acessar endereços ilegais e será encerrado código que tenta tal execução. Produtos como StackShield e StackGuard são uma grande ajuda . StackSheild irá analisar o endereço de retorno de uma função e terminar em caso de irregularidade . StackGuard coloca uma palavra canário sobre o endereço do remetente e verifica se essa palavra foi alterada , terminando uma função quando ele tem.
4
Instale ferramentas como libsafe verificar a segurança em um processo dinâmico, prazo -time ambiente. Libsafe roda em Linux e verifica o endereço de retorno mais próximo de um quadro de pilha , em seguida, garante que o endereço não será substituído. Libsafe também irá substituir as funções inseguras , como gets () , strcpy () e scanf ().