Você está na página 1de 60

MATC99 Segurana e Auditoria

de Sistemas de Informao
Segurana em Aplicaes web Introduo
Italo Valcy <italo@dcc.ufba.br>

Italo Valcy Seg e Auditoria de SI, 2013.1

Segurana em aplicaes web

Vulnerabilidades em software tem sido


amplamente utilizadas por atacantes!
Italo Valcy Seg e Auditoria de SI, 2013.1

Segurana em aplicaes web


Nenhum software est livre de vulnerabilidades
McConnell, S. Code Complete:
Industry Average: "about 15 - 50 errors per 1000 lines of delivered
code
about 10 - 20 defects per 1000 lines of code during in-house
testing and 0.5 defects per KLOC in released products

Objetivo: prover segurana no desenvolvimento de


software
No um objetivo fcil, dado a complexidade dos sistemas

Italo Valcy Seg e Auditoria de SI, 2013.1

Segurana em aplicaes web


Estratgia para detectar vulnerabilidades:
Anlise de documentos de requisitos, projeto e
arquitetura
Anlise de cdigo-fonte
Teste de invaso
Ferramentas automatizadas

Italo Valcy Seg e Auditoria de SI, 2013.1

Segurana em aplicaes web


Questo: sua empresa/organizao adota um
ciclo de desenvolvimento de software seguro?

Italo Valcy Seg e Auditoria de SI, 2013.1

Ciclo de desenv. de software seguro


A segurana deve fazer parte de todas as fases do desenvolvimento
de software (McGraw, 2006):
Especificao: requisitos explcitos de segurana (ex: Microsoft
Bob)
Projeto: modelo de dados em estruturas lgicas e fsicas,
padres de interface, elementos de hardware e software (e.g.
banco de dados em DMZ)
Codificao: tcnicas gerais de programao segura (e.g. buffer
overflow em C/C++)
Testes de segurana, diferente de testes funcionais (e.g. fluxos
no esperados)
Implantao em ambiente de produo (e.g. aplicao de
patches de correo)

Italo Valcy Seg e Auditoria de SI, 2013.1

Ciclo de desenv. de software seguro


A segurana deve fazer parte de todas as fases do desenvolvimento
de software (McGraw, 2006):

a
p
u
c
o
Projeto: modelo de dados em estruturas
lgicas e fsicas,
e
r
p
a
:
padres de interface, elementos
de
hardware
e software (e.g.

o
n
t
a
banco de dados em DMZ)on
r
r egu
p
e
Codificao: tcnicas
geraissde programao segura (e.g. buffer
r
a
m
overflow emfC/C++)
w
o
t
c
o
S segurana, diferente de testes funcionais (e.g. fluxos
Testes de
Especificao: requisitos explcitos de segurana (ex: Microsoft
Bob)

no esperados)
Implantao em ambiente de produo (e.g. aplicao de
patches de correo)

Italo Valcy Seg e Auditoria de SI, 2013.1

Ciclo de desenv. de software seguro

Wysopal et al (2006)

Italo Valcy Seg e Auditoria de SI, 2013.1

OWASP
Open Web Application Security Project
Divulgar aspectos de segurana de aplicaes web

Trabalhos relevantes em nosso contexto:


Top Ten (lista das principais vulnerabilidades em
aplicaes web)
Guia de desenvolvimento (descreve melhores prticas
para dev. seguro em JEE, ASP, .NET, PHP)
Guia de testes (metodologia e procedimentos para testes
de invaso de app web caixa preta e cinza)
WebScarab (proxy entre navegador e servidor)
WebGoat (app de exemplo para ensino)
Italo Valcy Seg e Auditoria de SI, 2013.1

Arquitetura e tecnologias
Inicialmente os servidores web forneciam
contedo esttico
Geralmente o usurio no fornecia dados
Vulnerabilidades apenas nas plataformas
subjacentes e S.O.

Atualmente os usurios interagem de forma


dinmica:
Envio/Modificao de dados
Vulnerabilidades na forma como os dados so
inseridos/modificados
Italo Valcy Seg e Auditoria de SI, 2013.1

Arquitetura e tecnologias
Inicialmente:
Todo o fluxo de processamento da aplicao
implementado de forma programtica e direta

Sistemas modernos usam o modelo de ncamadas


Camada de apresentao
Lgica de negcio
Camada de dados

Italo Valcy Seg e Auditoria de SI, 2013.1

Arquitetura e tecnologias
Topologia de uma aplicao n-camadas

Italo Valcy Seg e Auditoria de SI, 2013.1

Arquitetura e tecnologias
Topologia de uma aplicao n-camadas

Italo Valcy Seg e Auditoria de SI, 2013.1

Reviso de criptografia
Fundamentos de criptografia
Criptografia clssica
Criptografia assimtrica
Infraestrutura de chaves pblicas

Aplicaes prticas
SSL Secure Socket Layer
Outras aplicaes

Italo Valcy Seg e Auditoria de SI, 2013.1

Reviso de criptografia
Criptografia
Criptografia (krypts, escondido, grphein,
escrita)
Oculta mensagens de terceiros (legvel apenas para o
destinatrio)

Criptoanlise
Decodificar mensagem sem conhecer a chave secreta

Esteganografia
Ocultar mensagens dentro de outras

Italo Valcy Seg e Auditoria de SI, 2013.1

Definies
Texto claro
Texto original, no cifrado

Texto cifrado
Texto ilegvel, no compreensvel

Cifrar
Transformar texto claro em texto cifrado

Decifrar
Transformar texto cifrado em texto claro

Chave
Conjunto de dados utilizados para cifrar e decifrar

Italo Valcy Seg e Auditoria de SI, 2013.1

Criptografia

Italo Valcy Seg e Auditoria de SI, 2013.1

Criptografia moderna
Conjunto de tcnicas matemticas e computacionais
usadas para:
Confidencialidade: informao legvel apenas
para pessoas autorizadas
Integridade: informao no alterada de maneira
no autorizada ou desconhecida
Irretratabilidade (no repdio): evitar que
entidades neguem aes previamente executadas
Autenticidade: corroborar a identidade da
entidade ou da origem da informao
Italo Valcy Seg e Auditoria de SI, 2013.1

Cifras simtricas
Fcil computacionalmente determinar uma chave a
partir de outra
Na prtica elas so iguais

Vantagens:
Algoritmos rpidos
Chaves relativamente pequenas

Desvantagens
Nmero de chaves em uma rede tende a ser grande
Pr-conhecimento ou compartilhamento da chave em
meio inseguro (Diffie-Hellman)
Italo Valcy Seg e Auditoria de SI, 2013.1

Cifras simtricas
Cifradores de blocos: divide a mensagem em blocos
de tamanho fixo (ex: 128 bits)
Exemplo: DES, AES

Italo Valcy Seg e Auditoria de SI, 2013.1

Cifras simtricas
Cifradores de fluxo: cifra cada digito do texto plano
por vez
RC4

Italo Valcy Seg e Auditoria de SI, 2013.1

Cifras simtricas
Como distribuir as chaves de maneira segura?
Como verificar se a mensagem no foi
modificada?
Como ter certeza que a mensagem foi realmente
enviada por quem diz ter enviado?

Italo Valcy Seg e Auditoria de SI, 2013.1

Criptografia Assimtrica
Par de chaves
Pblica e Privada

Confidencialidade

Italo Valcy Seg e Auditoria de SI, 2013.1

Criptografia Assimtrica
Par de chaves
Pblica e Privada

Autenticidade

Italo Valcy Seg e Auditoria de SI, 2013.1

Criptografia Assimtrica
Diffie Hellman, 1976

Principais algoritmos:
RSA (Rivest, Shamir e Adleman, 1977)
DSA (NSA)
ECDSA

Italo Valcy Seg e Auditoria de SI, 2013.1

Funes de Hash
Procedimento ou funo matemtica para
transformar um conjunto de dados em um
outro conjunto de tamanho fixo (resumo
criptogrfico)

Propriedades
Resistncia da pr-imagem: dado h(x),
computacionalmente infactvel encontrar x
Resistncia da segunda pr-imagem:
dado h(x), computacionalmente infactvel
encontrar y!=x | h(y) = h(x)
Resistncia a coliso: x, y quaisquer |
h(x) != h(y)
Italo Valcy Seg e Auditoria de SI, 2013.1

Funes de Hash
Exemplos de uso:
Proteo de senhas
Verificao de integridade de arquivos

Italo Valcy Seg e Auditoria de SI, 2013.1

Assinatura digital
Anlogo digital do conceito de assinatura de um
documento.

Permite:
Integridade
Autenticidade
No repdio

Italo Valcy Seg e Auditoria de SI, 2013.1

Assinatura digital

Italo Valcy Seg e Auditoria de SI, 2013.1

Problemas vista: coliso de hash


O hash tem tamanho fixo. Ento existe um nmero
finito de hashes

Existem infinitas mensagens...


Logo:
Mais de uma mensagem tem o mesmo hash
=
Coliso de hash

Italo Valcy Seg e Auditoria de SI, 2013.1

Coliso de hash

Italo Valcy Seg e Auditoria de SI, 2013.1

Coliso de hash
possvel? Sim... mas uma boa funo hash tem as
seguintes caractersticas:

difcil, tendo h(m), achar m


difcil, tendo m1, achar m2 tal que h(m1)=h(m2)

Mais difcil que encontrar uma coliso,


encontrar uma coliso til.
Quanto tempo voc quer que a assinatura
digital continue vlida?

Italo Valcy Seg e Auditoria de SI, 2013.1

Criptografia Assimtrica
Como distribuir as chaves de maneira segura?
Como verificar se a mensagem no foi
modificada?
Como ter certeza que a mensagem foi realmente
enviada por quem diz ter enviado?
Como vincular uma chave informao de
seu detentor?

Italo Valcy Seg e Auditoria de SI, 2013.1

Certificados Digitais
Objeto puramente digital

Contm informaes do detentor da chave


privada
Criado por uma entidade confivel
Possvel delimitar as suas possveis aplicaes
Fcil determinar se foi violado
Possvel verificar seu estado atual

Italo Valcy Seg e Auditoria de SI, 2013.1

Secure Socket Layer


Histrico
Criado em 1995 pela Netscape
Verso atualizada SSLv3
Verso padronizada pelo IETF: TLS (RFC5246 v1.2)

Motivao
Atender demandas por conexo mais seguras na Internet;

Objetivo
Prover servios de autenticao do servidor, comunicao
secreta e integridade dos dados;
Tornou-se um padro utilizado at hoje para prover
conexes seguras;

Italo Valcy Seg e Auditoria de SI, 2013.1

Secure Socket Layer


O protocolo SSL executa sobre os protocolos
TCP/IP e abaixo de procolos de alto nvel
(HTTP, IMAP, LDAP).
Prov os seguintes servios para
comunicaes na Internet:
Autenticao do servidor
Autenticao do cliente
Conexo encriptada

Italo Valcy Seg e Auditoria de SI, 2013.1

Secure Socket Layer


Criptografia SSL: segurana versus
desempenho
Definio da chave secreta: Cript. Assimtrica
Criptografia dos dados: Cript. Simtrica

Italo Valcy Seg e Auditoria de SI, 2013.1

Secure Socket Layer


SSL: Record Protocol + Handshake Protocol +
Alerts Protocol + Change CipherSpec Protocol
Record Protocol: define o formato usado na
transmisso dos dados
Handshake Protocol: definio dos parmetros
necessrio ao estabelecimento da conexo SSL
Alerts Protocol: define as mensagens de erro
(fatal e warning)
Change CipherSpec Protocol: Sinaliza o fim do
handshake e inicia a comunicao criptogafada

Italo Valcy Seg e Auditoria de SI, 2013.1

Secure Socket Layer


SSL: Record Protocol + Handshake Protocol +
Alerts Protocol + Change CipherSpec Protocol

Italo Valcy Seg e Auditoria de SI, 2013.1

Secure Socket Layer


SSL Handshake Protocol

Italo Valcy Seg e Auditoria de SI, 2013.1

Secure Socket Layer


SSL Record Protocol

Italo Valcy Seg e Auditoria de SI, 2013.1

Secure Socket Layer


Aplicaes
Qualquer comunicao de aplicao baseada em
TCP (LDAP, IMAP, POP, etc.)
Uso mais comum: HTTP + SSL == HTTPS
HTTPS (Secure HTTP) porta 443 invs da porta 80

Italo Valcy Seg e Auditoria de SI, 2013.1

Secure Socket Layer


SSL no Apache
Habilitar o mod_ssl
Obter/criar o certificado
Configurar um VirtualHost com SSL habilitado
(opcional) Verificar a confiabilidade da CA nos
clientes

Italo Valcy Seg e Auditoria de SI, 2013.1

Outras aplicaes
VPN Virtual Private Network
DNSSEC Extenso de Segurana do DNS
Assinatura/Criptografia de e-mails
Autenticao
Assinatura de documentos

Italo Valcy Seg e Auditoria de SI, 2013.1

Reviso HTTP
HTTP - HyperText Transmission Protocol o
protocolo usado na comunicao entre o
servidor Web e o Browser.
HTTP constitui a base sobre a qual o servidor
Web realiza suas operaes.
A idia inicial era a de que o HTTP deveria ser
um protocolo bem simples.
Mesmo aps vrias modificaes e melhorias, a
idia bsica do HTTP continua sendo a mesma,
simplicidade.
Italo Valcy Seg e Auditoria de SI, 2013.1

Reviso HTTP
Uma conexo HTTP feita como comandos
telnet, que por sua vez so formados por
mensagens texto trocadas atravs de uma
conexo TCP.
Um exemplo:
$telnetapp.dcc.ufba.br80
Trying200.17.147.9...
Connectedtoapp.dcc.ufba.br.
Escapecharacteris'^]'.
GET/~italo/helloworld.htmlHTTP/1.0
Host:app.dcc.ufba.br

A porta 80 a padro para conexes http


Italo Valcy Seg e Auditoria de SI, 2013.1

Reviso HTTP
A resposta tambm ser em texto-limpo:
HTTP/1.1200OK
Date:Sun,03May200914:14:42GMT
Server:Apache/2.2.9(Debian)mod_fastcgi/2.4.6
mod_ldap_userdir/1.1.14PHP/5.2.61+lenny2with
SuhosinPatchmod_python/3.3.1Python/2.5.2
mod_ssl/2.2.9OpenSSL/0.9.8gmod_perl/2.0.4Perl/v5.10.0
LastModified:Sun,03May200914:14:16GMT
ETag:"33daf3646902a92d1e00"
AcceptRanges:bytes
ContentLength:54
Connection:close
ContentType:text/html
<html>
<body>
<p>Helloworld!</p>
</body>
</html>
Italo Valcy Seg e Auditoria de SI, 2013.1

Servidor web
Mtodos
Mtodos
GET: solicita algum recurso como um arquivo ou um script CGI
HEAD: o mesmo que GET, porm retorna apenas o cabealho
da resposta.
POST: Envia dados para serem processados (ex. forms html)
PUT: Envia certo recurso.
DELETE: Exclui o recurso.
OPTIONS: Recupera os mtodos HTTP que o servidor aceita.
CONNECT: Serve para uso com um proxy que possa se tornar um
tnel SSL.

Italo Valcy Seg e Auditoria de SI, 2013.1

Servidor web
Cdigos de retorno
Resposta - Cdigos de retorno
1xx: Informational (Informao) utilizada para enviar
informaes para o cliente de que sua requisio foi recebida
e est sendo processada;
2xx: Success (Sucesso) indica que a requisio do cliente
foi bem sucedida;
3xx: Redirection (Redirecionamento) informa a ao
adicional que deve ser tomada para completar a requisio;
4xx: Client Error (Erro no cliente) avisa que o cliente fez
uma requisio que no pode ser atendida;
5xx: Server Error (Erro no servidor) ocorreu um erro no
servidor ao cumprir uma requisio vlida.

Italo Valcy Seg e Auditoria de SI, 2013.1

Servidor web
Cabealhos
Host
User-Agent
Accept: tipo de contedo aceito pelo cliente
Set-Cookie
Expires

Italo Valcy Seg e Auditoria de SI, 2013.1

Servidor web
Cookies
Dados enviados ao navegador pelo servidor, com objetivo de
lembrar informaes de um usurio
Expire: por quanto tempo o cookie vlido
Domain: define para quais domnios o cookie vlido
Path: Defini os caminhos para os quais o cookie vlido
Secure: Enviar cookies apenas via HTTPS
HttpOnly: quando configurado evita que cdigo no cliente
acesse os cookies (nem todo browser respeita)

Italo Valcy Seg e Auditoria de SI, 2013.1

Esquemas de codificao
Consiste em substituir elementos de um
conjunto por outro
Segurana de aplicaes web:
Proteo contra ataques (cross-site scripting)
Testes de invaso (construo de vetores de teste)
Contorno de filtros de entrada

Italo Valcy Seg e Auditoria de SI, 2013.1

Codificao de URL
Uma URL pode conter apenas caracteres
ASCII imprimveis (RFC 3986)
Caracteres reservados

Exemplo: espao (ASCII 32) mapeado para


%20 ou +

Italo Valcy Seg e Auditoria de SI, 2013.1

Codificao de URL

Italo Valcy Seg e Auditoria de SI, 2013.1

Codificao HTML
Codifica caracteres especiais em HTML:
&<nome da entidade>;
< codificado como &lt;

&#<nmero decimal>;
< codificado como &#60;

&#x<numero hexadecimal>;
< codificado como &#x3c;

Italo Valcy Seg e Auditoria de SI, 2013.1

Autenticao HTTP
Objetivo: autenticar usurios antes de acessar
recursos protegidos pelo servidor.
O protocolo HTTP fornece mecanismos de
autenticao nativos:
Basic
Digest

Italo Valcy Seg e Auditoria de SI, 2013.1

Autenticao Basic vs Digest


1 Cliente solicita recurso protegido do servidor
2 Servidor responde com 401 Unauthorized e o
cabealho WWW-Authenticate com o tipo de
autenticao
3 Usurio fornece login e senha, os quais so
enviados no cabealho Authorization
Basic: codificados em base64 (clear text)
Digest: protegido pelo MD5

4 Se as credenciais forem vlidas, o recurso


solicitado disponibilizado. As credenciais so
includas em toda requisio seguinte.
Italo Valcy Seg e Auditoria de SI, 2013.1

Autenticao Basic vs Digest


Exemplo (basic auth)

prompt$ echo -n "ZGF2MTB==" | base64 -d


Italo Valcy Seg e Auditoria de SI, 2013.1

Autenticao Basic vs Digest


Problemas

Impossibilidade de travamento por erros de


autenticao consecutivos
Inexistncia de mecanismo de encerramento
de sesso (apenas fechando o browser)

Italo Valcy Seg e Auditoria de SI, 2013.1

Prtica
Prtica: 01
./download-pratica.sh 01

Italo Valcy Seg e Auditoria de SI, 2013.1

Você também pode gostar