cjr apresenta: owasp top10
DESCRIPTION
O CJR Apresenta chega em sua segunda versão, de muitas, e dessa vez trás Thiago Stuckert e Leandro Silva dos Santos, formandos em Ciência da Computação, para falar de um assunto que jamais perderrá sua importância: Segurança na Web.Nessa palestra, serão apresentados os 10 maiores riscos no desenvolvimento para Web, apontados através do OWASP (Open Web Application Security Project), projeto que a cada 3 anos, realiza esse estudo sobre os riscos na Web.TRANSCRIPT
www.cjr.o
rg.br
@CJR_UnB
Apresenta:
2
10 maiores riscos em aplicações Web
Leandro Silva dos SantosThiago [email protected]
Novembro - 2010
3
Open Web Application Security Project (OWASP)
• Organização sem fins lucrativos.
• Desenvolve projetos na área de teste de segurança de aplicações e serviços Web.
• Site OWASP: http://www.owasp.org/
• Capítulo Brasília: http://goo.gl/iN9u4
4
OWASP TOP 10
• Documento de conscientização.
• Amplo consenso sobre as falhas de segurança.
• Link para o projeto - http://goo.gl/8OAK
5
A1 - FALHAS DE INJEÇÃOOWASP TOP 10
6
O que é?
• Injetar código que modifica a semântica da consulta.
• Toda entrada é má até que se prove o contrário.
• Falta de validação na entrada.
7
Injeção de SQL
• Structured Query Language (SQL)
• Inserir SQL em uma entrada de dados.
• Insert/Update/Delete ou operações administrativas.
8
Cenário
Fire
wal
l
Hardened OS
Web Server
App ServerFi
rew
all
Dat
abas
es
Lega
cy S
yste
ms
Web
Ser
vice
s
Dire
ctor
ies
Hum
an R
esrc
s
Billi
ng
Custom Code
APPLICATIONATTACK
Net
wor
k La
yer
Appl
icati
on L
ayer
Acco
unts
Fina
nce
Adm
inist
ratio
nTr
ansa
ction
s
Com
mun
icati
onKn
owle
dge
Mgm
tE-
Com
mer
ceBu
s. F
uncti
ons
HTTP request
SQL
query
DB Table
HTTP response
"SELECT * FROM accounts WHERE acct=‘’ OR 1=1--’"
1. Aplicação apresenta um formulário para o usuário.2. Usuário envia uma entrada maliciosa através do formulário.3. Aplicação transmite a consulta SQL para o BD.
Account Summary
Acct:5424-6066-2134-4334Acct:4128-7574-3921-0192Acct:5424-9383-2039-4029Acct:4128-0004-1234-0293
4. BD executa a consulta e retorna o resultado para a aplicação.
5. Aplicação apresenta o resultado para o usuário.
Account:
SKU:
Account:
SKU:
9
Injeção de SQL às cegas
• Mensagens genéricas.
• Consultas SQL retornam verdadeiro ou falso.
• 101 AND (SELECT ASCII(SUBSTR(first_name,1,1)) FROM user_data WHERE userid=15613) =$ --
• $ = [65, 122] (Todas as letras do alfabeto).
• Demo: Video
10
Proteção
• Prepared Statements (Consultas parametrizadas).
• Stored Procedures.
• Verificar todos os dados fornecidos pelo usuário.
• Enterprise Security API (ESAPI)
• Validação no lado do cliente.
11
Whitelist x Blacklist
• Blacklist é uma lista de entradas maliciosas.
• Whitelist é uma lista de entradas válidas.
• Whitelist é a mais recomendada.
• Expressões regulares.
12
Referências
• The real dirty of whitelist – http://goo.gl/ETxO9• OWASP Sqli - http://goo.gl/p0zea• OWASP Sqli Proteção - http://goo.gl/X8nI• OWASP Blind Sqli - http://goo.gl/JmnhW• OWASP Enterprise Security API- http://goo.gl/uAUq7• Rsnake Sqli Cheat Sheet: http://goo.gl/iXkxg• Outra cheat sheet - http://goo.gl/Obdz
13
A2 - CROSS SITE SCRIPTING (XSS)OWASP TOP 10
14
O que é?
• O problema: Entrada fornecida pelo usuário é inserida dinamicamente nas páginas sendo executada como código pelo navegador.
• Origem do termo.• Existem três tipos de XSS:• Não-Persistente. (Refletido)• Persistente. (Armazenado)• Baseado em DOM (persistente ou não)
15
Cenário Persistente
Aplicação com a vulnerabilidade XSS
3
2
Atacante prepara uma armadilha, atualizando seu perfil
Atacante armazena um script malicioso em uma página Web.
1
Vítima visita o perfil do atacante
Script envia silenciosamente para o atacante o session cookie da vítima
Script roda no navegador da vítima, tendo total acesso ao DOM e cookie.
Custom Code
Acco
unts
Fina
nce
Adm
inist
ratio
nTr
ansa
ction
s
Com
mun
icati
onKn
owle
dge
Mgm
tE-
Com
mer
ceBu
s. F
uncti
ons
16
Demo
• XSS persistente.
• Objetivo: Mostrar o cookie do usuário.
• Cookie permite o armazenamento da seção.
• Video
17
Impactos do XSS
• Sequestro de sessão de usuário.
• Roubo de dados sensíveis.
• Reescrita de página Web.
• Redirecionamento de página para sites falsos e/ou malware.
18
Proteção
• Fazer validação dos dados inseridos pelo usuário.
• Não renderizar dados digitados pelo usuário sem validação.
19
Referências
• OWASP XSS: http://goo.gl/OQjw0• OWASP DOM Based XSS: http://goo.gl/DRP5n• Artigo DOM Based XSS: http://goo.gl/A6Yka• Rsnake XSS Cheat Sheet: http://goo.gl/oNbL• Livro “XSS Attacks: Cross Site Scripting Exploits
and Defense” - http://goo.gl/unsrC• NoScript: http://goo.gl/HgJ8
20
A3 - FALHAS DE AUTENTICAÇÃO E GERENCIAMENTO DE SESSÃOOWASP TOP 10
21
O que é?
• HTTP é um protocolo stateless.
• SESSION ID.
• Logout, gerenciamento da senha e timeouts.
• Complicado de implementar de maneira segura.
22
Custom Code
Acco
unts
Fina
nce
Adm
inis
trati
onTr
ansa
ction
s
Com
mun
icati
onKn
owle
dge
Mgm
tE-
Com
mer
ceBu
s. F
uncti
ons1 Usuário envia credenciais
2Página utiliza reescrita de urlEx: Coloca a sessão na URL
3 Usuário clica no link http://www.hacker.com em um fórum
www.boi.com?JSESSIONID=9FA1DB9EA...
4
Atacante checa o log de www.hacker.come encontra o JSESSIONID da vítima
5 Atacante utiliza o JSESSIONID e toma controle da conta da vítima
Cenário
23
Demo
• A aplicação não implementa o SESSION ID de forma aleatória.
• O atacante utiliza um ataque força bruta para descobrir um SESSION ID válido.
• Video
24
Proteção
• Autenticação deve ser simples, centralizada e padronizada.
• Utilize SSL para proteger credenciais e session id`s.
• Verifique o certificado SSL.
• Examine todas as funções relacionadas à autenticação.
• Verifique se o logout realmente destrói a sessão.
25
Referências
• OWASP Authentication Cheat_Sheet- http://goo.gl/AVNQ6
• ESAPI Authenticator API- http://goo.gl/zHVDk
• Common Weakness Enumeration (CWE)
• CWE Entry 287 on Improper Authentication- http://goo.gl/VVKY0
26
A4 - REFERÊNCIA DIRETA INSEGURA AOS OBJETOS OWASP TOP 10
27
O que é?
• O acesso direto a um objeto não é verificado.
• Exemplo: http://www.exemplo.com/index.php?permissao=atendente
• Modificar ‘permissao’ para ‘admin’.
28
Demo
https://www.onlinebank.com/user?acct=6065
• O atacante nota que seu parametro ‘acct’ é 6065.
• Ele modifica o número para 6066.
• O atacante acessa informações da conta de outro usuário.
29
Erros comuns
– Listar apenas objetos que o usuário possui acesso, sem reforçar uma validação no acesso dos objetos os quais ele não possui acesso.
– Esconder em campos ocultos as referências dos objetos e não reforçar a autorização de acesso.
• Impacto típico:– Acesso a arquivos não autorizados.
30
Proteção
• Validação de referência direta– Verifique se o valor do parâmetro está formatado
apropriadamente.
– Verifique se o usuário tem permissão de acesso ao objeto referenciado.
– Verifique se o usuário possui permissão ao modo de acesso (leitura, escrita, alteração e exclusão).
31
Referências
• ESAPI Access Control API- http://goo.gl/wSB1k
• Application Security Verification Standard (ASVS)
• ASVS requirements area for Access Control (V4)- http://goo.gl/wAGr6
• CWE Entry 639 on Insecure Direct Object References- http://goo.gl/ACOdx
• CWE Entry 22 on Path Traversal- http://goo.gl/VqXlV
32
A5 - CROSS SITE REQUEST FORGERY (CSRF) OWASP TOP 10
33
O que é?
• Atacante forja uma requisição de um usuário já autenticado.
• Navegador da vítima é forçado a executar uma ação sem seu consentimento.
• Impactos típicos: acesso a informações sensíveis,
modificação de dados da conta.
34
3
2
Atacante cria uma armadilha em um site ou email1
Quando logada no site vulnerável, a vítima visita o site do atacante
O aplicação vulnerável recebe a requisição legítima da vítima e executa o comando da requisição
A tag <img> carregada pelo navegador envia uma requisição GET incluíndo as credenciais para a aplicação vulnerável
Custom Code
Acco
unts
Fina
nce
Adm
inis
trati
onTr
ansa
ction
s
Com
mun
icati
onKn
owle
dge
Mgm
tE-
Com
mer
ceBu
s. F
uncti
ons
Esconde em uma tag <img> um ataque contra uma aplicação vulnerável
Aplicação com uma vulnerabilidade CSRF
Video
Demo
35
Proteção
• Requerer uma segunda autenticação para funções sensíveis (captcha, tabela de senhas, geolocation).
• Adicionar um token secreto sensível a requisição.
• Armazenar um token simples em cada sessão e o armazenar em cada formulário ou link.
36
Referências
• Curso sobre CSRF- http://goo.gl/pGOZJ
• OWASP CSRF Proteção- http://goo.gl/uJ43O
• OWASP CSRFTester-CSRF Testing Tool- http://goo.gl/pq1zS
• ESAPI HTTPUtilitiesClass with AntiCSRFTokens- http://goo.gl/3Cq0t
• Evitar ataques de CSRF em java por Lucas Ferreira- http://goo.gl/AjrDv
37
A6 - CONFIGURAÇÃO INAPROPRIADA DE SEGURANÇA
OWASP TOP 10
38
O que é?
• Ocorre quando páginas do sistema estão disponíveis para serem acessadas por qualquer usuário.
• Exemplo:– O usuário tenta acessar urls padrões de páginas de
configuração.– http://exemplo.com/config
39
Proteção
• Verifique a configuração de todo o sistema, se há versões de bibliotecas desatualizadas.
• Analise os efeitos dos patches inseridos no seu ambiente.
40
Referências
• OWASP Development Guide: Chapter on Configuration http://goo.gl/6zc5e
• ASVS requirements area for Security Configuration (V12) http://goo.gl/wAGr6
• CWE Entry 2 on Environmental Security Flaws http://goo.gl/53vEl
• CIS Security Configuration Guides/Benchmarks http://goo.gl/vC73u
41
A7 - ARMAZENAMENTO INSEGURO - CRIPTOGRAFIA
OWASP TOP 10
42
O que é?
• Armazenar informação sensível de forma insegura.
• Quais são as informações sensíveis?
• Aonde armazená-las?
• Estão protegidas em todos os lugares?
• Conhecer as premissas de segurança do protocolo.
43
Impacto Típico
• Atacantes podem acessar informações sensíveis.
• Atacantes extraem informações secretas para utilizar em outros ataques.
• Perda de credibilidade da empresa.
44
Custom Code
Acco
unts
Fina
nce
Adm
inis
trati
onTr
ansa
ction
sCo
mm
unic
ation
Know
ledg
e M
gmt
E-Co
mm
erce
Bus.
Fun
ction
s
1
Vítima entra com o número do cartão de crédito em um formulário
2Ocorre um erro na aplicação e o número do
cartão de crédito do
usuário é armazenado no log
4 Um desenvolvedor malicioso rouba o número de vários cartões de crédito
Log files
3Os logs são acessíveis pelos desenvolvedores da
aplicação por propósitos de depuração de erros
Cenário
45
Proteção
• Identifique todos os dados sensíveis.
• Identifique o lugar aonde os dados serão armazenados.
• Use algoritmos fortes e bem conhecidos.
• Gerencie corretamente as chaves.
46
Referências
• ESAPI EncryptorAPI - http://goo.gl/y5FI5
• OWASP Development Guide: Chapter on Cryptography - http://goo.gl/0SaiU
• OWASP Code Review Guide: Chapter on Cryptography - http://goo.gl/KdBys
• CWE Entry 310 on Cryptographic Issues - http://goo.gl/QRO2E
47
A8 - FALHA DE RESTRIÇÃO DE ACESSO À URL
OWASP TOP 10
48
O que é?
• Algumas páginas não fazem verificação de acesso.
• Complemento da vulnerabilidade A4 - Referência direta insegura aos objetos
49
Cenário
• Um usuário comum loga no sistema e modificando uma url de uma página, consegue acessá-la como se fosse o administrador.
• http://exemplo.com/informacao/index.php
• http://exemplo.com/admin_informacao/index.php
50
Proteção
• Para cada URL:– Restrinja o acesso para usuários autenticados (se
não for público).– Aplique regras baseadas em permissões.– Desabilite o acesso de usuários não autenticados a
páginas que contenham logs, configurações e outros.
51
Referências
• OWASP Development Guide: Chapter on Authorization - http://goo.gl/bWfvF
• OWASP Article on Forced Browsing - http://goo.gl/I7jNs
• CWE Entry 285 on Improper Access Control (Authorization) - http://goo.gl/ZmcFO
52
A9 - PROTEÇÃO INSUFICIENTE NA CAMADA DE TRANSPORTE
OWASP TOP 10
53
O que é?
• Transmissão de dados sensíveis de forma insegura.
Firesheep
54
Custom Code
Empregados
Parceiro de negócioVítima externa
Backend Systems
Atacante externo
1
Um atacante externo rouba credenciais e dados da rede externa
2
Um atacante interno rouba credenciais e dados da rede interna
Atacante interno
Demo
Video
55
Proteção• Usar SSL/TLS em todas as conexões com dados
sensíveis.
• Assinar mensagens antes de transmiti-las.
• Gerenciar chaves corretamente.
• Verificar certificados SSL antes de usá-los.• (origem, autoassinados)
56
Referências
• Firesheep - http://goo.gl/yEcU
• Blacksheep - http://goo.gl/3dagf
• HTTPS Everywhere - http://goo.gl/fsKV
• OWASP Proteção na Camada de Transporte - http://goo.gl/McooF
57
A10 - ENCAMINHAMENTO E REDIRECIONAMENTO SEM VALIDAÇÃO
OWASP TOP 10
58
Redirecionamento sem validação
3
2
Atacante envia um email para sua vítimaFrom: Serviços internosSubject: Sua restituição de impostosNossos registros mostram que o senhor possui impostos a restituir, por favor clique aqui.
1
A aplicação redireciona a vítima
A requisição envia para o site vulnerável o parâmetro, sem ser validado. Redirecionando a vítima para o site do atacante.
Custom Code
Acc
ount
s
Fina
nce
Adm
inis
trati
on
Tran
sacti
ons
Com
mun
icati
on
Know
ledg
e M
gmt
E-Co
mm
erce
Bus.
Fun
ction
s
4 Evil site instala um malware na vítima
A vítima clica e o endereço possue um parâmetro sem validação
Evil Site
http://www.irs.gov/taxrefund/claim.jsp?year=2006&
… &dest=www.evilsite.com
59
Encaminhamento sem validação
2
O atacante envia um ataque para uma página vulnerável1
A aplicação autoriza a requisição
A página requisitada possui acesso a uma área restrita. E o atacante consegui ser encaminhado para esta página, burlando o controle de acesso.
3 Falha a autorização do encaminhamento e o atacante burla o controle de acesso.
public void doPost( HttpServletRequest request, HttpServletResponse response) {
try {String target =
request.getParameter( "dest" ) );...
request.getRequestDispatcher( target ).forward(request, response);
}catch ( ...
Filtro
public void sensitiveMethod( HttpServletRequest request, HttpServletResponse response) {
try {//
Do sensitive stuff here....
}catch ( ...
60
Proteção
• Use encaminhamento e redirecionamento, somente quando necessário.
• Caso use, não permita que o usuário defina destino na URL.
• Valide cada parâmetro para garantir sua corretude e permissão de acesso.
61
Referências
• OWASP Article on Open Redirects -http://goo.gl/vEAKE
• ESAPI SecurityWrapperResponsesendRedirect() method - http://goo.gl/UzsA9
• CWE Entry 601 on Open Redirects - http://goo.gl/z93EU
• WASC Article on URL Redirector Abuse - http://goo.gl/tshz9
62
2007 x 2010OWASP Top 10 – 2007 (Previous) OWASP Top 10 – 2010 (New)
A2 – Injection Flaws A1 – Injection
A1 – Cross Site Scripting (XSS) A2 – Cross Site Scripting (XSS)
A7 – Broken Authentication and Session Management A3 – Broken Authentication and Session Management
A4 – Insecure Direct Object Reference A4 – Insecure Direct Object References
A5 – Cross Site Request Forgery (CSRF) A5 – Cross Site Request Forgery (CSRF)
<was T10 2004 A10 – Insecure Configuration Management> A6 – Security Misconfiguration (NEW)
A8 – Insecure Cryptographic Storage A7 – Insecure Cryptographic Storage
A10 – Failure to Restrict URL Access A8 – Failure to Restrict URL Access
A9 – Insecure Communications A9 – Insufficient Transport Layer Protection
<not in T10 2007> A10 – Unvalidated Redirects and Forwards (NEW)
A3 – Malicious File Execution <dropped from T10 2010>
A6 – Information Leakage and Improper Error Handling <dropped from T10 2010>
+
+
--
=
=
=
63
Perguntas?
Apoio: