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.
Os processos a seguir descrevem ataques de estouro de buffer baseados em pilha:
- 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.
- 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.
- 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.
- 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.
- 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.