You are on page 1of 3

Uma metodologia para estudo de vulnerabilidades de BUFFER OVERFLOW

Francilene Coelho Cavalcante, Cludio de Castro Monteiro , Instituto Federal de Educao, Cincia e Tecnologia Tocantins (IFTO) Palmas TO Brasil
francilene.fcc@gmail.com, ccm@ifto.edu.br

1. Apresentao
Buffer overflow um tipo de falha bastante comum e bastante srio, que pode ser explorado atravs de falhas de programao, quando o programador no valida se os dados de entrada recebidos por uma varivel esto dentro dos limites mximo reservado para ela. Programas que manipulam variveis necessitam de buffers, que um local na memoria onde so armazenados dados fornecidos por esta varivel. Se determinada varivel receber um numero maior de dados que est previsto, ocorre ento o buffer overflow, estouro de memria.

2. Buffer overflow
Buffer uma rea temporria da memria onde ficam guardados dados para serem manipulados. Overflow um transbordamento, e ocorre quando o volume de um determinado objeto maior do que a capacidade de seu tamanho. Buffer overflow consiste em armazenar em um buffer de tamanho fixo, dados maiores que o seu tamanho, causando seu estouro. Falha do qual decorrente de um erro de programao. O principio de estourar a pilha, poder sobrescrev-la, alterando o valor das variveis locais, valores de parmetros ou endereo de retorno. Altera-se o endereo de retorno da funo para que ele aponte para rea em que se deseja executar o cdigo malicioso dentro do buffer estourado. Os cdigos maliciosos, tambm conhecidos como exploits, so programas que se aproveitam de vulnerabilidades, visando causar comportamento errneo, inesperado ou at ganhar privilgios um sistema como superusurio.

3. Organizao da pilha
Uma pilha (stack) adota um padro chamado LIFO (Last In First Out), o primeiro que entra o ltimo a sair. Ela um local reservado na memria Ram, onde o programa armazena variveis locais de uma funo, e controla a execuo de um programa. A medida que uma subrotina chamada, os dados so empilhados. E desempilhados quando a mesma termina. Um espao especfico da pilha chamado de stack frame. As pilhas possuem basicamente duas operaes: PUSH que insere os dados, e

POP que retira os dados da memria. O registrador SP (Stack Pointer) aponta para o topo da pilha. Na memoria, a pilha trabalha de cima para baixo, de modo que quando um dado inserido na pilha, o SP decrementado. E alm do SP, h o FP (Stack Frame) que aponta para um endereo fixo no frame.

3.1. Registradores
Registradores so locais no processador para armazenar dados temporariamente. Os registradores de uso geral da arquitetura x86: %EAX - registrador acumulador %EBX - registrador base %ECX - registrador contador %EDX - registrador de dados %ESI - registrador de ndice da fonte dos dados %EDI - registrador de ndice do destino dos dados %EBP - registrador ponteiro para a moldura de chamada de funo %ESP - registrador ponteiro para a pilha de execuo Dentre esses registradores citados na arquitetura x86, os mais importantes para o funcionamento da pilha so: ESP e EBP. O ESP, aponta para o topo da pilha, e seu valor pode ser modificado. O EBP contem o endereo do fundo da pilha. Cada chamada de funo o registro de EBP o primeiro a ser empurrado para a pilha e, em seguida, o novo valor do ESP movido para EBP. Uma vez que ESP aponta para o topo da pilha, ele alterado com frequncia durante a execuo de um programa.

4.

Cronograma Pr projeto Projeto


Levantamento bibliogrfico Experimentos

Artigo

Fevereiro Maro Abril Maio Junho

X X X X X

Bibliografia
Tanenbaum, Andrew S. (2003). Sistemas Operacionais Modernos. 2 Edio.

http://pt.scribd.com/doc/17533438/35/Pilha-da-Memoria Buffer Overflow - Uma introduo terica- http://issuu.com/herbert.vix/docs/gris-2008a-001/1?mode=a_p Tomando o controle de programas vulnerveis http://www.cic.unb.br/~pedro/trabs/buffer_overflow.htm a buffer overflow