Attacchi da saturazione del buffer (buffer overflow) Angriffe durch Pufferüberlauf (buffer overflow) Attaques par débordement de tampon (buffer overflow) Ataques por desbordamiento de búfer Buffer overflow attacks

Introdução à protecção overflow


Os ataques por “profusão de tampão” (em inglês “Buffer overflow”, às vezes igualmente chamados superação de tampão) têm por princípio a execução de código arbitrário por um programa, enviando-lhe mais dados do que ele é suposto receber.

Com efeito, os programas que aceitam dados em entrada, passados em parâmetro, armazenam-nos temporariamente numa zona da memória chamada tampão (em inglês buffer). Ora, certas funções de leitura, como as funções strcpy da linguagem C, não gerem este tipo de profusão e provocam uma falha da aplicação que pode conduzir à execução do código arbitrário e assim dar um acesso ao sistema.

A execução deste tipo de ataque é muito complicada porque exige um conhecimento fino da arquitectura dos programas e dos processadores. No entanto, existem numerosas proezas capazes de automatizar este tipo de ataque e deixá-lo ao alcance de quase neófitos.

Princípio de funcionamento


O princípio de funcionamento de uma profusão de tampão está fortemente ligado à arquitectura do processador sobre o qual a aplicação vulnerável é executada.
Os dados apreendidos numa aplicação são armazenados em memória viva numa zona chamada tampão. Um programa correctamente concebido deve prever uma dimensão máxima para os dados em entradas e verificar que os dados apreendidos não excedem este valor.

As instruções e os dados de um programa em execução são armazenados provisoriamente em memória de maneira contígua numa zona chamada pilha (em inglês stack). Os dados situados após o tampão contêm assim um endereço de regresso (chamado apontador de instrução) que permite ao programa continuar a sua execução. Se a dimensão dos dados for superior à dimensão do tampão, o endereço de regresso então é esmagado e o programa lerá um endereço de memória inválido, o que provoca uma falta de segmentação (em inglês segmentation fault) da aplicação.


Um pirata que tenha um bom conhecimento técnico pode assegurar-se de que o endereço memória esmagado corresponde a um endereço real, por exemplo situado no próprio tampão. Assim, escrevendo instruções no tampão (código arbitrário), é-lhe simples executá-lo.

É assim possível incluir no tampão as instruções que abrem um intérprete de comando (em inglês shell)) e permitindo ao pirata pôr a mão no sistema. Este código arbitrário que permite executar o intérprete de comando chama-se shellcode.

Proteger-se de um ataque overflow


Para proteger-se deste tipo de ataque, é necessário desenvolver aplicações com a ajuda de linguagens de programação evoluídas, assegurando uma gestão fina da memória atribuída ou com a ajuda de linguagem de baixo nível utilizando bibliotecas de funções protegidas (por exemplo as funções strncpy.

Boletins de alerta são regularmente publicados, anunciando a vulnerabilidade de certas aplicações a ataques por profusão de tampão. Na sequência destes boletins de alerta, os editores dos "software" tocados pela vulnerabilidade publicam geralmente correcções (patchs) que permitem corrigir a falha. Qualquer administrador sistema e rede deve estar informados sobre os alertas de segurança e aplicar o mais depressa possível as correcções.

Mais informações



Última modificação do dia Sábado 13 de Junho de 2009 às 18:32:20.Este documento, intitulado « Ataques por profusão de tampão (buffer overflow) »a partir de Kioskea (pt.kioskea.net) está disponibilizado sob a licença Creative Commons. Você pode copiar, modificar cópias desta página, nas condições estipuladas pela licença, como esta nota aparece claramente.
Melhores respostas por « Ataques por profusão de tampão (buffer overflow) » em :
Ataque do ping da morte Ver Ataque do ping da morte O “ataque do ping da morte” (em inglês “ping of death”) é um dos mais antigos ataque à rede. O princípio do ping da morte consiste, muito simplesmente, em criar uma datagramme IP cuja dimensão total excede a...
Ataque man in the middle Ver Ataque man in the middle O ataque “man in the middle” (literalmente “ataque do homem no meio” ou “ataques do interceptor”), às vezes chamado MITM, é um cenário de ataque no qual um pirata ouve uma comunicação entre dois interlocutores e...
Ataque Teardrop Ver Ataque por fragmentação “Um ataque por fragmentação” (em inglês fragment attack) é um ataque rede por saturação (recusa de serviço) que explora o princípio de fragmentação do protocolo IP. Com efeito, o protocolo IP está previsto...
Ataque Mitm VerAtaque Mitm Os ataques "relance" (em inglês “replay attaque”) são ataques de tipo “Man in the middle” que consistem em interceptar pacotes de dados e voltar a enviá-los, quer dizer, retransmiti-los tal e qual (sem serem descodificados) ao...
Ataque SYN VerAtaque SYN O “ataque SYN” (chamado igualmente “TCP/SYN Flooding”) é um ataque rede por saturação (recusa de serviço) que explora o mecanismo de aperto de mão em três tempos (em inglês Three-ways handshake) do protocolo TCP. O...
Ataque de servidores web VerVulnerabilidade dos serviços web Os primeiros ataques rede exploravam vulnerabilidades ligadas à aplicação dos protocolos da sequência TCP/IP. Com a correcção progressiva dessas vulnerabilidades, os ataques deslocaram-se para as camadas...