Cibersegurança: entenda o que é um ataque de Buffer Overflow

6 meses atrás 128

Um aspeto comum a todos os dispositivos eletrónicos, antigos ou novos, é o facto de serem executados por programas que são armazenados na memória. Os hackers exploraram este facto e encontraram vulnerabilidades conhecidas como "buffer overflows". Mas que ataques são estes?

Compreenda os buffers e a memória do sistema

Para compreender o que é um ataque de buffer overflow e como funciona, é necessário saber o que é um buffer e como funciona a memória de um computador. A stack e a heap são duas características principais da memória de um computador.

São estruturas de dados utilizadas para a atribuição de memória. Embora sejam semelhantes, a stack e a heap diferem em vários aspetos.

A stack, que utiliza o conceito Last In First Out (LIFO), é utilizada na Random Access Memory (RAM)  para armazenar temporariamente as execuções de programas, enquanto a heap atribui memória utilizando a atribuição dinâmica a variáveis globais. Mas a única coisa que têm em comum é um buffer.

O que é um buffer?

Um buffer é uma região de memória usada para armazenar dados, provavelmente na RAM de um computador, enquanto estão a ser movidos de um local para outro. Esses dados são geralmente programas que precisam de ser executados. Os buffers são armazenados na stack ou heap, que otimizam as execuções.

O que é um buffer overflow?

Um buffer overflow ocorre quando o buffer recebe mais dados do que sua capacidade de armazenamento. Como não consegue processar essa quantidade de dados, "transborda". Agora, na memória de um computador, logo após um buffer há um endereço de retorno.

Este endereço de retorno chama-se Extended Instruction Pointer (EIP). A sua função é apontar para um programa específico quando este é preenchido. Quando um buffer tem mais dados do que pode conter e transborda, ele sobrepõe o endereço de retorno.

Para compreender isto, vamos supor que tem um espaço de memória intermédia que só pode conter cinco letras. Assim, se preencher com palavras como "carro" ou "ilha", o buffer workflow pode contê-las. Mas quando se tem uma palavra como "bufferoverflow", ela vai inevitavelmente ultrapassar o tamanho do espaço de memória.

Isto conduz a um erro ou a uma falha no sistema. Mas os hackers podem explorar esta vulnerabilidade para iniciar um ataque de buffer overflow.

O que é um ataque de buffer overflow e como funciona?

Os ataques de buffer overflow acontecem quando o hacker assume o controlo do endereço de retorno ou EIP. Quando o atacante conhece o tamanho da memória de um sistema, ele pode intencionalmente escrever dados nesse sistema apenas para transbordá-lo.

Depois, certifica-se de que o EIP ou o endereço de retorno é escrito de forma a apontar para um programa que lhe pode dar acesso ao sistema ou revelar informações sensíveis. Há cinco passos principais nos ataques de buffer overflow:

Spiking Fuzzing Encontrar o offset Sobrescrever o EIP ou o endereço de retorno Explorar a vulnerabilidade

O spiking é o primeiro passo. Aqui, os hackers encontram a parte da memória que é vulnerável a buffer overflow. Depois vem o fuzzing, que é semelhante ao spiking, mas aqui, o hacker envia caracteres para o programa para ver se este pode ser corrompido. Uma vez bem sucedido, o atacante prossegue para encontrar o offset, que é onde o buffer transbordou. Isto é feito para saber o tamanho do buffer e o endereço de retorno. Depois, o hacker insere um código shell malicioso e controla o sistema.

Leia também:

Ler artigo completo