owasp top 10 - web security

38
Segurança Web OWASP 2013 – TOP 10

Upload: marlon-bernardes

Post on 24-May-2015

304 views

Category:

Technology


6 download

DESCRIPTION

Slides of the presentation about web security I gave at CWI. The slides are in portuguese.

TRANSCRIPT

Page 1: OWASP TOP 10 - Web Security

Segurança Web OWASP 2013 – TOP 10

Page 2: OWASP TOP 10 - Web Security
Page 3: OWASP TOP 10 - Web Security

; 10) Redirects e Forwards não validados

Page 4: OWASP TOP 10 - Web Security

• Aplicações web geralmente usam redirects e forwards para enviar usuários para outras páginas/sites. Sem a validação necessária, agressores podem redirecionar as vítimas para sites maliciosos OU utilizar forwards para acessar páginas não autorizadas.

10) Redirects e Forwards não validados

Como funciona?

Page 5: OWASP TOP 10 - Web Security

Exemplos:

1) http://www.meusite.com/redirect.jsp?url=virus.com

2) http://www.meusite.com/redirect.jsp?fwd=admin

10) Redirects e Forwards não validados

Page 6: OWASP TOP 10 - Web Security

Como evitar?

1) Evite forwards e redirects

2) Caso realmente sejam necessários, não utilize parâmetros do usuário para “definir” o destino;

3) Se os parâmetros não podem ser evitados (geralmente podem) verifique que o valor informado é válido para o usuário (whitelist)

10) Redirects e Forwards não validados

Page 7: OWASP TOP 10 - Web Security

; 9) Usar componentes com falhas de segurança

conhecidas

Page 8: OWASP TOP 10 - Web Security

Bibliotecas vulneráveis podem ser exploradas por usuários maliciosos. O impacto de falhas de segurança em bibliotecas/componentes pode variar bastante.

9) Usar bibliotecas com falhas de segurança conhecidas

Como funciona?

Page 9: OWASP TOP 10 - Web Security

1) É difícil.

2) Não usar nenhuma biblioteca?

3) Verificar o site/bugzilla/changelog/issues das bibliotecas que estão sendo utilizadas, incluindo as dependências;

4) Manter as bibliotecas atualizadas

9) Usar bibliotecas com falhas de segurança conhecidas

Como evitar?

Page 10: OWASP TOP 10 - Web Security

; 8) CSRF (Cross-Site Request Forgery)

Page 11: OWASP TOP 10 - Web Security

Como funciona?

1) Usuário se autentica normalmente no site exemplo.com.br

2) Sem efetuar logout, o usuário visita o site virus.com.br, que faz uma requisição maliciosa para o site exemplo.com.br

3) Como o usuário ainda está autenticado, caso o site exemplo.com.br não esteja protegido, a requisição funcionará normalmente.

8) CSRF

Page 12: OWASP TOP 10 - Web Security

Exemplos...

8) CSRF

Page 13: OWASP TOP 10 - Web Security

Como evitar?

1) Evitar CSRF geralmente implica em criar uma token em cada requisição HTTP. Essa token dever única e mudar, no mínimo, a cada nova sessão.

2) A token também pode ser incluída na URL (através da query string, mas isso é menos seguro)

3) CAPTCHAs também ajudam a proteger contra CSRF.

8) CSRF

Page 14: OWASP TOP 10 - Web Security

; 7) Falta de verificação de acesso em

funcionalidades

Page 15: OWASP TOP 10 - Web Security

Como funciona?

• Um usuário malicioso simplesmente muda a URL ou muda um parâmetro e acessa uma funcionalidade do sistema que deveria estar bloqueada.

7) Falta de verificação de acesso em funcionalidades

Page 16: OWASP TOP 10 - Web Security

Como evitar?

1) O mecanismo de autorização deve, por padrão, negar acesso a uma funcionalidade e só permitir acesso caso o usuário possua a permissão explicitamente definida

2) A maior parte das aplicações não exibem links e botões para telas/rotinas bloqueadas, mas essa validação também deve ser efetuada no Controller ou na lógica de negócio

7) Falta de verificação de acesso em funcionalidades

Page 17: OWASP TOP 10 - Web Security

6) Exposição de dados confidenciais

Page 18: OWASP TOP 10 - Web Security

1) Existe algum dado confidencial (ex.: senhas, número de cartões de crédito) armazenado em texto?

2) A conexão está usando HTTP (ao invés de HTTPS) para transmitir dados confidenciais?

6) Exposição de dados confidenciais

Page 19: OWASP TOP 10 - Web Security

; 5) Configuração incorreta de segurança

Page 20: OWASP TOP 10 - Web Security

Exemplos:

1) Existem recursos desnecessários habilitados ou instalados (ex. portas, serviços, páginas, contas, privilégios)?

2) Os usuários e senhas padrão foram alterados?

3) No caso de erros no sistema, o stack trace é exibido para os usuários (ou qualquer outra informação excessiva)?

4) As configurações padrão de segurança nos frameworks de desenvolvimento (ASP.NET, Spring, Struts) foram alteradas?

5) Configuração incorreta de segurança

Page 21: OWASP TOP 10 - Web Security

; 4) Referências diretas não protegidas

Page 22: OWASP TOP 10 - Web Security

Exemplos:

http://www.meusite.com/compras/detalhe?idCompra=1234

4) Referências diretas não protegidas

Page 23: OWASP TOP 10 - Web Security

1) Valide o acesso antes de exibir o conteúdo

2) Não utilize referências diretas. Crie referências indiretas que são válidas somente para um usuário ou sessão (map)

4) Referências diretas não protegidas

Como evitar?

Page 24: OWASP TOP 10 - Web Security

http://marcoagner.com/posts/ingresso.com-como-nao-lidar-com-seguranca-da-info/

4) Referências diretas não protegidas

Outro exemplo:

Page 25: OWASP TOP 10 - Web Security

; 3) XSS (Cross-Site Scripting)

Page 26: OWASP TOP 10 - Web Security

• Um usuário malicioso envia texto contendo scripts que serão interpretados pelo browser

• Praticamente qualquer fonte de dados pode ser a origem da injeção de scripts: campos de texto, URL, banco de dados

• O impacto da injeção de script inclui: roubar sessão, modificar sites (phising), redirecionar usuários, forçar download de arquivos, etc.

3) XSS (Cross-Site Scripting)

Page 27: OWASP TOP 10 - Web Security

1) Nunca confiar em dados fornecidos pelo usuário

2) Fazer escape dos caraceteres que serão exibidos na página/script/url

3) Content-Security-Policy header

4) https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet

3) XSS (Cross-Site Scripting)

Como evitar?

Page 28: OWASP TOP 10 - Web Security

; 2) Autenticação/gerenciamento de

sessão incorreto

Page 29: OWASP TOP 10 - Web Security

• Autenticação e gerenciamento de sessão é difícil de implementar corretamente;

• As aplicações normalmente possuem falhas que permitem usuários maliciosos obter senhas, logins, tokens de sessão ou explorar outras falhas para utilizar a identidade de outro usuário

2) Autenticação/gerenciamento de sessão incorreto

Page 30: OWASP TOP 10 - Web Security

Exemplos...

2) Autenticação/gerenciamento de sessão incorreto

Page 31: OWASP TOP 10 - Web Security

2) Autenticação/gerenciamento de sessão incorreto

1) Senhas não são criptografadas durante o armazenamento 2) Credenciais podem ser adivinhadas, recuperadas ou

alteradas através de funções como “esqueci minha senha”, “mudar senha”, etc;

3) Sessions Ids são expostos na URL (URL rewriting) 4) Session ids são vulneráveis a “Session Fixation” 5) Sessão não é invalidada durante o logout ou nunca expira 6) Senhas/session ids são enviados sem criptografia em

conexões não criptografadas (ex.: HTTP)

Page 32: OWASP TOP 10 - Web Security
Page 33: OWASP TOP 10 - Web Security

; 1) Injection

Page 34: OWASP TOP 10 - Web Security
Page 35: OWASP TOP 10 - Web Security

RECAPITULANDO...

1) Injection 2) Autenticação/gerenciamento de sessão incorreto 3) XSS (Cross-Site Scripting) 4) Referências diretas não protegidas 5) Configuração incorreta de segurança 6) Exposição de dados confidenciais 7) Falta de verificação de acesso em funcionalidades 8) CSRF (Cross-Site Request Forgery) 9) Usar componentes com falhas de segurança conhecidas 10) Redirects e forwards não validados

Page 36: OWASP TOP 10 - Web Security

; 0) Heart Bleed

"Catastrophic is the right word. On the scale of 1 to 10, this is an 11."

Page 37: OWASP TOP 10 - Web Security

Application Security Verification Standard

ASVS ASVS

Page 38: OWASP TOP 10 - Web Security

Referências

o https://www.owasp.org o https://www.owasp.org/index.php/Category:OWASP_App

lication_Security_Verification_Standard_Project o http://docs.spring.io/spring-

security/site/docs/3.2.x/reference/htmlsingle/#csrf o https://freedom-to-tinker.com/blog/wzeller/popular-

websites-vulnerable-cross-site-request-forgery-attacks/