Como evitar ataques de estouro de buffer

Os ataques de estouro de buffer são uma forma comum de ataque de um hacker que causa o caos em um sistema. Existem muitos ataques de estouro, que são raros, e ataques baseados em pilha, que redefinem por engano o limite de memória de uma pilha, causando o estouro. O estouro move os dados para outros buffers, corrompe ou sobrescreve os dados válidos, o que pode causar uma cascata de buffers danificados, semelhante a uma cascata de taças de champanhe transbordando. Para evitar ataques de estouro de buffer, você precisará ter um conhecimento especializado de programação de computadores, acesso ao código em questão e tempo e paciência para vasculhar páginas e páginas de código para implementar as alterações necessárias que protegem seus sistemas.

Passo 1

Digite o código de segurança para evitar ataques de estouro. Em C, há várias funções de vulnerabilidade que os hackers podem explorar para sobrecarregar os buffers. Minimize o uso de strcpy (), strcat (), sprintf () e vsprintf (), que não executa a verificação de limite. Se possível, evite usar gets (), que não especifica quantos caracteres serão lidos e, portanto, deixa seu código vulnerável. Se você usar scanf (), certifique-se de especificar uma largura para o formato% s para evitar estouros.

Etapa 2

Verifique se você pode usar trampolins para evitar o estouro de buffer. Como o estouro de buffer ocorre nas pilhas de memória e não no código, a solução mais simples parece ser impedir que suas pilhas executem qualquer código inserindo um pequeno pedaço de código para proibir essas ações. Isso é possível no Linux, mas é muito difícil. Apenas alguns compiladores usam pequenos pedaços de código chamados trampolins, que atuam como uma barreira entre o código que chama uma função e a própria função. Portanto, se o código malicioso tentar substituir um buffer, o trampolim poderá interceptar e neutralizar tentativas de hackers.

Etapa 3

Implemente ferramentas de compilação para fornecer avisos ao usar código que o deixa vulnerável a ataques. Algumas dessas ferramentas geram código que proíbe que terceiros acessem endereços ilegais e desativem o código que tenta executá-los. Produtos como StackShield e StackGuard são uma grande ajuda. O StackSheild analisará o endereço de retorno de uma função e o encerrará no caso de uma irregularidade. O StackGuard coloca uma palavra das Canárias no endereço do remetente e verifica se a palavra foi alterada, encerrando uma função quando a possui.

Etapa 4

Instale ferramentas como libsafe para verificar a segurança de maneira dinâmica, no ambiente de tempo de execução. O Libsafe é executado no Linux, verifica o endereço de retorno mais próximo de um quadro de pilha e garante que o endereço não seja sobrescrito. O Libsafe também substituirá funções não seguras, como gets (), strcpy () e scanf ().

Referências

 

Você pode estar interessado:

Deixe um comentário