Entendendo o que é Estouro de Buffer, podemos evitar ataques de Buffer Overflow a nossos computadores, dispositivos, e redes.
Estas vulnerabilidades de estouro de buffer podem ocorrer em vários tipos de software, desde sistemas operacionais, aplicativos cliente/servidor, e em software de desktop.
Vamos dar uma olhada no que exatamente é um Ataque de Buffer Overflow, como eles funcionam e como podem se tornar vulnerabilidades sérias de segurança, além é claro de ver como mitigar seus efeitos.
1 - O que é Buffer Overflow ?
Buffer Overflow é uma situação em que um programa em execução tenta gravar dados além do que o buffer de memória permite, sobrecarregando assim o sistema.
Veja o que a Wikipedia nos diz sobre buffer overflow.
Isso é chamado de Estouro de Buffer, estamos falando de uma situação de saturação de buffer.
Um buffer de memória é uma área na memória do computador (RAM) destinada a armazenamento temporário de dados.
Esse tipo de buffer pode ser encontrado em todos os programas e usado para armazenar dados de entrada, saída e processamento.
Por exemplo: dados armazenados em buffers são as credenciais de login ou o nome do host de um servidor FTP.
Outros dados armazenados temporariamente antes de seu processamento podem ser armazenados em buffers.
Isso literalmente pode ser qualquer coisa, desde campos de entrada de um formulário como campos de nome de usuário e senha, até arquivos de entrada usados para importar determinados arquivos de configuração.
Quando a quantidade de dados gravados no buffer excede a quantidade permitida de dados, o buffer de memória é saturado, causando assim o Buffer Overflow.
Imagine que um nome de usuário com no máximo 8 bytes é esperado para ser gravado, e um nome de usuário de 10 bytes é fornecido e gravado no buffer forçadamente.
Nesse caso, o buffer é excedido em 2 bytes e ocorrerá um Buffer Overflow (sobrecarga de buffer) quando não for impedido de acontecer.
Geralmente vejo isto acontecer quando existe um erro de programação, ou a falta de validação no código de entrada do programa não foi efetuada.
2 - O que acontece quando ocorre um Buffer Overflow ?
Bem, quando um Buffer Overflow ocorre, os dados são gravados fora do buffer, o programa em execução pode se tornar instável, travar ou retornar informações corrompidas.
Isso acontece algumas vezes com nosso sistema operacional, seja ele qual for que você esteja usando, acontece também com programas aleatórios.
Neste contexto as partes sobrescritas da memória podem conter outros dados importantes para aplicativos em execução, mas que a partir de agora são sobrescritos e não estarão mais disponíveis no programa.
Os estouros de buffer (Buffer Overflow) podem até executar outros programas ou comandos maliciosos, resultando assim na execução arbitrária de códigos.
3 - Execução de código arbitrário e escalonamento de privilégios.
Entenda que quando uma vulnerabilidade de Buffer Overflow é usada para gravar dados mal intencionados na memória, e o invasor é capaz de assumir o controle de execução de um determinado programa, estamos lidando com uma grave vulnerabilidade de segurança.
Os ataques de Buffer Overflow se tornam sérios problemas de segurança quando esses problemas de segurança podem ser explorados por hackers para obter controle remoto de um host, realizar tarefas com altos privilégios, ou coisas ruins como resultado da execução arbitrária de código.
A elevação de privilégios no sistema operacional é realizada através da exploração de uma vulnerabilidade de Buffer Overflow em algum programa para executar código arbitrário no programa que está sendo executado, e, com privilégios elevados de sistema.
O código executado pode fornecer ao hacker um shell do SO com privilégios administrativos por exemplo, ou até mesmo adicionar um novo usuário administrador ao sistema.
O código de Buffer Overflow executado acontece no contexto do aplicativo em execução.
Isso significa que quando o aplicativo infectado é executado com privilégios administrativos, o código mal-intencionado também será executado com privilégios administrativos !
4 - Negação de Serviço (Denial of Service - DoS).
É claro que nem todas as vulnerabilidades de buffer overflow podem ser exploradas para obter acesso e execução de código arbitrário.
Além disso, ataques remotos de DoS (negação de serviço) podem ser executados apenas quando eles travam o programa em execução.
Ataques DoS de negação de serviços não se limitam apenas a serviços e computadores, eles também destinam-se a roteadores, firewalls, dispositivos IoT e qualquer outra coisa que execute um sistema operacional.
Um exemplo dessa situação é o artigo que publiquei aqui no blog sobre os mais de 500 mil roteadores infectados no mundo, no artigo eu falo sobre hackers que invadiram roteadores domésticos, isso mesmo: roteadores domésticos, você não leu errado !
Alguns desses ataques de negação de serviços apenas travam e forçam a reinicialização de dispositivos, resultando em alguns minutos de inatividade.
5 - Como evitar ataques de Buffer overflow ?
Bem, o Buffer Overflow no software pode ser evitado ou mitigado de algumas maneiras...
Este aí acima sou eu mesmo 😃 |
Mitigação é um processo de minimizar o impacto da ameaça antes ou depois da ameaça ocorrer.
Ataques de buffer overflow podem ser impedidos de acontecer antes de acontecerem, ou precisamos de mecanismos para minimizar o impacto quando eles acontecem.
6 - Buffer overflow como resolver ?
Será que dá pra se proteger ? Vamos ver como funciona a prevenção e atenuação do buffer overflow. Continue lendo que o artigo é grande, mas vale a pena !
7 - Como prevenir o Buffer Overflow ?
A solução melhor e mais eficaz que eu pessoalmente utilizo e acho que funciona bem, é tentar impedir condições de buffer overflow ou estouro de buffer no código.
Por exemplo, quando um campo possui no máximo 8 bytes como dados de entrada, é esperado que a quantidade de dados que possam ser gravados no buffer seja limitado a 8 bytes, e isso os desenvolvedores precisam fazer da forma correta. Certo ?
Outra forma: eu acho que analisar o tráfego de rede é uma boa idéia para detectar tráfego de rede incomum, e que poderia supostamente explorar vulnerabilidades de buffer overflow.
Você pode ler meu artigo: Guia definitivo - 4 ferramentas grátis para efetuar uma Análise Dinâmica de Malware em sua rede. Acho que pode te ajudar...
8 - Lições aprendidas:
Já deu pra ver que o estouro de buffer (Buffer Overflow) pode ser causado por determinadas condições em que um programa em execução está gravando dados fora do buffer de memória.
Com a execução de código arbitrário, um invasor pode obter controle remoto de um alvo específico, elevar privilégios de usuário ou causar uma negação de serviço (DoS) no destino.
Nós podemos evitar e mitigar estes ataques com várias técnicas, mas ajuda se os programadores escreverem código seguro e testá-lo antes de implantar.
Quando o buffer overflow ocorre, ele ainda pode ser mitigado com métodos reativos como a proteção da memória contra gravação.
Quer aprender como fazer buffer overflow ? Então leia meu artigo sobre 7 ferramentas grátis para fazer ataques de DDOS, já é um bom começo.
Conclusão:
Eu tentei explicar basicamente o que é o buffer overflow sem entrar em muitos detalhes técnicos. Acredito que mais pra frente em outros artigos eu possa me aprofundar mais sobre o assunto.
Ajude o blog com um PIX de R$1,00 ou R$2,00 para contato@gestortecnico.net
Estou fazendo um curso técnico , e vim ate esse site a procura de entender o que era buffer overflow e estou bastante satisfeito , o site explicou de uma maneira incrível muito obrigado
ResponderExcluirBom dia, fico muito feliz que o artigo tenha sido de bom proveito!
ExcluirMuito boa sua Explicação...Parabéns
ResponderExcluir...
...