SEGURANÇA DE APLICAÇÕES NA WEB Aluno: Thiago Augusto Lopes Genez Orientador: Prof. Dr. Mario...

Preview:

Citation preview

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

Recommended