A5 Buffer Overflows
Origem: OWASP Chapter Brasil, a enciclopédia livre.
Conteúdo |
A5.1 Descrição
Atacantes utilizam buffer overflows para corromper a pilha de execução de uma aplicação web. Enviando requisições cuidadosamente manipuladas para uma aplicação web, um atacante pode fazer com que a aplicação web execute código arbitrário – efetivamente tomando o controle da máquina. Buffer overflows não são fáceis de serem descobertos, e mesmo quando um é descoberto, é geralmente extremamente difícil de explorar. Não obstante, atacantes têm conseguido identificar buffer overflows em uma gama imensa de produtos e componentes. Outra classe similar de falhas é conhecida como ataques de format string.
Falhas de buffer overflow podem estar presentes tanto no webserver quanto no servidor de aplicação que provêem os serviços para o site ou para a própria aplicação web. Buffer overflows encontrados em produtos amplamente utilizados tendem a se tornar aplamente conhecidos e podem representar um risco significativo para usuários destes produtos. Quando aplicações web utilizam bibliotecas, como bibliotecas gráficas para geração de imagens, elas se expõem para potenciais ataques de buffer overflow.
Buffer overflows podem também ser encontrados em códigos de aplicações web customizadas, e podem inclusive ser mais comuns, dada a falta de cuidado com segurança que aplicações web são geralmente escritas. Falhas de buffer overflow em aplicações web customizadas tendem a ser menos exploradas porque haverá normalmente poucos hackers tentando encontrar uma falha em uma aplicação específica. Se descoberta a falha em uma apliciação customizada, a habilidade para explorar esta falha (que não seja indisponibilizar a aplicação) é reduzida significativamente, uma vez que o código fonte e mensagens de erros detalhadas não são geralmente acessíveis pelo atacante.
A5.2 Ambientes Afetados
Praticamente todos os webservers conhecidos, servidores de aplicação e servidores de aplicação web são suscetíveis a buffer overflow, com a notável exceção sendo Java e ambientes J2EE, os quais são imunes a este tipo de ataque (exceto por overflows na própria JVM).
A5.3 Exemplos e Referências
- OWASP Guide to Building Secure Web Applications and Web Services, Chapter 8: Data Validation http://www.owasp.org/documentation/guide/
- Aleph One, “Smashing the Stack for Fun and Profit”, http://www.phrack.com/show.php?p=49&a=14
- Mark Donaldson, “Inside the Buffer Overflow Attack: Mechanism, Method, & Prevention”, http://rr.sans.org/code/inside_buffer.php
A5.4 Como identificar se você está vulnerável
Para produtos de servidor e bibliotecas, mantenha-se atualizado através dos relatórios de bug dos produtos que você utiliza. Para aplicações customizadas, todo o código que aceita entradas via requisições HTTP devem ser revistos para confirmar que estes podem tratar entradas arbitrariamente grandes.
A5.5 Como se proteger
Mantenha-se atualizado com os mais recentes relatórios de bug para suas aplicações e produtos de sua infraestrutura de Internet. Aplique os mais recentes patches para estes produtos. Periodicamente, realize um scan em seu website com um dos amplamente disponíveis scanners que procuram por falhas de buffer overflow.
Para o código de sua aplicação customizada, você deve rever todas as entradas de dados que aceitam informações via requisições HTTP e garantir que uma verificação apropriada do tamanho da entrada está sendo realizada. Isto deve ser feito mesmo em ambientes que não são suscetíveis a este tipo de ataque, pois quantidades excessivas de requisições mal-formadas podem causar negação de serviço (denial of service) e outros problemas operacionais.