Escolar Documentos
Profissional Documentos
Cultura Documentos
Seguro e Segurança em
Aplicações Web
Riscos de Segurança em
Aplicações Web
Introdução
Módulo 6
Agenda
Módulo 6 OWASP
• Comunidade aberta dedicada a capacitar organizações a desenvolver,
adquirir e manter aplicações confiáveis
Principais projetos:
– Top 10
– Testing Guide
– ZAP
– Dependency Check
www.owasp.org
Riscos de Segurança em
Aplicações Web
O que é?
• Documento com 10 riscos de segurança mais críticos em aplicações Web
Principais Objetivos
Módulo 6 Injeção
2017 A1: Injeção
Modelo de interação: Usuário – Servidor – Banco de dados
Definição
Falhas de injeção ocorrem quando dados não confiáveis são enviados para um
interpretador como parte de um comando ou consulta legítima.
Cenário de Ataque
Verdade Absoluta
Comentário
Cenário de Ataque
String sql = "select * from tabela_usuarios where login='" + campo_login +"' and senha='" + campo_senha + "'";
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(sql);
if (rs.next())
System.out.println("Usuário Autenticado.");
else
System.out.println("Usuário ou Senha incorretos.");
Impacto
Muitas aplicações ainda são suscetíveis, mesmo sendo muito simples evitar
Impacto
2017 A1: Injeção
Impacto
Como Evitar?
1. Usar Prepared Statement nas consultas
String sql = "SELECT * FROM tabela_usuarios WHERE login = ? AND senha = ?";
PreparedStatement prepStmt = con.prepareStatement(sql);
prepStmt.setString(1,login);
prepStmt.setString(2,senha);
ResultSet rs = prepStmt.executeQuery();
2. Lista Branca:
– Validar dados de entrada aceitos no servidor
– Verificar por valores esperados e rejeitar os demais
Definição
Fragilidades na autenticação e gerenciamento de sessão permitem que um
atacante assuma a identidade de um usuário, facilitando assim o vazamento de
informações.
Cenários de Ataques
Cenário 1: Reserva de Passagem
Aplicação suporta reescrita de URL, colocando IDs de sessão na URL
http://example.com/sale/saleitems;jsessionid=2P0OC2JSNDLPSKHCJUN2JV?dest=Hawaii
Seus amigos poderão acessar sua sessão, dados pessoais, cartão de crédito,...
2017 A2: Quebra de Autenticação
Cenários de Ataques
Cenário 2: Timeout de Sessão
Tempo de expiração da aplicação não está definido corretamente.
Usuário utiliza computador público e em vez de selecionar “logout” ele
simplesmente fecha o navegador.
Atacante usa o computador mais tarde e o navegador ainda está autenticado.
Impactos
• Contas de usuários comprometidas ou sessões violadas (hijacked)
• Uma vez violada, o atacante poderá fazer tudo aquilo que a vítima tem
privilégio de fazer
Como Evitar?
1. Autenticação deve ser simples, centralizada e padronizada (CAS+Gerid)
2. TLS deve proteger o tempo todo, tanto as credenciais quanto o Session ID:
autenticação e navegação
Como Evitar?
7. Gerar novos identificadores de sessão com elevado nível de entropia.
Definição
Dados sensíveis são expostos a pessoas não autorizadas: credenciais de acesso,
números de cartão de crédito, informações pessoais, etc.
Cenários de Ataques
Cenário 1: Armazenamento incorreto de senha
• Senhas sendo armazenadas de modo incorreto: hashes vulneráveis ou sem sal.
Esses tipo de hash pode ser facilmente quebrado através de rainbow table
Impactos
• Comprometimento de dados que deveriam estar protegidos: Dados pessoais,
credenciais de acesso, dados médicos, cartões de crédito, ...
Como Evitar?
1. Identificar e criptografar todos os dados sensíveis em repouso e em trânsito
Definição
Ocorre quando dados não confiáveis inseridos em XML contendo referência a
entidade externa são processados com um analisador de XML (XML parser)
configurado de forma insegura
Cenários de Ataques
Cenário 1: Atacante tenta extrair dados do servidor
Atacante intercepta requisição XML para reiniciar a senha e altera a mesma para
acessar arquivos no servidor
POST /forgot_pass HTTP/1.1
Host: shop.com
User-Agent: Mozilla/5.0
POST /forgot_pass HTTP/1.1 Accept-Language: en-US
Host: shop.com Connection: keep-alive
User-Agent: Mozilla/5.0
Accept-Language: en-US <?xml version="1.0"?>
Connection: keep-alive <!DOCTYPE forgot_pass [
<!ELEMENT field ANY>
<forgotpass> <!ENTITY xxe SYSTEM "file:///etc/passwd" >]>
<user> admin@shop.com </user>
</forgotpass> <forgotpass>
<user>
<field name=“id”> &xxe; </field>
</user>
</forgotpass>
2017 A4: Entidades Externas XML (XXE)
Cenários de Ataques
HTTP/1.0 200 OK
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
(...)
2017 A4: Entidades Externas XML (XXE)
Cenários de Ataques
Cenário 2: Atacante tenta um ataque de negação de serviço
Impactos
• Vazamento de dados, atacante pode recuperar arquivos do servidor
Como Evitar?
1. Maneira mais segura é desabilitando o processamento de entidade externa
Definição
Estão relacionada as restrições sobre aquilo que os usuários autenticados são
autorizados a fazer.
Cenário de Ataque 1
2017 A5: Controle de Acesso Ineficiente
Cenário de Ataque 2
Usuário autenticado força navegação em URLs que ele não deveria ter acessa
– http://example.com/app/getappInfo
– http://example.com/app/admin_getappInfo
Impactos
• Impactos na confidencialidade, integridade e disponibilidade das informações
referenciadas pelo parâmetro vulnerável
Como Evitar?
1. Módulo de autorização consistente, que negue todo acesso por padrão,
exigindo papel específico no acesso a todas funções (ASDS).
3. Utilizar identificadores que possam ser expostos com segurança. Por exemplo,
funções hash ao invés de números incrementais.
Riscos de Segurança em
Aplicações Web
Definição
O sistema onde a aplicação está inserida possui muitas camadas como rede, SO,
servidores web e de aplicação, frameworks, bibliotecas, banco de dados, etc.
Cenários de Ataque
• A listagem de diretórios ativada no servidor
• Classes, usuários, serviços de teste não retirados quando forem pra produção.
Impacto
• Frequentemente proporciona ao atacante acesso não autorizado a dados ou
funcionalidades do sistema
Como Evitar?
1. Varreduras e auditorias periódicas para detectar vulnerabilidades nas
configurações ou correções ausentes
Definição
Falhas XSS ocorrem sempre que uma aplicação recebe dados não confiáveis e os
envia ao navegador sem validação ou filtro adequados.
Permite que um atacante injete scripts maliciosos que serão executados pelo
navegador.
Cenário de Ataque
XSS Persistente Código malicioso é
armazenado na aplicação.
Ex: Comentário em um
blog com JS malicioso.
Cenário de Ataque
XSS Refletido
Código malicioso é
enviado através de um
link.
Impactos
• Praticamente, metade das aplicações são vulneráveis a XSS
Veracode, 2019
Como Evitar?
Nunca confiar nos dados vindo do usuário:
1. Validação de dados:
– Filtrar adequadamente todos os dados de entrada
– Lista branca
Definição
Serialização é o processo de converter um objeto numa representação/formato em
que possa ser armazenado ou transmitido com uma maior facilidade
Definição
Desserializar significa recuperar dados (ou estado de um objeto) a partir de um
conjunto de bytes, garantindo que eles representem as mesmas informações.
Cenário de Ataque 1
Um fórum utiliza serialização para salvar um ‘super cookie’. Este contém ID do
usuário, papel, hash de senha e outro estado:
a:4:{i:0;i:132;i:1;s:7:"Mallory";i:2;s:4:"user";i:3;s:32:"b6a8b3bea87fe0e05022f8f3c88bc960";}
Uma atacante altera o objeto serializado para dar para um determinado usuário
privilégio de administrador
a:4:{i:0;i:1;i:1;s:5:"Alice";i:2;s:5:"admin";i:3;s:32:"b6a8b3bea87fe0e05022f8f3c88bc960";}
2017 A8: Desserialização Insegura
Cenário de Ataque 2
O carrinho de compras de um usuário é salvo como um objeto serializado
Atacante altera preço na esperança que aplicação não cheque o objeto serializado
Cenário de Ataque 2
No caso de desserialização insegura, a aplicação utilizará os dados sem validação
Impactos
• Essas falhas podem levar a:
– Execução remota de códigos
– Ataques de negação de serviço
– Ataques ao controle de acesso
– Abusos na lógica da aplicação
2017 A8: Desserialização Insegura
Como Evitar?
• Solução mais segura é não aceitar objetos serializados de fontes não confiáveis
Definição
Registo e monitoramento insuficientes permite que os atacantes possam abusar
do sistema de forma persistente, usar como entrada para atacar outros sistemas e
que alterar, extrair ou destruir dados.
Cenários de Ataque
• Eventos como autenticação e falhas de autenticação não registrados em logs
Impacto
• Muitos ataques bem sucedidos começam com a varredura automática de
vulnerabilidades.
• A não detecção dessas varreduras aumenta a taxa de sucesso para perto dos
100%.
2017 A10: Registro e Monitoração Insuficiente
Como Evitar
• Utilizar um mecanismo de log centralizado