Vou falar de um ataque a sistemas computacionais não muito conhecido, mas é bom como todos os outros, por exemplo: exploits, forca bruta, Rootkits, Spoofing e por ai vai...
O ataque por estouro de pilha e buffer é o modelo mais comum para um atacante fora do sistema, ou uma conexão de rede ou dial-up, obter acesso não-autorizado ao sistema de destino. Essa técnica também pode ser utilizada para se conseguir privilégios maiores em um sistema. Basicamente o ataque explora um bug em um programa. O bug pode ser um caso simples de má programação, em que o programador deixou de codificar a verificação de limites em um campo de entrada. Nesse caso, a pessoa que está atacando deve enviar mais dados do que o programa estava esperando. Usando tentativa e erro, ou examinando o código-fonte do programa atacado, se estiver disponível, o atacante determina a vulnerabilidade e escreve um programa para fazer os passos seguintes:
1 - Estourar um campo de entrada, argumento da linha de comandos ou buffer de entrada - por exemplo, em um daemon de rede - até que escreva sobre a pilha.
2 - Modificar o endereço de retorno atual da pilha pelo endereço do código de exploração carregado na etapa seguinte.
3 - Escrever um código simples para o próximo espaço na pilha, que inclui os comandos que o atacante deseja executar - por exemplo, iniciar um shell.
Por exemplo, se um formulário de um sistema Web espera que um cpf de usuário seja inserido em um campo, o atacante poderia enviar o cpf do usuário, mais caracteres extras para estourar o buffer e alcançar a pilha, mais um novo endereço de retorno para carregar na pilha, mais o código que o atacante deseja executar.
Esse tipo de ataque é especialmente pernicioso, pois pode ser executado dentro de um sistema e atravessar canais de comunicação permitidos. Podem ocorrer dentro de protocolos usados para a comunicação com a máquina; portanto, podem ser difíceis de detectar e impedir. Podem até mesmo evitar a segurança imposta pelos firewalls. Uma solução para esse problema é que a CPU tenha um recurso que desativa a execução de código em uma seção de pilha de memória. Se não me engano o solaris já realiza isso. O endereço de retorno da rotina estourada ainda pode ser modificado; mas, quando o endereço de retorno está dentro da pilha e o código tenta executar, uma exceção é gerada, e o programa é interrompido com um erro.
0 comentários:
Postar um comentário
Gostou da esbórnia de hoje ? Comentem.