Overflow
Tomando o controle de programas vulneráveis a buffer overflow
Trabalho da Disciplina Segurança de Dados 2/02
Diego de Freitas Aranha
Departamento de Ciência da Computação
Universidade de Brasília
Fevereiro de 2003
1. Introdução
Uma falha de segurança comumente encontrada em software é a vulnerabilidade a buffer overflow. Apesar de ser uma falha bem-conhecida e bastante séria, que se origina exclusivamente na incompetência do programador durante a implementação do programa, o erro repete-se sistematicamente a cada nova versão ou produto liberados. Alguns programas já são famosos por freqüentemente apresentarem a falha, como o Sendmail, módulos do Apache, e boa parte dos produtos da Microsoft, incluindo obviamente o infame Internet Information Services (IIS). Mesmo software considerado seguro, como o OpenSSH, já apresentou o problema. Para se ter uma idéia, das vulnerabilidades já encontradas no ano 2003 e cadastradas no banco de dados da ICAT, 37% correpondem a buffer overflow explorável localmente ou remotamente (num total de 19 falhas). Segundo a mesma fonte, durante o ano de 2002, foram comunicadas 288 falhas também locais ou remotas, totalizando 22% das falhas reportadas naquele ano.
Neste texto, tentaremos descrever a falha em linhas gerais, visitar suas formas de ataque e procedimentos para evitá-la. Primeiramente, algum conhecimento de base será examinado. O documento está estruturado nas seguintes seções:
Introdução
Organização dos processos em memória
Buffer overflow e ataques envolvidos
Exploração de um programa vulnerável
Técnicas para evitar a vulnerabilidade
Conclusões