Professional Documents
Culture Documents
de Sistemas de Informao
Segurana em Aplicaes web Introduo
Italo Valcy <italo@dcc.ufba.br>
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)
Wysopal et al (2006)
OWASP
Open Web Application Security Project
Divulgar aspectos de segurana de aplicaes web
Arquitetura e tecnologias
Inicialmente os servidores web forneciam
contedo esttico
Geralmente o usurio no fornecia dados
Vulnerabilidades apenas nas plataformas
subjacentes e S.O.
Arquitetura e tecnologias
Inicialmente:
Todo o fluxo de processamento da aplicao
implementado de forma programtica e direta
Arquitetura e tecnologias
Topologia de uma aplicao n-camadas
Arquitetura e tecnologias
Topologia de uma aplicao n-camadas
Reviso de criptografia
Fundamentos de criptografia
Criptografia clssica
Criptografia assimtrica
Infraestrutura de chaves pblicas
Aplicaes prticas
SSL Secure Socket Layer
Outras aplicaes
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
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
Criptografia
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
Cifras simtricas
Cifradores de fluxo: cifra cada digito do texto plano
por vez
RC4
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?
Criptografia Assimtrica
Par de chaves
Pblica e Privada
Confidencialidade
Criptografia Assimtrica
Par de chaves
Pblica e Privada
Autenticidade
Criptografia Assimtrica
Diffie Hellman, 1976
Principais algoritmos:
RSA (Rivest, Shamir e Adleman, 1977)
DSA (NSA)
ECDSA
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
Assinatura digital
Anlogo digital do conceito de assinatura de um
documento.
Permite:
Integridade
Autenticidade
No repdio
Assinatura digital
Coliso de hash
Coliso de hash
possvel? Sim... mas uma boa funo hash tem as
seguintes caractersticas:
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?
Certificados Digitais
Objeto puramente digital
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;
Outras aplicaes
VPN Virtual Private Network
DNSSEC Extenso de Segurana do DNS
Assinatura/Criptografia de e-mails
Autenticao
Assinatura de documentos
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
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.
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.
Servidor web
Cabealhos
Host
User-Agent
Accept: tipo de contedo aceito pelo cliente
Set-Cookie
Expires
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)
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
Codificao de URL
Uma URL pode conter apenas caracteres
ASCII imprimveis (RFC 3986)
Caracteres reservados
Codificao de URL
Codificao HTML
Codifica caracteres especiais em HTML:
&<nome da entidade>;
< codificado como <
&#<nmero decimal>;
< codificado como <
&#x<numero hexadecimal>;
< codificado como <
Autenticao HTTP
Objetivo: autenticar usurios antes de acessar
recursos protegidos pelo servidor.
O protocolo HTTP fornece mecanismos de
autenticao nativos:
Basic
Digest
Prtica
Prtica: 01
./download-pratica.sh 01