Italo Valcy Seg e Auditoria de SI, 2013.1
MATC99 Segurana e Auditoria de Sistemas de Informao
Italo Valcy
Segurana em Aplicaes web Introduo
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 vulnerabilidadesMcConnell, S. Code Complete:
Industry Average: "about 15 - 50 errors per 1000 lines of delivered codeabout 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
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)
Ciclo de desenv. de software seguro
Softwa
re pron
to: preo
cupa
o
com seg
urana
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 ProjectDivulgar 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 n-camadas
Camada de apresentao
Lgica de negcio
Camada de dados
Italo Valcy Seg e Auditoria de SI, 2013.1
Arquitetura e tecnologiasTopologia de uma aplicao n-camadas
Italo Valcy Seg e Auditoria de SI, 2013.1
Arquitetura e tecnologiasTopologia de uma aplicao n-camadas
Italo Valcy Seg e Auditoria de SI, 2013.1
Reviso de criptografia
Fundamentos de criptografiaCriptografia clssica
Criptografia assimtrica
Infraestrutura de chaves pblicas
Aplicaes prticasSSL Secure Socket Layer
Outras aplicaes
Italo Valcy Seg e Auditoria de SI, 2013.1
Reviso de criptografia
CriptografiaCriptografia (krypts, escondido, grphein, escrita)
Oculta mensagens de terceiros (legvel apenas para o destinatrio)
CriptoanliseDecodificar mensagem sem conhecer a chave secreta
EsteganografiaOcultar mensagens dentro de outras
Italo Valcy Seg e Auditoria de SI, 2013.1
Definies
Texto claroTexto original, no cifrado
Texto cifradoTexto ilegvel, no compreensvel
CifrarTransformar texto claro em texto cifrado
DecifrarTransformar texto cifrado em texto claro
ChaveConjunto 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
DesvantagensNmero 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 PrivadaConfidencialidade
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)
PropriedadesResistncia 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
HistricoCriado em 1995 pela Netscape
Verso atualizada SSLv3
Verso padronizada pelo IETF: TLS (RFC5246 v1.2)
MotivaoAtender demandas por conexo mais seguras na Internet;
ObjetivoProver 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
AplicaesQualquer comunicao de aplicao baseada em TCP (LDAP, IMAP, POP, etc.)
Uso mais comum: HTTP + SSL == HTTPSHTTPS (Secure HTTP) porta 443 invs da porta 80
Italo Valcy Seg e Auditoria de SI, 2013.1
Secure Socket Layer
SSL no ApacheHabilitar o mod_sslObter/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:
A porta 80 a padro para conexes http
$telnetapp.dcc.ufba.br80Trying200.17.147.9...Connectedtoapp.dcc.ufba.br.Escapecharacteris'^]'.GET/~italo/helloworld.htmlHTTP/1.0Host:app.dcc.ufba.br
Italo Valcy Seg e Auditoria de SI, 2013.1
Reviso HTTP
A resposta tambm ser em texto-limpo:
HTTP/1.1200OKDate:Sun,03May200914:14:42GMTServer:Apache/2.2.9(Debian)mod_fastcgi/2.4.6mod_ldap_userdir/1.1.14PHP/5.2.61+lenny2withSuhosinPatchmod_python/3.3.1Python/2.5.2mod_ssl/2.2.9OpenSSL/0.9.8gmod_perl/2.0.4Perl/v5.10.0LastModified:Sun,03May200914:14:16GMTETag:"33daf3646902a92d1e00"AcceptRanges:bytesContentLength:54Connection:closeContentType:text/html
Helloworld!
Italo Valcy Seg e Auditoria de SI, 2013.1
Servidor web
Mtodos
GET: solicita algum recurso como um arquivo ou um script CGIHEAD: 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.
Mtodos
Italo Valcy Seg e Auditoria de SI, 2013.1
Servidor web
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.
Cdigos de retorno
Italo Valcy Seg e Auditoria de SI, 2013.1
Servidor web
Host
User-Agent
Accept: tipo de contedo aceito pelo cliente
Set-Cookie
Expires
Cabealhos
Italo Valcy Seg e Auditoria de SI, 2013.1
Servidor web
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)
Cookies
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:&;
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 DigestExemplo (basic auth)
prompt$ echo -n "ZGF2MTB==" | base64 -d
Italo Valcy Seg e Auditoria de SI, 2013.1
Autenticao Basic vs Digest
Impossibilidade de travamento por erros de autenticao consecutivos
Inexistncia de mecanismo de encerramento de sesso (apenas fechando o browser)
Problemas
Italo Valcy Seg e Auditoria de SI, 2013.1
Prtica
Prtica: 01./download-pratica.sh 01
Slide 1Slide 2Slide 3Slide 4Slide 5Slide 6Slide 7Slide 8Slide 9Slide 10Slide 11Slide 12Slide 13Slide 14Slide 15Slide 16Slide 17Slide 18Slide 19Slide 20Slide 21Slide 22Slide 23Slide 24Slide 25Slide 26Slide 27Slide 28Slide 29Slide 30Slide 31Slide 32Slide 33Slide 34Slide 35Slide 36Slide 37Slide 38Slide 39Slide 40Slide 41Slide 42Slide 43Slide 44Slide 45Slide 46Slide 47Slide 48Slide 49Slide 50Slide 51Slide 52Slide 53Slide 54Slide 55Slide 56Slide 57Slide 58Slide 59Slide 60