Como ocorrem explorações de estouro de buffer

Os invasores usam explorações de estouro de buffer para executar o código executável ao estourar os buffers de memória de tamanho fixo reservados para processos de entrada. Esse código permite que o invasor domine o computador de destino ou comprometa seus dados.

Existem dois tipos de explorações de estouro de buffer:
  • Ataques baseados em heap — Eles inundam o espaço da memória reservado para um programa, mas são difíceis de serem executados e raros.
  • Ataques baseados em pilha — Eles usam objetos de memória de pilha para armazenar a entrada de dados do usuário e são os mais comuns.
Os processos a seguir descrevem ataques de estouro de buffer baseados em pilha:
  1. Processo normais de memória de pilha — O objeto de memória de pilha de tamanho fixo normalmente fica vazio e aguardando a entrada de dados do usuário. Quando um programa recebe a entrada de dados do usuário, como seu nome, os dados são armazenados no alto da pilha e atribuídos a um endereço de memória de retorno. Quando a pilha é processada, a entrada de dados do usuário é enviada ao endereço de retorno especificado pelo programa.
  2. Estouro de pilha — Quando o programa é desenvolvido, uma quantidade específica de espaço da memória é reservada para os dados. A pilha estoura se os dados gravados forem maiores do que o espaço reservado para ela na pilha da memória. Isto só é um problema quando combinado com entrada de dados maliciosos.
  3. Exploração de estouro — Se o programa estiver aguardando que um usuário digite seu nome, mas o invasor digita um comando executável que excede o tamanho da pilha, este comando será salvo fora do espaço reservado.
  4. Execução de código malicioso — O comando não é executado automaticamente simplesmente porque excede o espaço do buffer de pilha. Mas poderia, se um endereço de retorno que aponte para um comando malicioso for fornecido pelo invasor. Inicialmente, o programa começa a travar por causa do estouro de buffer, mas o programa tenta se recuperar usando o endereço de retorno fornecido pelo invasor. Se o endereço de retorno for válido, o comando malicioso será executado.
  5. Exploração de permissões — Uma vez que os programas são executados normalmente no modo kernel ou com permissões herdadas de uma conta de serviço, o código malicioso agora é executado com as mesmas permissões dos aplicativos comprometidos. Isto significa que o invasor pode obter o controle completo do sistema operacional.

Como ocorrem explorações de estouro de buffer