Segurança

Estouro de buffer: é assim que funciona esta formidável fonte de vulnerabilidades

Nosso dia a dia é feito de centenas de programas. Não existe um momento em nossos dias em que não o acessemos, seja um programa "tradicional" (que requer instalação) ou um programa baseado na web. Desta vez, vamos guiá-lo por tudo que você precisa saber sobre uma das brechas de segurança mais antigas e populares. O fracasso de estouro de buffer , ou estouro de buffer  , é um dos principais quebra-cabeças dos desenvolvedores. Ao longo dos anos, ele se tornou um dos aliados dos cibercriminosos para realizar outros ataques tão ou mais perigosos que este.

Mas o que exatamente é um defeito de estouro de buffer ? Este é um problema de segurança de memória em que o software / programa não considera ou verifica seus limites de armazenamento. Então, a memória do programa recebe mais dados do que realmente pode processar, dependendo de como foi desenvolvida. Além de causar problemas na operação do programa ou simplesmente desligar inesperadamente, vulnerabilidades exploráveis ​​podem aparecer.

Um fato interessante é que o estouro de buffer  é um dos motivos mais comuns pelos quais os ataques de execução arbitrária de código são possíveis devido a vulnerabilidades. Além disso, muitos programas desenvolvidos em linguagens clássicas como C e C ++ são considerados bastante sensíveis a esse tipo de problema.

Um problema de segurança que persiste ao longo dos anos

Os anos se passaram e esses tipos de preocupações com a segurança são quase tão válidos quanto os primeiros anos. Desde o início, não há uma explicação concreta que possa nos mostrar por que, depois de mais de 10 anos, isso continua sendo uma grande dor de cabeça para qualquer pessoa envolvida no desenvolvimento e / ou manutenção de programas vulneráveis ​​ao seu fracasso.

Outro fator que alimenta a popularidade desse tipo de falha é a popularidade contínua do Internet das coisas , ou seja, a Internet das Coisas. Mais do que nunca, é possível que um objeto que usamos com frequência em casa ou no local de trabalho esteja conectado a uma rede. O aspecto infeliz dessa tendência bem-vinda é que uma grande parte dos dispositivos IoT são controlados por firmware de qualidade muito baixa. Além disso, os controles e a aplicação de medidas de segurança são praticamente nulos. Sabemos que existem muitos fabricantes de renome que se esforçam para proteger não apenas os dispositivos, mas também os usuários. No entanto, também existem muitos fabricantes que negligenciam o aspecto seguro de uma boa experiência do usuário.

Bug de estouro de buffer em ação

Antes de passar para um exemplo prático, é importante ter clareza sobre o conceito de amortecer (ou tampão). Na programação, esses são os locais da memória que pertencem a um programa. Ou seja, um programa tem vários locais de memória para armazenar todos os dados que são gerados como resultado do uso do referido programa. Qualquer desenvolvedor deve ter em mente que tampões ou buffers são essenciais para o funcionamento adequado de qualquer programa que desenvolvam. Se este aspecto for negligenciado, os programas terão muitos problemas para funcionar corretamente ou diretamente, eles param de funcionar.

Então, o que acontece durante o estouro de buffer,  ou seja, um processo é executado, o que faz com que o programa afetado gere dados em uma quantidade maior do que os buffers do programa podem armazenar. Portanto, os dados gerados durante o uso do próprio programa vão para locais na memória que não estão preparados para armazenar esses dados. Em seguida, compartilhamos um vídeo extremamente prático e fácil de entender. Veremos como a falha é implementada com um programa simples desenvolvido em linguagem C.

Felizmente, o vídeo optou por um programa muito simples: um formulário simples que apenas pede que você digite seu nome e sobrenome no teclado. Permite entender em poucos minutos como se comporta esse tipo de falha. Vamos mover o exemplo deste mesmo vídeo para uma situação cotidiana.

Imagine que você está navegando na web e se depara com um serviço que chamou sua atenção. Portanto, você decide se inscrever e para isso precisa preencher um formulário com alguns detalhes. Eu só tenho que fornecer meu nome, sobrenome e e-mail.

Nombre:
Apellido:
Correo electrónico:

Então eu insiro meus dados.

Nombre: Lorena
Apellido: Fernández
Correo electrónico: [email protected]

Até agora está tudo normal. Mas e se você tentar se inscrever e colocar um nome muito longo no campo? Por exemplo, este:

Nombre: Lorenaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Apellido: Fernández
Correo electrónico: [email protected]

Você clica em registrar  e de repente, o formulário exibe uma mensagem de erro que não é compreensível para todos. Muitas letras e números que não são compreendidos. Você tenta preencher os dados novamente alterando o conteúdo dos campos, mas nada acontece. Somente fechando e reabrindo o site você pode ir para o formulário em branco e começar de novo. É assim que você explora o estouro de buffer.

Porta de entrada para outros ataques cibernéticos

Claro, existem situações um pouco mais complexas do que um formulário simples. Da mesma forma, com a situação demonstrada, pode-se entender que qualquer programa, aplicativo ou serviço desenvolvido com más práticas de segurança leva a este tipo de falha.

Ele ainda permite que os cibercriminosos executem códigos maliciosos e, portanto, tenham um campo de ataque muito mais amplo. O que significa que muitos mais ataques podem ser executados se a falha for bem-sucedida. Ataques DDoS , Injeções de SQL, ataques de tipo Phishing pode ser conduzido se os dados pessoais dos usuários são acessados ​​e até mesmo eventos de violação de dados podem ser realizados.

Como se proteger efetivamente contra essa falha

Uma das principais recomendações, principalmente para desenvolvedores, é seguir os padrões de desenvolvimento de código seguro. Além disso, você precisa educar sobre a importância de fazer da segurança uma das principais prioridades ao pensar sobre qualquer tipo de software. Dependendo da linguagem que você usa, do framework e de outros aspectos, você pode encontrar vários guias com padrões muito detalhados. Eles não apenas o ajudarão a desenvolver código com segurança para evitar o estouro de buffer, mas também a outras ameaças de segurança em potencial. O projeto OWASP em sua seção Top 10, apresenta as principais ameaças à segurança para qualquer tipo de solução web, recomendamos que você dê uma olhada.

Da mesma forma, sugerem optar por linguagens de programação que, além de eficientes no uso de memória, sejam seguras. O mesmo se aplica a qualquer tipo de estrutura e biblioteca que precise ser usada. Outras recomendações mais específicas para desenvolvedores são que os aplicativos contêm, por exemplo, executáveis ​​independentes de posição. Para que serviria? Limite os impactos que um estouro de buffer poderia gerar, supondo que não foi possível capturar o evento e contê-lo. Não estamos falando apenas de prevenção, mas também de mitigação de impactos. Quando se trata de brechas de segurança, os limites são quase infinitos.

Mencionamos acima que o estouro de buffer é uma situação persistente em programas desenvolvidos em linguagens como C e C ++. Felizmente, os desenvolvedores desenvolveram e disseminaram em conjunto práticas melhores e mais seguras. E por práticas, queremos dizer o desenvolvimento do próprio software. Como resultado, muitos fabricantes de grande e pequeno calibre já adotaram tais práticas em seu ciclo de desenvolvimento.

Itens semelhantes

Deixar uma resposta

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

Botão Voltar ao topo