Estouro Buffet
Artigo: Estouro Buffet. Pesquise 862.000+ trabalhos acadêmicosPor: james.bond2013 • 22/3/2015 • 831 Palavras (4 Páginas) • 285 Visualizações
Universidade Federal do Rio de Janeiro
Instituto de Matem´atica
Departamento de Ciˆencia da Computa¸c˜ao
Grupo de Resposta a Incidentes de Seguran¸ca
Rio de Janeiro, RJ - Brasil
Buffer Overflow
Uma introdu¸c˜ao te´orica
GRIS-2011-A-001
Raphael Duarte Paiva
Thiago Fonseca Boche(Revis˜ao)
Pedro Philippe Costa Rosanes(Revis˜ao)
A vers˜ao mais recente deste documento pode ser obtida na p´agina oficial do GRIS: http:
//www.gris.dcc.ufrj.br.
GRIS - Grupo de Resposta a Incidentes de Seguran¸ca
Av. Brigadeiro Trompowski, s/n°
CCMN – Bloco F1 - Decania
Cidade Universit´aria - Rio de Janeiro/RJ
CEP: 21949-900
Telefone: +55 (21) 2598-9491
Este documento ´e Copyright©2011 GRIS. Ele pode ser livremente copiado desde que sejam
respeitadas as seguintes condi¸c˜oes:
E permitido fazer e distribuir c´opias inalteradas deste documento, completo ou em partes, ´
contanto que esta nota de copyright e distribui¸c˜ao seja mantida em todas as c´opias, e que a distribui¸c˜ao
n˜ao tenha fins comerciais. Se este documento for distribu´ıdo apenas em parte, instru¸c˜oes
de como obtˆe-lo por completo devem ser inclu´ıdas. E vedada a distribui¸c˜ao de vers˜oes modificadas ´
deste documento, bem como a comercializa¸c˜ao de c´opias, sem a permiss˜ao expressa do GRIS.
Embora todos os cuidados tenham sido tomados na prepara¸c˜ao deste documento, o GRIS n˜ao
garante a corre¸c˜ao absoluta das informa¸c˜oes nele contidas, nem se responsabiliza por eventuais
consequˆencias que possam advir do seu uso.
1.2 Buffer - o que ´e?
Em computa¸c˜ao, um buffer ´e uma regi˜ao tempor´aria da mem´oria onde s˜ao guardados
dados para serem transportados de um lugar para o outro.
Uma aplica¸c˜ao frequente de um buffer ´e quando dados s˜ao capturados de um dis- ¨
positivo de entrada (um teclado ou mouse, por exemplo) e enviados `a um dispositivo
de sa´ıda(monitor, impressora).
Exemplo:
Digamos que o usu´ario est´a em uma aplica¸c˜ao de terminal, onde tudo o que ele
digita, ´e impresso na tela.
2
O processo de imprimir o que o usu´ario digita, simplificadamente, segue um padr˜ao
parecido com o seguinte:
1. O Usu´ario aperta uma tecla.
2. Um buffer pr´eviamente programado
para tal fim, armazena o
dado vindo da entrada padr˜ao
(o teclado).
3. O dado contido no buffer ´e ent˜ao
copiado para uma vari´avel
interna do sistema, em seguida,
processado para se tornar leg´ıvel `a sa´ıda padr˜ao (geralmente usa-se um padr˜ao
de codifica¸c˜ao de caracteres, como a tabela ASCII, por exemplo).
4. O dado ´e ent˜ao, copiado para
a sa´ıda padr˜ao e, consequente- ¨
mente, impresso na tela do terminal.
Buffers tamb´em s˜ao utilizados em aplica¸c˜
1.4 Buffer Overflow - Uma vis˜ao geral
O buffer overflow ´e um erro de programa¸c˜ao que pode resultar em execu¸c˜ao errˆonea
de um programa, acesso indevido `a ´areas de mem´oria, termina¸c˜ao do programa
ou uma poss´ıvel falha de seguran¸ca em um sistema.
Tecnicamente falando, um buffer overflow consiste em um processo de armazenar,
em um buffer de tamanho fixo, dados maiores que o seu tamanho.
Exemplo:
Imagine que um programa declara duas estruturas de dados adjacentes na mem´oria
do computador: um vetor de caracteres de 8 bytes, A, e um inteiro de 2 bytes,
B, enche A de zeros e B recebe o n´umero 9, como no seguinte esquema:
Agora imagine
...