Você está na página 1de 3

Resumo do captulo

Estouro de buffer uma condio comum a linguagens de programao estruturadas.


Ocorre quando a entrada aplicada a uma varivel maior que o espao de memria
destinado
a ela. Quando um invasor envia entradas alm do alcance esperado do valor, o
sistema-alvo do ataque pode entrar em colapso ou executar o cdigo malicioso
inserido
pelo agressor.
O bug do estouro de buffer foca variveis usadas por funes para armazenar
valores.
Variveis definidas em uma funo aceitam valores dos usurios ou os geram
automaticamente.
Essas variveis so associadas a um espao de memria fixo a fim de armazenar
os dados a elas atribudos.
As melhores formas de evitar ou manejar com um estouro de buffer esto
relacionadas
programao: manter uma verificao que garanta no haver valor especificado maior
que
a memria associada varivel e definir a sequncia de passos a ser seguida pelo
programa
em caso de estouro de buffer.
Existem duas categorias principais de estouro de buffer: estouro de pilha e
estouro de
heap.
So trs os passos principais no processo de estouro de buffer tradicional: o
hacker busca
por uma chance de estourar o buffer, identifica a memria associada varivel e
especifica
a ela um valor maior que sua capacidade mxima.
Dois mtodos menos tradicionais usados para causar condies de estouro de buffer
so
a codificao conjunto-de-caracteres e a compresso nybble-to-byte.
Para que as funes e as variveis que podem levar a um estouro de buffer sejam
adequadamente
identificadas, deve-se checar a reao da aplicao sempre que um grande
conjunto de dados de caracteres for fornecido a qualquer varivel.
Se uma explorao de estouro de buffer for detectada, a probabilidade de a mesma
vulnerabilidade
existir tambm em outras aplicaes do mesmo fornecedor bastante alta.
possvel prevenir um estouro de buffer programando funes a fim de que estas
executem
uma verificao de validade da entrada, fornecendo um terminador NULL depois de
aceitos os valores ou usando preferencialmente funes que no sejam to
suscetveis a
condies de estouro de buffer.
Questes de reviso
1. Uma funo na linguagem de programao
C limita automaticamente
entradas maiores que o buffer de memria?
2. Um terminador NULL previne o estouro
de buffer?
3. Que tipo de variveis armazenado em
uma pilha?
4. Para que usado um heap?
5. Na execuo de uma explorao de
estouro de buffer, o hacker precisa ter
uma relao de confiana com o PC
alvo do ataque?
6. Que caractere decodificado pela sequncia
&# 162?
7. A mensagem de erro "A segmentation
fault has occurred" se refere a qu?
8. Como um hacker desmonta a validao
do lado do cliente em um formulrio
da web?
9. UNIX foi escrito em Java e reescrito
posteriormente em C, o que causou
muitos problemas de estouro de buffer.
Verdadeiro ou falso?
10. Bugs normalmente so resolvidos por
meio da programao de funes que
executem uma verificao de validade
da entrada. Verdadeiro ou falso?
11. As variveis do usurio so armazenadas
em pilhas. Verdadeiro ou falso?
Projeto prtico
ESTOURO DE BUFFER
CAPTULO 12
12. Variveis elsticas usadas por mais
de uma funo so armazenadas em
heaps. Verdadeiro ou falso?
13. Pilhas no podem ser automaticamente
aumentadas ou diminudas. Verdadeiro
ou falso?
14. Heaps so incrementados automtica
e manualmente usando os comandos
malloc () e brk (). Verdadeiro ou
falso?
15. Voc pode deletar heaps e pilhas ao
executar a limpeza de disco. Verdadeiro
ou falso?
16. A validao executada no lado do
cliente diminui a velocidade de processamento
do servidor. Verdadeiro ou
falso?
As seguintes funes so inseguras e
sujeitas a estouros de buffer. Relacione-
as lista de funes seguras abaixo.
a. strcpy( )
h. gets( )
c. sprintf( )
d. strcat( )
17. fgets ( )
18. strncpy ( )
19. strncat ( )
20. snprintf ( )
Como a explorao mais famosa na web, o estouro de buffer pode ser a mais difcil
de
evitar. Por se tratar de uma vulnerabilidade construda no interior de vrias
linguagens
de programao, incluindo a linguagem C, corrigir o problema de forma global
simplesmente
impossvel. A linguagem C a base do UNIX, do Linux e do Windows, tendo
sido empregada para criar a maioria dos servios que usamos hoje; assim, s o fato
de
o estouro de buffer ser uma vulnerabilidade inerente a essa linguagem mostra que
ele
afeta muitos tipos diferentes de sistemas ao redor do mundo.
SEGURANA DE COMPUTADORES E TESTE DE INVASO
PROJETO 12.1
1. Fornea as informaes que faltam na Tabela 12.4. Na coluna do meio, explique o
propsito de cada uma das funes vulnerveis listadas esquerda. Na coluna da
direita, identifique as alternativas seguras a essas funes vulnerveis. Todas