O que é estouro de buffer e como evitar?

Uma grande preocupação da equipe de desenvolvimento é que, por mais que um software seja testado inúmeras vezes, sempre pode ocorrer um erro de codificação. Essas falhas inesperadas podem ser maléficas para um sistema, pois, se não forem tratadas de forma correta, abrem uma brecha para que dados extrapolem limites que deveriam respeitar, comprometendo a memória da sua aplicação.

Nesse artigo, você entenderá o que é um estouro de buffer (buffer overflow), como ocorre e quais são os principais tipos de ataques associados a essa vulnerabilidade. Além disso, serão apresentados métodos, técnicas e ferramentas que ajudam a prevenir e mitigar vulnerabilidades de buffer overflow.

O que são buffers?

Antes de entender melhor o que é um estouro de buffer, é importante saber que buffers são espaços na memória. Eles são organizados em seções sequenciais, nas quais os dados são armazenados temporariamente, com o intuito de serem transferidos para outro local posteriormente.

Para um programa funcionar, ele reserva nesses blocos de memória informações como dados de rede, input, dados de arquivos, informações do próprio programa, entre outros. Cada buffer suporta uma capacidade máxima.

O que é estouro de buffer?

Quando o buffer tem dados demais e, ainda assim, existem informações sendo adicionadas, sua capacidade de armazenamento é excedida. Dessa forma, ocorre um estouro de buffer para locais de memória adjacentes, corrompendo-os, geralmente como resultado de um erro de codificação de software.

Esse estouro de buffer é conhecido como estouro de buffer. Essa falha de programação pode ser explorada por um hacker, que obtém acesso não autorizado a sistemas corporativos.  

Tipos de ataques de estouro de buffer

Aqui estão listados os ataques mais comuns em situações de estouro de buffer. Entenda melhor cada um.

Estouros de buffer baseados em pilha

É considerada a forma mais comum de executar um estouro de buffer. Os dados contidos na pilha são substituídos quando um invasor envia dados maliciosos para um aplicativo, ocorrendo no espaço da memória que é utilizado para armazenar um input.

Estouros de buffer baseados em heap

Ao invés de ocorrer na pilha, ocorrem na memória do heap, sendo mais difícil de acontecer. Nele, o atacante inunda o espaço de memória de um software, reservado para salvar informações sobre o próprio programa. Assim, pode causar uma corrupção de memória, encerramento inesperado do programa ou até mesmo vulnerabilidade de segurança.

Como identificar um estouro de buffer?

Há diversas maneiras de identificar um estouro de buffer. A forma mais simples é reconhecer se o buffer está com mais dados do que sua capacidade ou se memórias adjacentes estão sobrescritas.

Ao notar que uma aplicação falhou em validar o tamanho do input antes de escrevê-lo, é possível que tenha ocorrido um estouro de buffer. Ademais, quando isso resultar em um encerramento inesperado, corrupção de dados ou um comportamento alterado, é possível que um hacker esteja se aproveitando de um estouro de buffer.

Quais são as consequências de um estouro de buffer?

Há diversas consequências que um estouro de buffer pode causar.

Primeiramente, falhas do sistema que podem ocasionar uma falta de disponibilidade de programas. Em segundo lugar, perda de controle de acesso, às vezes fora das políticas de segurança dos programas ou até mesmo de normas legislativas. Por fim, esse estouro de buffer pode permitir que o invasor explore outras vulnerabilidades do programa.

O estouro de buffer é sim uma vulnerabilidade  

O excesso de dados pode ser um código malicioso que contenha a capacidade de assumir controle do sistema operacional por completo, roubar informações ou até prejudicar arquivos.

O estouro de buffer já é considerado uma vulnerabilidade mesmo quando não resulta em controle total do sistema. Ao encerrar programas ou até mesmo causar um ataque DoS (Denial of Service), já podemos considerar uma vulnerabilidade.

Como prevenir o estouro de buffer 

Há diversas maneiras pelas quais podemos evitar um estouro de buffer. Comumente, programadores evitam funções de biblioteca padrão não verificadas, utilizando verificações que são impostas no tempo de execução.

Além disso, podemos incorporar diversas medidas de segurança no próprio código ao ser desenvolvido, integrando proteção na própria linguagem de programação. Desse modo, é necessário realizar testes regularmente a fim de identificar possíveis erros, corrigindo-os. 

Técnicas eficazes de proteção  contra estouro de buffer

A forma mais eficaz de se proteger contra estouro de buffer é ser proativo. As soluções Vulnerability Manager Plus e Endpoint Central da ManageEngine são muito eficientes nesse quesito, dispondo de diversas formas de lidar com esses problemas.

Address Space Layout Randomization 

Address Space Layout Randomization (ASLR) é uma técnica de segurança que previne a exploração de vulnerabilidades da memória corrompida. O Vulnerability Manager Plus possui ferramentas que auxiliarão na visibilidade de possíveis falhas de configuração relacionadas a segurança com a ajuda da ferramenta de gerenciamento e escâner de vulnerabilidades.

Data Execution Prevention 

Data Execution Prevention (DEP) é uma feature de segurança que protege o computador contra códigos maliciosos. Esse recurso impede códigos selecionados de rodar em certas áreas da memória designadas apenas para dados. A pessoa que for escrever o código pode escolher não executar a pilha ou partes desnecessárias do programa. O Vulnerability Manager Plus identifica, reporta e remedia essas vulnerabilidades.

Structured Exception Handling Overwrite Protection  

Structured Exception Handling Overwrite Protection (SEHOP) é outra feature de segurança, designada para melhorar a proteção do sistema operacional de um computador. É utilizado para lidar com erros e exceções que podem ocorrer durante a execução de um código. O Vulnerability Manager Plus escaneia todos os endpoints de sua empresa, garantindo que SEHOP esteja ativado e te protegendo.

Patch estouro de buffer Vulnerabilities  

Com o Vulnerability Manager Plus você ganha visibilidade de todas as vulnerabilidades que existem na sua rede, além de informações detalhadas a respeito do que as causou. A ferramenta identifica e apresenta formas de remediá-las em forma de patches.

Função DEX, Endpoint Central

O Endpoint Central possui a função DEX que monitora continuamente a utilização de memória, CPU e desempenho dos endpoints, ajudando a identificar comportamentos anômalos, como travamentos ou degradação de performance que podem ser sintoma de um problema de memória.

Application Control, Endpoint Central

O Application Control, no Endpoint Central, permite com que o usuário configure qual aplicação pode rodar. Dessa forma, qualquer ameaça será contida, bloqueando o exploit. Além disso, qualquer incidente ficará evidenciado no EDR.

Previna o estouro de buffer com as soluções da ManageEngine. Para as conhecer melhor, faça um teste gratuito de 30 dias: Vulnerability Manager Plus e Endpoint Central.