63
www.cjr.org.b r @CJR_UnB Apresenta:

CJR Apresenta: OWASP TOP10

  • Upload
    cjr-unb

  • View
    1.769

  • Download
    3

Embed Size (px)

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.

Citation preview

Page 1: CJR Apresenta: OWASP TOP10

www.cjr.o

rg.br

@CJR_UnB

Apresenta:

Page 2: CJR Apresenta: OWASP TOP10

2

10 maiores riscos em aplicações Web

Leandro Silva dos SantosThiago [email protected]

[email protected]

Novembro - 2010

Page 3: CJR Apresenta: OWASP TOP10

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

Page 4: CJR Apresenta: OWASP TOP10

4

OWASP TOP 10

• Documento de conscientização.

• Amplo consenso sobre as falhas de segurança.

• Link para o projeto - http://goo.gl/8OAK

Page 5: CJR Apresenta: OWASP TOP10

5

A1 - FALHAS DE INJEÇÃOOWASP TOP 10

Page 6: CJR Apresenta: OWASP TOP10

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.

Page 7: CJR Apresenta: OWASP TOP10

7

Injeção de SQL

• Structured Query Language (SQL)

• Inserir SQL em uma entrada de dados.

• Insert/Update/Delete ou operações administrativas.

Page 8: CJR Apresenta: OWASP TOP10

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:

Page 9: CJR Apresenta: OWASP TOP10

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

Page 10: CJR Apresenta: OWASP TOP10

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.

Page 11: CJR Apresenta: OWASP TOP10

11

Whitelist x Blacklist

• Blacklist é uma lista de entradas maliciosas.

• Whitelist é uma lista de entradas válidas.

• Whitelist é a mais recomendada.

• Expressões regulares.

Page 12: CJR Apresenta: OWASP TOP10

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

Page 13: CJR Apresenta: OWASP TOP10

13

A2 - CROSS SITE SCRIPTING (XSS)OWASP TOP 10

Page 14: CJR Apresenta: OWASP TOP10

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)

Page 15: CJR Apresenta: OWASP TOP10

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

Page 16: CJR Apresenta: OWASP TOP10

16

Demo

• XSS persistente.

• Objetivo: Mostrar o cookie do usuário.

• Cookie permite o armazenamento da seção.

• Video

Page 17: CJR Apresenta: OWASP TOP10

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.

Page 18: CJR Apresenta: OWASP TOP10

18

Proteção

• Fazer validação dos dados inseridos pelo usuário.

• Não renderizar dados digitados pelo usuário sem validação.

Page 19: CJR Apresenta: OWASP TOP10

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

Page 20: CJR Apresenta: OWASP TOP10

20

A3 - FALHAS DE AUTENTICAÇÃO E GERENCIAMENTO DE SESSÃOOWASP TOP 10

Page 21: CJR Apresenta: OWASP TOP10

21

O que é?

• HTTP é um protocolo stateless.

• SESSION ID.

• Logout, gerenciamento da senha e timeouts.

• Complicado de implementar de maneira segura.

Page 22: CJR Apresenta: OWASP TOP10

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

Page 23: CJR Apresenta: OWASP TOP10

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

Page 24: CJR Apresenta: OWASP TOP10

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.

Page 25: CJR Apresenta: OWASP TOP10

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

Page 26: CJR Apresenta: OWASP TOP10

26

A4 - REFERÊNCIA DIRETA INSEGURA AOS OBJETOS OWASP TOP 10

Page 27: CJR Apresenta: OWASP TOP10

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’.

Page 28: CJR Apresenta: OWASP TOP10

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.

Page 29: CJR Apresenta: OWASP TOP10

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.

Page 30: CJR Apresenta: OWASP TOP10

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).

Page 31: CJR Apresenta: OWASP TOP10

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

Page 32: CJR Apresenta: OWASP TOP10

32

A5 - CROSS SITE REQUEST FORGERY (CSRF) OWASP TOP 10

Page 33: CJR Apresenta: OWASP TOP10

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.

Page 34: CJR Apresenta: OWASP TOP10

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

Page 35: CJR Apresenta: OWASP TOP10

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.

Page 36: CJR Apresenta: OWASP TOP10

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

Page 37: CJR Apresenta: OWASP TOP10

37

A6 - CONFIGURAÇÃO INAPROPRIADA DE SEGURANÇA

OWASP TOP 10

Page 38: CJR Apresenta: OWASP TOP10

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

Page 39: CJR Apresenta: OWASP TOP10

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.

Page 40: CJR Apresenta: OWASP TOP10

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

Page 41: CJR Apresenta: OWASP TOP10

41

A7 - ARMAZENAMENTO INSEGURO - CRIPTOGRAFIA

OWASP TOP 10

Page 42: CJR Apresenta: OWASP TOP10

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.

Page 43: CJR Apresenta: OWASP TOP10

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.

Page 44: CJR Apresenta: OWASP TOP10

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

Page 45: CJR Apresenta: OWASP TOP10

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.

Page 46: CJR Apresenta: OWASP TOP10

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

Page 47: CJR Apresenta: OWASP TOP10

47

A8 - FALHA DE RESTRIÇÃO DE ACESSO À URL

OWASP TOP 10

Page 48: CJR Apresenta: OWASP TOP10

48

O que é?

• Algumas páginas não fazem verificação de acesso.

• Complemento da vulnerabilidade A4 - Referência direta insegura aos objetos

Page 49: CJR Apresenta: OWASP TOP10

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

Page 50: CJR Apresenta: OWASP TOP10

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.

Page 51: CJR Apresenta: OWASP TOP10

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

Page 52: CJR Apresenta: OWASP TOP10

52

A9 - PROTEÇÃO INSUFICIENTE NA CAMADA DE TRANSPORTE

OWASP TOP 10

Page 53: CJR Apresenta: OWASP TOP10

53

O que é?

• Transmissão de dados sensíveis de forma insegura.

Firesheep

Page 54: CJR Apresenta: OWASP TOP10

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

Page 55: CJR Apresenta: OWASP TOP10

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)

Page 56: CJR Apresenta: OWASP TOP10

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

Page 57: CJR Apresenta: OWASP TOP10

57

A10 - ENCAMINHAMENTO E REDIRECIONAMENTO SEM VALIDAÇÃO

OWASP TOP 10

Page 58: CJR Apresenta: OWASP TOP10

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

Page 59: CJR Apresenta: OWASP TOP10

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 ( ...

Page 60: CJR Apresenta: OWASP TOP10

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.

Page 61: CJR Apresenta: OWASP TOP10

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

Page 62: CJR Apresenta: OWASP TOP10

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>

+

+

--

=

=

=