Teste de segurança - Estouros de buffer

Um estouro de buffer surge quando um programa tenta armazenar mais dados em uma área de armazenamento temporário de dados (buffer) do que deveria. Como os buffers são criados para conter uma quantidade finita de dados, as informações extras podem transbordar para os buffers adjacentes, corrompendo os dados válidos neles mantidos.

Exemplo

Aqui está um exemplo clássico de estouro de buffer. Ele demonstra um estouro de buffer simples causado pelo primeiro cenário no qual depende de dados externos para controlar seu comportamento. Não há como limitar a quantidade de dados que o usuário inseriu e o comportamento do programa depende de quantos caracteres o usuário inseriu.

...
   char bufr[BUFSIZE]; 
   gets(bufr);
   ...

Mãos em

Step 1- Precisamos fazer o login com nome e número do quarto para ter acesso à internet. Aqui está o instantâneo do cenário.

Step 2 - Também habilitaremos "Unhide hidden form fields" no Burp Suite, conforme mostrado abaixo -

Step 3- Agora enviamos uma entrada no campo nome e número do quarto. Também tentamos injetar um número bem grande no campo do número do quarto.

Step 4- Os campos ocultos são exibidos conforme mostrado abaixo. Clicamos em aceitar os termos.

Step 5 - O ataque foi bem-sucedido de tal forma que, como resultado do estouro do buffer, ele começou a ler as localizações de memória adjacentes e foi exibido para o usuário como mostrado abaixo.

Step 6- Agora vamos fazer o login usando os dados exibidos. Após o registro, a seguinte mensagem é exibida -

Mecanismos Preventivos

  • Revisão de código
  • Treinamento de desenvolvedor
  • Ferramentas de compilador
  • Desenvolvimento de funções seguras
  • Varredura Periódica