SEGURANÇA DE APLICAÇÕES NA WEB Aluno: Thiago Augusto Lopes Genez Orientador: Prof. Dr. Mario...
Transcript of SEGURANÇA DE APLICAÇÕES NA WEB Aluno: Thiago Augusto Lopes Genez Orientador: Prof. Dr. Mario...
SEGURANÇA DE APLICAÇÕES NA WEB
Aluno: Thiago Augusto Lopes Genez
Orientador: Prof. Dr. Mario Lemes Proença Jr.
UNIVERSIDADE ESTADUAL DE LONDRINA
DEPARTAMENTO DE COMPUTAÇÃO
TRABALHO DE CONCLUSÃO DE CURSO
SUMÁRIO Introdução
Conceitos Básicos de Segurança
Os Ataques
Algoritmos Criptográficos
Protocolos de Segurança
Identificação Digital
Ferramentas de Auditoria de Segurança
Conclusão
INTRODUÇÃO
Aplicação WEB:
Acessada por um navegador WEB
Meio de comunicação
O canal é inseguro Internet
Comércio Eletrônico (E-commerce)
Transações Bancárias (Banking on-line)
INTRODUÇÃO Necessidade da Segurança
Falta de segurança básica facilita os ataques
Cada dia novos ataques são descobertos
Consequência dos ataques
Divulgação dos dados confidenciais
“Quebra” do sigilo Perda da confiabilidade pelo usuário.
Interrupção do serviço; transações fraudulentas; roubo ou modificação de dados
INTRODUÇÃO
Soluções: Criptografia; Protocolos criptográficos; Identificação digital; Ferramentas de auditoria.
Objetivo Garantir que as informações mantenham-se
intactas e protegidas durante a sua transmissão na Internet.
Garantir um ambiente WEB seguro.
CONCEITOS BÁSICOS DE SEGURANÇA
Serviços disponibilizados pela segurança:
Autenticação
Confidencialidade
Integridade
Não-repúdio
Controle de Acesso
Disponibilidade
CONCEITOS BÁSICOS DE SEGURANÇACARACTERÍSTICAS DOS ATAQUES
•Comportamento dos ataques
ATAQUES Motivos dos ataque na WEB
Páginas dinâmicas Código executados no cliente (script client-side) Problema: Entrada dos dados não são tratados Dados armazenados em Cookies
Tipos de Ataques na WEB:
1. Ataque de força bruta2. Ataque do Homem do Meio (Man-in-the-
middle)3. XSS (Cross Site Scripting)4. Injeção SQL
ATAQUES5. CSRF (Cross-site reference forgery)
6. Phishing
7. DNS Spoofing
8. Clickjacking
9. Negação de Serviço (DoS)
ALGORITMOS CRIPTOGRÁFICOS Origem etimológica grega:
Ckryptós “escondido” Gráphein “escrever”.
Objetivo:Texto legível Cifra texto ilegível
Divididos em:SimétricoAssimétricoHash
ALGORITMOS CRIPTOGRÁFICOSSIMÉTRICOS
Algoritmo Bloco Chave Informações
RC4 Fluxo 1-2048 bitsInternet Banking Caixa
Econômica Federal, Banco do Brasil, Itaú
RC5 32-128 bits 64-128 bits Chave 64 quebrada, chave 72 bits segura
RC6 128 bits 128-256 bits Ficou no 4° colocado do AES
DES 64 bits 64 bits Defasado, 1998 quebrado por hardware
TDES 64 bits 168 bits Comércio eletrônico PayPal
AES 128-256 bits 128-256 bits 2001-Rijndael, pagseguro (UOL)
Blowfish 64 ou 128 bits 128 bits Plataforma OpenBSD
Twofish 128-256 bits 256 bits Ficou no 3° colocado do AES
Serpent 128-256 bits 128-256 bits Ficou no 2° colocado do AES
ALGORITMOS CRIPTOGRÁFICOSASSIMÉTRICOS
Algoritmo Fornece Chave Informações
RSACriptografia
Assinatura digitalTroca de Chaves
1024-2048 bits
Utilizado na maioria dos certificados
digitais
Diffie-Hellman Troca de chaves 512-4096 bits
Necessita de mecanismo extra
para garantir autenticidade
DSA Assinatura Digital 1024 bits
Proposto em 1991 para ser o padrão para assinaturas
digitais
ECCCriptografia
Assinatura digitalTroca de Chaves
80-256 bitsDesafiar e concorrer
o RSA. Usado no DNSCurve
ECDSA Assinatura Digital 160 bits Concorrente ao DSA
ALGORITMOS CRIPTOGRÁFICOSFUNÇÕES HASH
Algoritmo Tamanho Hash Informações
MD5 128 bits Não é resistente a colisão (2008)
MD6 512 bits Não avançou para a segunda fase do concurso SHA-3 em julho 2009
SHA-1 160 bits Não é resistente a colisão
SHA-2 224, 256, 384, 512 bits
Nenhum tipo de ataque foi relatado e a partir de 2010 todas agencias
federais USA tem que substituir o SHA-1 para SHA-2
SHA-3 224, 256, 384, 512 bits
Concurso proposto pela NIST. (andamento na 2° fase, resultado
sairá em 2012)
PROTOCOLOS DE SEGURANÇA
Protocolos Ação Fornece Informações
SSL/TLS Entre as camadas de Transporte e a camada de aplicação
Criptografia (três tipos), Certificados Digitais
•Podem acoplar protocolos de alto nível: Ex, HTTPS•Ponto a Ponto
IPsec Na camada de Rede (pacote IP criptografado)
Autenticação, Criptografia e Gerenciamento de chaves
• Integrado no IPv6• Proteção nativa para todos os protocolos acima da camada de rede
WS-Security
Camada de aplicação
Criptografia XMLAssinatura XML
•Web Services•SOAP•Fim a Fim
DNSSec Serviço DNS Autenticação •Protege ataques DNS Spoofing (Falso DNS)
DNSCurve Serviço DNS AutenticaçãoCriptografia
•Protege ataques DoS
PROTOCOLOS DE SEGURANÇASSL/TLS X WS-SECURITY
•Informação está segura no canal•Protege toda a mensagem•Comunicação ponto a ponto
•Garante a segurança em todos os estágio da comunicação•Protege somente as porções da mensagem que precisa de segurança•Comunicação fim a fim
IDENTIFICAÇÃO DIGITAL Transações eletrônicas:
Integridade, autenticidade e confidencialidade Assinatura Digital
Bloco de dados criptografado anexado a mensagem Fornece: Autenticação, Integridade e Não repúdio Não garante a confidencialidade
IDENTIFICAÇÃO DIGITALCERTIFICADO DIGITAL
Distribuir as chaves públicas de pessoas físicas e/ou jurídicas de forma segura.
Autoridade Certificadora (AC) Terceiro Confiável
FERRAMENTAS DE AUDITORIA DE SEGURANÇA
Protocolos não garante a proteção na lógica da aplicação
Vulnerabilidade do software Entrada dados não são validados deixa a
aplicação instávelDisponibilizar os Cookies do browser
Ferramentas de auditoria Age como: “Homem do meio”Manipulações dos pedidos e respostas
HTTP/HTTPSTesta a segurança na camada de
aplicaçãoMinimiza as vulnerabilidades
FERRAMENTAS DE AUDITORIA DE SEGURANÇA
Funções\Ferramenta RatProxy
Web Scarab
ParosBurp
Proxy w3af
IBM AppScan
Licença Livre Sim Sim Sim Não Sim Não
Multiplataforma Sim Sim Sim Sim Sim Não
Manipula pedidos/resposta HTTP(S) Não Sim Sim Sim Sim Sim
Relatório detalhado Sim Não Sim Sim Sim Sim
Sugestão para Correção Não Não Não Não Não Sim
Suporte SSL/TLS Sim Sim Sim Sim Sim Sim
XSS, Injeção SQL, CSRF Sim Sim Sim Sim Sim Sim
Análise de Cookies Sim Sim Sim Sim Sim Sim
Análise de dados ocultos Não Não Sim Não Não Sim
Análise RESTful Não Sim Sim Não Sim Não
Ambiente Desenvolvimento Não Não Não Não Não Sim
SOLUÇÕES AOS ATAQUES
Ataque Meio Proteção
Força Bruta Lista Negra, Captcha,Criptografia Assimétrica
Homem do Meio SSL/TSL, WS-Security, Certificado Digital, HTTPS, IPSec
XSS (Cross Site Scripting) Validando a entrada dados(Nível de aplicação: auditoria de código)
Injeção SQL Validando a entrada dados(Nível de aplicação: auditoria de código)
CSRF (Cross-site reference forgery) Validando a entrada dados(Nível de aplicação: auditoria de código)
Phishing Validando a entrada dados(Nível de aplicação: auditoria de código)
DNS Spoofing DNSCurve, DNSSec, IPSec
Clickjacking Validando a entrada dados(Nível de aplicação: auditoria de código)
Negação de Serviço (DoS) Lista Negra, DNSCurve
CONCLUSÃO Base da segurança: Criptografia
Comunicação entre usuário final e a aplicação WEB:
Navegador WEB (browser)
Canal é inseguro Internet
Solução: Protocolos Criptográficos
Outra solução: identificação digital
CONCLUSÃO Com a falta de proteção na lógica da aplicação WEB
Entrada de dados não validados
Deixa a aplicação WEB instável facilita os ataques
Ferramentas de auditoria procura as vulnerabilidades
Aplicação WEB segura:
Segurança na camada de transporte
Segurança na camada de aplicação (lógica de programação)
OBRIGADO
UM MÓDULO DE SEGURANÇA PARA AUXILIAR
A COMUNICAÇÃO ENTRE APLICAÇÕES QUEUTILIZAM REDES
Aluno: Thiago Augusto Lopes Genez
Orientador: Prof. Dr. Mario Lemes Proença Jr.
UNIVERSIDADE ESTADUAL DE LONDRINA
DEPARTAMENTO DE COMPUTAÇÃORELATÓRIO DE ESTÁGIO
CURRICULAR
SUMÁRIO
Introdução
Terminologia
Engenharia do Software
Arquitetura
Ferramentas utilizadas
Visão Conceitual
Exemplo de uso em uma aplicação WEB
INTRODUÇÃO Módulo
Nome: The Rock (“A Rocha”) Desenvolvido em Java Camada de segurança Autenticação, Autorização, Criptografia e
Gerenciamento de Sessão Configurações pré estabelecidas Configurações customizadas Implementas as
interfaces
Objetivo Auxiliar a comunicação entre aplicações que utilizam
redes Promover a reusabilidade de código
TERMINOLOGIA Domínio (Realm):
Banco de dados o qual armazena os componentes para identificar as entidades da aplicação
Nome do usuário, permissões, papéis
Sujeito (Subject) Representação de um usuário a ser gerenciado pelo
módulo
Coleção de atributos (Principals) Coleção de atributos que identifica o usuário no
módulo Nome ID (identificador) IP
TERMINOLOGIA Credenciais
Informações secretas conhecida apenas pelo usuário usado para verificar a sua identidade
Permissão Representação atômica da capacidade de executar
uma ação
Papéis (Roles) Conjuntos de permissões
ENGENHARIA DO SOFTWARE Metodologia baseada: ICONIX
Modelo de Domínio
Modelo de Caso de Uso
Diagrama de Sequencia
ENGENHARIA DO SOFTWAREMODELO DE DOMÍNIO
ARQUITETURA
FERRAMENTAS UTILIZADAS JAAS: API para autorização e autenticação em Java
JCA e JCE: API de criptografia em Java
SLF4J: API de Logs em Java
Eclipse: Ambiente de desenvolvimento
Subversion: Controle de versão
Apache Maven: Ferramenta para gerenciamento e automação de projetos em Java.
JUnit: API para realizar testes da linguagem Java
VISÃO CONCEITUAL
EXEMPLO DE USO EM UMA APLICAÇÃO WEB
EXEMPLO DE USO EM UMA APLICAÇÃO WEBCOMO USAR?
Criar um .jar do módulo The Rock Adicionar o.jar na aplicação WEB que o
utilizará Configurar o arquivo web.xml
Determinar o The Rock como o filtro principal Indicar qual o domínio que contem os usuários Indicar quais página da aplicação que o usuário
deve estar autenticado Indicar quais página da aplicação que o usuário
pode acessar Utilizar as classes desenvolvidas Implementar as interfaces configuração
customizada
EXEMPLO DE USO EM UMA APLICAÇÃO WEBWEB.XML
<filter> <filter-name>TheRockFilter</filter-name>
...
[main]
realm = dao.RealmMySql
[filters]
roles.naoAutorizado = /naoAutorizado.jsp
[urls]
/admin/** = authc, roles[admin]
/restrita/** =authc
...
</filter>
<filter-mapping>
<filter-name>TheRockFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
EXEMPLO DE USO EM UMA APLICAÇÃO WEBTAGS CUSTOMIZADAS JSP
<%-- Importanto as tag TheRock no JSP --%>
<%@ taglib prefix="rock" uri="/tags/theRockTag" %>
<rock:temRole name="admin">......</rock:temRole>
<rock:semRole name="admin">......</rock:semRole >
<rock:semPermissao name="usuario:remover“>..</rock:semPermissao>
<rock:temPermissao name="usuario:remover“>..</rock:temPermissao>
<rock:autenticado>.....</rock:autenticado>
<rock:naoAutenticado>.....</ rock:naoAutenticado >
<rock:usuario>....</rock:usuario>
<rock:visitante>....</rock:visitante>
<rock:principal/>... <rock:principal/>
OBRIGADO