Você está na página 1de 39

Vulnerabilidades de Software e Formas de

Minimizar suas Exploraes

Luiz Otavio Duarte1


Luiz Gustavo C. Barbato1 2
Antonio Montes1 2
LAC - Laboratorio Associado de Computaca o e Matematica Aplicada
INPE - Instituto Nacional de Pesquisas Espaciais
2

CenPRA - Centro de Pesquisas Renato Archer


MCT - Ministerio da Ciencia e Tecnologia

duarte, lgbarbato @lac.inpe.br, antonio.montes@cenpra.gov.br




Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 1/39

Introduo

O aumento no desenvolvimento de novas


tecnologias vem sendo acompanhado por um
grande nmero de sistemas sendo atacados;

Para que a maioria destes ataques possam ser


bem sucedidos necessria a existncia de
alguma vulnerabilidade;

Segundo Viega e McGraw, as vulnerabilidades


presentes em programas so as mais exploradas.

http://www.buildingsecuresoftware.com

Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 2/39

Motivao

Dados do ICAT/NIST mostram que no primeiro


semestre de 2005, 75% das vulnerabilidades
eram remotamente explorveis.

Das vulnerabilidades remotamente explorveis,


80% estavam ligadas a m codificao do
programa.

Das vulnerabilidades remotamente explorveis,


40% estavam ligadas a problemas de
extravazamento de buffers.

http://icat.nist.gov
Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 3/39

Objetivo
Mostrar solues que podem ser utilizadas para
minimizar as exploraes:

Inibindo certos tipos de ataques;


Dificultando a explorao das vulnerabilidades;
Diminuindo as consequncias de invases;
Restringindo as aes dos invasores;

Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 4/39

Vulnerabilidades de Software

Vulnerabilidade em software um conjunto de


condies que podem levar violao de uma poltica
de segurana explcita ou implcita.

Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 5/39

Vulnerabilidades de Software

Format String
Especificaes de como os dados devem
ser representados;

Muito utilizadas em funes da famlia


printf() e syslog();
Um atacante que consiga controlar este
formatador pode modificar a maneira que o
programa executado.
http://www.cs.ucsb.edu/~jzhou/security/formats-teso.html

Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 6/39

Vulnerabilidades de Software

Injections
Ocorre quando comandos so
dinamicamente gerados;
* SQL injection, XPath injection, LDAP injection, OS
commanding injection, Code injection, XSS, etc ...

Acontecem, na maioria das vezes, devido a


no validao de dados de entrada passados
ao programa;
http://www.webappsec.org/projects/threat/classes_of_attack.shtml

Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 7/39

Vulnerabilidades de Software

Symbolic Link
um link que aponta para outro arquivo e
atua como o arquivo apontado;

A vulnerabilidade existe se um usurio puder


criar um link para um arquivo que no possui
permisso para o acesso;

A explorao, geralmente, ocorre em


programas que no checam se o arquivo que
devem abrir ou no um link.

Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 8/39

Vulnerabilidades de Software

Race Condition
Ocorrem em ambientes que suportam
multiprogramao;

A vulnerabilidade ocorre se um recurso que


ser utilizado por outro processo for
intencionalmente modificado;

comum que este tipo de vulnerabilidade


seja explorado em em arquivos temporrios.

Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 9/39

Vulnerabilidades de Software

Buffer Overflow
Geralmente ocorre quando mais dados do
que o suportado tentam ser armazenados;

Atualmente a vulnerabilidade mais


explorada em um software;

De um modo geral, podem ser exploradas via


smash stack, arc injection, pointer subterfuge.
http://csdl.computer.org/comp/proceedings/discex/2000/0490/02/0490toc.htm

Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 10/39

Mtodos de Explorao

Stack Smash
Objetiva modificar o endereo de retorno;
Faz com que este aponte para um cdigo
executvel;

Este cdigo deve ser inserido pelo atacante.


http://www.phrack.org/phrack/49/P49-14

Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 11/39

Mtodos de Explorao

Arc Injection
Tambm tem por objetivo modificar o
endereo de retorno;

Geralmente, faz com que aponte para um


local que contenha alguma funo especfica,
como system();

No existe a necessidade da injeo de


cdigo por parte do atacante.

Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 12/39

Mtodos de Explorao

Pointer Subterfuge
Faz com que um ponteiro aponte para um
lugar arbitrrio no PAS;

No necessita sobrescrever variveis


adjacentes at o endereo de retorno;

No necessita da injeo de cdigo


executvel.

Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 13/39

Formas de Minimizar as Exploraes


Segundo Crispin Cowan, o programa sem falhas
infactvel para sistemas no triviais.

Abordagens dependentes do Compilador


Abordagens dependentes do Sistema
Abordagens dependentes da Aplicao

Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 14/39

Formas de Minimizar as Exploraes

Abordagens dependentes do compilador


Dados inseridos em tempo de compilao
para que o programa seja seguro em tempo
de execuo;

Geralmente acopladas ao compilador do


sistema;

No eliminam as vulnerabilidades, mas atuam


sobre sua explorao.

Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 15/39

Formas de Minimizar as Exploraes

Abordagens dependentes do Compilador


StackGuard
Objetivo o programa finalizar ao ocorrer um ataque a um
Utiliza-se de canrios

buffer overflow;
randmicos, NULL terminator,

XOR randmico;

Eficiente contra ataques de smash stack.


http://www.cse.ogi.edu/DISC/projects/immunix/StackGuard

Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 16/39

Formas de Minimizar as Exploraes

Abordagens dependentes do Compilador


SSP - Antigo ProPolice
Como o StackGuard, possui o mesmo objetivo e um canrio
randmico, chamado de guardio;

Reordenamento das variveis e argumentos das funes;


Aborda ataques de stack smash, arc injection, pointer
subterfuge.
http://www.trl.ibm.com/projects/security/ssp

Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 17/39

Formas de Minimizar as Exploraes

Abordagens dependentes do Compilador


StackShield
Objetivo o programa finalizar ao ocorrer um ataque a um
buffer overflow;

Armazena os endereos de retorno em um local dito


seguro;

Eficiente contra ataques de stack smash.


http://www.angelfire.com/sk/stackshield

Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 18/39

Formas de Minimizar as Exploraes

Abordagens dependentes do Compilador


PointGuard
Objetivo o programa finalizar ao ocorrer um ataque do tipo
pointer subterfuge;

Trabalha fazendo um XOR criptogrfico entre o valor do


ponteiro e um valor randmico;

No possui uma verso disponvel publicamente.


http://www.ece.cmu.edu/~adrian/630-f03/readings/cowan-pointguard.pdf

Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 19/39

Formas de Minimizar as Exploraes

Abordagens dependentes do Compilador


O SSP ou StackGuard + PointGuard
stack smash, pointer
mostram-se eficazes
subterfuge e arc injection;

Entretanto, somente a PointGuard trata


problemas de heap smash. Se a libc fosse
compilada com o PointGuard.

Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 20/39

Formas de Minimizar as Exploraes

Abordagens dependentes do Sistema


As abordagens dependentes do sistema tem como
objetivo proteger o sistema inteiramente em tempo de
execuo. Para isso, faz com que as bibliotecas e o
kernel do sistema sejam fortificados.
Dentre as ferramentas atualmente disponveis, as que
realmente tratam vulnerabilidades de buffer overflow
so as chamadas de bloqueadoras de
comportamento.
Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 21/39

Formas de Minimizar as Exploraes

Abordagens dependentes do Sistema


Libsafe
Previne buffer overflows.
uma espcie de invlucro para a biblioteca padro do C.
Intercepta e checa os limites dos argumentos antes de
passar para as funes da bilbioteca padro do C.
transparente para os processos protegidos pois
carregada automaticamente (/etc/ld.so.preload ou
LD_PRELOAD).
http://www.research.avayalabs.com/project/libsafe/index.html
Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 22/39

Formas de Minimizar as Exploraes

Abordagens dependentes do Sistema


WX
W xor X (OR no pode ser pois permitiria os 2 juntos)
OpenBSD
Pginas executveis no podem ter permisso de escrita e
vice-versa.

Leitura e Escrita = Dados, Leitura e Execuo = Instrues


http://www.openbsd.org/security.html
http://www.bytelabs.org/download/material/os-security04.pdf

Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 23/39

Formas de Minimizar as Exploraes

Abordagens dependentes do Sistema


Openwall
um patch para o kernel de sistemas Linux.
Implementa stack no executvel.
Usurios no podem criar links para arquivos que eles no
possuem permisses de leitura e escrita.
http://www.openwall.com/linux/README.shtml

Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 24/39

Formas de Minimizar as Exploraes

Abordagens dependentes do Sistema


PaX
Protees por menor privilgio para pginas de memria.
SEGMEXEC, PAGEEXEC (NX/XD bit)
Restries mprotect() (impede PROT_WRITE e
PROT_EXEC)

Base mmap() randmica (cdigos dinamicamente alocados


so mapeados em diferentes posies a cada execuo)
http://pax.grsecurity.net

Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 25/39

Formas de Minimizar as Exploraes

Abordagens dependentes do Sistema


Exec Shield
Desenvolvido pela equipe Red Hat
Red Hat Enterprise Linux
http://www.redhat.com/f/pdf/rhel/WHP0006US_Execshield.pdf

Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 26/39

Formas de Minimizar as Exploraes

Abordagens dependentes do Sistema


Windows DEP
Data Execution Prevention (DEP)
Windows XP Service Pack 2
http://www.microsoft.com/technet/prodtechnol/winxppro/maintain/sp2mempr.mspx

Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 27/39

Formas de Minimizar as Exploraes

Abordagens dependentes do Sistema


RaceGuard
um patch para o Linux para no permitir que race
conditions ocorram na criao de arquivos temporrios.

Se stat() falhar (arquivo no existe), o nome do arquivo


armazenado em um cache.

Agora se uma subsequente open() com o mesmo nome de


arquivo detectar que o arquivo existe, o ataque detectado
e a aplicao abortada.
http://www.cse.ogi.edu/sysl/readings/papers/RaceGuard.pdf
Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 28/39

Formas de Minimizar as Exploraes

Abordagens dependentes do Sistema


Systrace
Permite controlar as chamadas de sistemas que as
aplicaes podem acessar no sistema

uma ferramenta que permite que o administrador


especifique quais recursos um dado processo pode
acessar.

Apesar de no eliminar ou prevenir um ataque contra um


buffer overflow, esta abordagem permite que menos
privilgios sejam dados ao atacante.
http://www.citi.umich.edu/u/provos/systrace
Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 29/39

Formas de Minimizar as Exploraes

Abordagens dependentes do Sistema


Grsecurity MAC
Patch para o Linux
MAC - Mandatory Access Control
Permite restringir o acesso a arquivos, recursos, sockets,
etc, de TODOS os usurios, baseado em um sistema de
ACL (Access Control List)

... aumenta a dificuldade do comprometimento com


sucesso do sistema.
http://www.grsecurity.net/gracldoc.pdf
Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 30/39

Formas de Minimizar as Exploraes

Abordagens dependentes da Aplicao


Realizam o que chamado de auditoria de segurana
sofware.

Esta auditoria pode ser realizada de maneira esttica ou


dinmica.

A anlise esttica visa procurar erros de codificao da


aplicao inspecionando seu cdigo fonte.

A anlise dinmica busca encontrar problemas de


segurana durante a execuo do programa.

Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 31/39

Formas de Minimizar as Exploraes

Abordagens dependentes da Aplicao


Analisadores Estticos
Flawfinder: http://www.dwheeler.com/flawfinder
ITS4: http://www.cigital.com/its4
PScan:
http://www.striker.ottawa.on.ca/~aland/pscan
RATS: http://www.securesw.com/rats
Splint: http://www.splint.org

Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 32/39

Formas de Minimizar as Exploraes

Abordagens dependentes da Aplicao


Analisadores Dinmicos
WebScarab Project
um framework, escrito em Java, para analisar aplicaes
que usam protocolos de comunicao HTTP e HTTPS.
http://www.owasp.org/software/webscarab.html

Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 33/39

Formas de Minimizar as Exploraes

Abordagens dependentes da Aplicao


Analisadores Dinmicos
O projeto .NET OWASP a coleo de projetos
focados no tema Asp.Net de segurana. Projetos
atuais podem ser usados para ajudar a identificar e
testar aplicaes Web.

http://www.owasp.net

Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 34/39

Formas de Minimizar as Exploraes

Abordagens dependentes da Aplicao


Analisadores Dinmicos
SAMSHE (Security Analyser for Microsoft Shared
Hosting Environment) - Projetada para
adiministradores e usurios finais. Esta
ferramenta identifica vulnerabilidades comuns no
IIS (Internet Information Server) 5.0 ou 6.0
executando Asp.Net ou cdigo ASP.

Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 35/39

Formas de Minimizar as Exploraes

Abordagens dependentes da Aplicao


Analisadores Dinmicos
ANSA (Asp.Net Security Analyser) e ANBS
(Asp.Net Baseline Security) - Estes projetos
contm ferramentas que ajudam a identificar
vulnerabilidades comuns disponveis no Asp.Net
e para configurar seguramente o servidor eles a
executam.

Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 36/39

Formas de Minimizar as Exploraes

Abordagens dependentes da Aplicao


Analisadores Dinmicos
C# Spider - Parte inicial do projeto que construir
um scanner de segurana para Web para temas
de segurana conhecidos usando o formato
OASIS WAS e scanner de segurana para SQL
Injection e Cross Site Scripting.

Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 37/39

Consideraes Finais
Instalar e configurar esses recursos demanda um certo
tempo.

As solues apresentadas no deixam os sistemas


seguros.

Existem formas de driblar essas solues.


Exemplo: http://www.phrack.org/phrack/56/p56-0x05

Minimizar as exploraes uma maneira de diminuir os


riscos.

Desenvolvimento de Software Seguro sempre foi, ainda


e sempre ser a melhor abordagem.

Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 38/39

Mensagem Final

Buffers NO podem ser


ESTOURADOS. Podem ser
EXTRAVAZADOS.
(GTS 01.2005)

Vulnerabilidades de Software e Formas de Minimizar suas Exploraco es - GTS - 07/2005 - p. 39/39