OWASP e o desenvolvimento seguro de aplicações para a Web

118
OWASP e o desenvolvimento seguro de aplicações para a Web ISELTech’12 2012.05.23 Carlos Serrão

description

Presentation made for ISELTech'12.

Transcript of OWASP e o desenvolvimento seguro de aplicações para a Web

Page 1: OWASP e o desenvolvimento seguro de aplicações para a Web

OWASP e o desenvolvimento seguro de aplicações para a Web ISELTech’12

2012.05.23 Carlos Serrão

Page 2: OWASP e o desenvolvimento seguro de aplicações para a Web

@pontocom

[email protected]@iscte.pthttp://www.linkedin.com/in/carlosserrao

Page 3: OWASP e o desenvolvimento seguro de aplicações para a Web
Page 4: OWASP e o desenvolvimento seguro de aplicações para a Web

“We wouldn’t have to spend so much time,

money, and effort on network security if

we didn’t have such bad software security”Viega & McGraw, Building Secure Software, Addison

Wesley

Page 5: OWASP e o desenvolvimento seguro de aplicações para a Web

Segurança de Software

Page 6: OWASP e o desenvolvimento seguro de aplicações para a Web

Segurança de Software

• o software é ubíquo

Page 7: OWASP e o desenvolvimento seguro de aplicações para a Web

Segurança de Software

• o software é ubíquo

• dependemos do software nos diversos aspectos da nossa vida

Page 8: OWASP e o desenvolvimento seguro de aplicações para a Web

Segurança de Software

• o software é ubíquo

• dependemos do software nos diversos aspectos da nossa vida

• funções críticas de negócio dependem de software

Page 9: OWASP e o desenvolvimento seguro de aplicações para a Web

Segurança de Software

• o software é ubíquo

• dependemos do software nos diversos aspectos da nossa vida

• funções críticas de negócio dependem de software

• software está cada vez mais exposto à Internet

Page 10: OWASP e o desenvolvimento seguro de aplicações para a Web

Segurança de Software

• o software é ubíquo

• dependemos do software nos diversos aspectos da nossa vida

• funções críticas de negócio dependem de software

• software está cada vez mais exposto à Internet

• exposição aumentada torna o software visível para terceiros

Page 11: OWASP e o desenvolvimento seguro de aplicações para a Web

Segurança de Software

• o software é ubíquo

• dependemos do software nos diversos aspectos da nossa vida

• funções críticas de negócio dependem de software

• software está cada vez mais exposto à Internet

• exposição aumentada torna o software visível para terceiros

• nem todas as pessoas são bem intencionadas

Page 12: OWASP e o desenvolvimento seguro de aplicações para a Web

Problema no software

• Características do software actual

• Complexidade

• Ataques exploram bugs designados por vulnerabilidades

• Estima-se entre 5-50 bugs por 1000 linhas de código

• Windows XP 40 milhões de linhas de código

• Extensibilidade

• O que é o software nos nossos computadores? SO + software em produção + patches + 3rd party DLLs + device drivers + plugins + ....

• Conectividade

• Internet (1+ biliões de utilizadores) + sistemas de controlo + PDAs + telemóveis + ...

Page 13: OWASP e o desenvolvimento seguro de aplicações para a Web

WhiteHat Security, Website Security Statistics Report, Winter 2011

Page 14: OWASP e o desenvolvimento seguro de aplicações para a Web

Rede

Sistema OperativoAplicações

Base de Dados

Servidor Web

Aplicações Web standardAplicações Web específicas

WhiteHat Security, Website Security Statistics Report, Winter 2011

Vulnerabilidades Específicas

Vulnerabilidades conhecidas e documentadas

Page 15: OWASP e o desenvolvimento seguro de aplicações para a Web

Tipologia de um ataque aplicacional

Network Layer

OS Layer

Application Layer

(End-user interface)

Network Layer

OS Layer

Application Layer

Custom

ApplicationBack-end

Database

Application Traffic

Page 16: OWASP e o desenvolvimento seguro de aplicações para a Web

Tipologia de um ataque aplicacional

Network Layer

OS Layer

Application Layer

(End-user interface)

Network Layer

OS Layer

Application Layer

Custom

ApplicationBack-end

Database

Application Traffic

Page 17: OWASP e o desenvolvimento seguro de aplicações para a Web

Tipologia de um ataque aplicacional

Network Layer

OS Layer

Application Layer

(End-user interface)

Network Layer

OS Layer

Application Layer

Custom

ApplicationBack-end

Database

Application Traffic

Page 18: OWASP e o desenvolvimento seguro de aplicações para a Web

Tipologia de um ataque aplicacional

Network Layer

OS Layer

Application Layer

(End-user interface)

Network Layer

OS Layer

Application Layer

Custom

ApplicationBack-end

Database

Application Traffic

Page 19: OWASP e o desenvolvimento seguro de aplicações para a Web

Citigroup attack...

...information accessed on 360,069 accounts

Page 20: OWASP e o desenvolvimento seguro de aplicações para a Web

Top 10, anyone?...

http://www.owasp.org/index.php/Top_10

Attack vector

Page 21: OWASP e o desenvolvimento seguro de aplicações para a Web

2011 CWE/SANS Top 25 Most Dangerous Software Errors

1. Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')

2. Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')

3. Buffer Copy without Checking Size of Input ('Classic Buffer Overflow')

4. Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

5. Missing Authentication for Critical Function

6. Missing Authorization

7. Use of Hard-coded Credentials

8. Missing Encryption of Sensitive Data

9. Unrestricted Upload of File with Dangerous Type

10. Reliance on Untrusted Inputs in a Security Decision

11. Execution with Unnecessary Privileges

12. Cross-Site Request Forgery (CSRF)

13.Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

14.Download of Code Without Integrity Check15.Incorrect Authorization16.Inclusion of Functionality from Untrusted

Control Sphere17.Incorrect Permission Assignment for

Critical Resource18.Use of Potentially Dangerous Function19.Use of a Broken or Risky Cryptographic

Algorithm20.Incorrect Calculation of Buffer Size21.Improper Restriction of Excessive

Authentication Attempts22.URL Redirection to Untrusted Site ('Open

Redirect')23.Uncontrolled Format String24.Integer Overflow or Wraparound25.Use of a One-Way Hash without a Salt

29 June 2011, http://cwe.mitre.org/top25/

Page 22: OWASP e o desenvolvimento seguro de aplicações para a Web

2011 CWE/SANS Top 25 Most Dangerous Software Errors

1. Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')

2. Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')

3. Buffer Copy without Checking Size of Input ('Classic Buffer Overflow')

4. Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

5. Missing Authentication for Critical Function

6. Missing Authorization

7. Use of Hard-coded Credentials

8. Missing Encryption of Sensitive Data

9. Unrestricted Upload of File with Dangerous Type

10. Reliance on Untrusted Inputs in a Security Decision

11. Execution with Unnecessary Privileges

12. Cross-Site Request Forgery (CSRF)

13.Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

14.Download of Code Without Integrity Check15.Incorrect Authorization16.Inclusion of Functionality from Untrusted

Control Sphere17.Incorrect Permission Assignment for

Critical Resource18.Use of Potentially Dangerous Function19.Use of a Broken or Risky Cryptographic

Algorithm20.Incorrect Calculation of Buffer Size21.Improper Restriction of Excessive

Authentication Attempts22.URL Redirection to Untrusted Site ('Open

Redirect')23.Uncontrolled Format String24.Integer Overflow or Wraparound25.Use of a One-Way Hash without a Salt

29 June 2011, http://cwe.mitre.org/top25/

Page 23: OWASP e o desenvolvimento seguro de aplicações para a Web

Sony attacks

http://attrition.org/security/rants/sony_aka_sownage.html

Page 24: OWASP e o desenvolvimento seguro de aplicações para a Web

Sony attacks

http://attrition.org/security/rants/sony_aka_sownage.html

“Several of Sony's sites have been compromised as a result of basic SQL injection attacks, nothing elaborate or

complex.”

Page 25: OWASP e o desenvolvimento seguro de aplicações para a Web

Sony attacks

http://attrition.org/security/rants/sony_aka_sownage.html

“Several of Sony's sites have been compromised as a result of basic SQL injection attacks, nothing elaborate or

complex.”

Page 26: OWASP e o desenvolvimento seguro de aplicações para a Web
Page 27: OWASP e o desenvolvimento seguro de aplicações para a Web
Page 28: OWASP e o desenvolvimento seguro de aplicações para a Web

https://www.dges.mctes.pt/

wwwReportViewer/

ReportViewer.aspx?Report=/

RelatoriosBolsas/

Autorizacao_ST&CandidatoID=XXX

XXX&CandidaturaID=XXXXXX

Page 29: OWASP e o desenvolvimento seguro de aplicações para a Web

https://www.dges.mctes.pt/

wwwReportViewer/

ReportViewer.aspx?Report=/

RelatoriosBolsas/

Autorizacao_ST&CandidatoID=XXX

XXX&CandidaturaID=XXXXXX

Page 30: OWASP e o desenvolvimento seguro de aplicações para a Web

SQL injection #101

Page 31: OWASP e o desenvolvimento seguro de aplicações para a Web

Contexto

• Falta de percepção da segurança

• as (algumas) organizações não investem o suficiente em segurança (ou investem incorretamente)

• programadores não percebem os riscos de segurança (ou não podem ou querem perceber)

• DISCLAIMER: não estou com isto a insinuar que *TODOS* os programadores são maus ;-)

Page 32: OWASP e o desenvolvimento seguro de aplicações para a Web
Page 33: OWASP e o desenvolvimento seguro de aplicações para a Web

Motivação/Contexto

Tendências Cisco para

2011

Page 34: OWASP e o desenvolvimento seguro de aplicações para a Web

Motivação/Contexto

Número médio de vulnerabilidades sérias encontradasem WebApps por sector (fonte: WhiteHat, 2011)

Page 35: OWASP e o desenvolvimento seguro de aplicações para a Web

Motivação/Contexto

Percentagem de ocorrência de problemas de segurança emWebApps (fonte: WhiteHat, 2011)

Page 36: OWASP e o desenvolvimento seguro de aplicações para a Web

Motivação/Contexto

Page 37: OWASP e o desenvolvimento seguro de aplicações para a Web

Motivação/Contexto

Aplicacional75%

Outros25%

Gartner  Group  (2009)

Sites  Web  Vulneráveis85%

Outros15%

WASC  (2009)

Sites  Web  Vulneráveis90%

Outros10%

IBM  (2009)

Fáceis  de  Explorar78%

Outros22%

Page 38: OWASP e o desenvolvimento seguro de aplicações para a Web

... an open community dedicated to enabling organizations to develop, purchase, and maintain applications that can be trusted

Page 39: OWASP e o desenvolvimento seguro de aplicações para a Web

OWASP?

• Open Web Application Security Project

• Promove o desenvolvimento seguro de software

• Orientado para o desenvolvimento de serviços baseados na web

• Focado principalmente em aspectos de desenvolvimento do que em web-design

• Um fórum aberto para discussão

• Um recurso gratuito e livre para qualquer equipa de desenvolvimento

Page 40: OWASP e o desenvolvimento seguro de aplicações para a Web

OWASP?

• Open Web Application Security Project

• Organização sem fins lucrativos, orientada para esforço voluntário

• Todos os membros são voluntários

• Todo o trabalho é “doado” por patrocinadores

• Oferecer recursos livres para a comunidade

• Publicações, Artigos, Normas

• Software de Testes e de Formação

• Chapters Locais & Mailing Lists

• Suportada através de patrocínios

• Suporte de empresas através de patrocínios financeiros ou de projectos

• Patrocínios pessoais por parte dos membros

Page 41: OWASP e o desenvolvimento seguro de aplicações para a Web

OWASP

Page 42: OWASP e o desenvolvimento seguro de aplicações para a Web

OWASP

Page 43: OWASP e o desenvolvimento seguro de aplicações para a Web

OWASP?

Page 44: OWASP e o desenvolvimento seguro de aplicações para a Web

OWASP?

• Top 10 Web Application Security Risks/Vulnerabilities

• Uma lista dos 10 aspectos de segurança mais críticos

• Actualizado numa base (quase) anual

• Crescente aceitação pela indústria

• Federal Trade Commission (US Gov)

• US Defense Information Systems Agency

• VISA (Cardholder Information Security Program)

• Está a ser adoptado como um standard de segurança para aplicações web

Page 45: OWASP e o desenvolvimento seguro de aplicações para a Web

OWASP?

http://www.owasp.org/index.php/Top_10

Page 46: OWASP e o desenvolvimento seguro de aplicações para a Web

OWASP

Page 47: OWASP e o desenvolvimento seguro de aplicações para a Web

OWASP SUMMIT 2011

Page 48: OWASP e o desenvolvimento seguro de aplicações para a Web

Ataques contra WebApps

Page 49: OWASP e o desenvolvimento seguro de aplicações para a Web

Ataques

• Ataques contra a infra-estrutura

• Ataques contra a aplicação

• Ataques contra os utilizadores

• Outros ataques

Page 50: OWASP e o desenvolvimento seguro de aplicações para a Web

Ataques

parse input

escape output

Page 51: OWASP e o desenvolvimento seguro de aplicações para a Web

Ataques contra a infra-estruturaatacar a camada mais fraca

Page 52: OWASP e o desenvolvimento seguro de aplicações para a Web
Page 53: OWASP e o desenvolvimento seguro de aplicações para a Web

Dispositivos de Rede

Sistema Operativo

Servidor Web

Servidor Aplicacional

Aplicação Web

Page 54: OWASP e o desenvolvimento seguro de aplicações para a Web

Dispositivos de Rede

Sistema Operativo

Servidor Web

Servidor Aplicacional

Aplicação Web

Estão todos caminhos desnecessários fechados?Estão todos os portos desnecessários fechados?

Está o interface de administração acessível via web?Pode uma conta de administração ser quebrada?

Está o dispositivo actualizado?

Page 55: OWASP e o desenvolvimento seguro de aplicações para a Web

Dispositivos de Rede

Sistema Operativo

Servidor Web

Servidor Aplicacional

Aplicação Web

Estão todos os serviços desnecessários desactivados?

Estão todas as contas desnecessárias desactivadas?

Todas as passwords de defeito foram alteradas?Está o sistema actualizado?

Page 56: OWASP e o desenvolvimento seguro de aplicações para a Web

Dispositivos de Rede

Sistema Operativo

Servidor Web

Servidor Aplicacional

Aplicação Web

Todos os scripts desnecessários foram removidos?Existem alguns recursos de backup/teste ainda

disponíveis?Está o servidor de web actualizado?

Foram alteradas todas as passwords por defeito?

Page 57: OWASP e o desenvolvimento seguro de aplicações para a Web

Dispositivos de Rede

Sistema Operativo

Servidor Web

Servidor Aplicacional

Aplicação WebTodas as aplicações de demonstração foram

removidas?Está o servidor actualizado?

Está a parte de administração protegida de acesso externo?

Indexação de directorias foi desactivada?Foram as passwords de defeito alteradas?

Page 58: OWASP e o desenvolvimento seguro de aplicações para a Web

Dispositivos de Rede

Sistema Operativo

Servidor Web

Servidor Aplicacional

Aplicação WebE aqui????

Page 59: OWASP e o desenvolvimento seguro de aplicações para a Web

©"Darwin"Bell@flickr"

o seu sistema será tão seguroquanto a segurança do elo

mais fraco...

Page 60: OWASP e o desenvolvimento seguro de aplicações para a Web

A6: Configuração de Segurança Incorrecta

• Qual é o Risco?

• Se existir um elo mais fraco do que a própria aplicação Web, o atacante vai preferir atacar essa camada mais fraca

• Quais são as principais contra-medidas?

• Garantir a segurança de todas as camadas

• Reduzir os serviços e contas ao mínimo

• Não usar passwords por defeito

• Ter tudo actualizado

• Usar e aplicar as directrizes de segurança (segurança do SO, segurança do servidor Web, segurança do servidor aplicacional, etc.)

• Manter a configuração por defeito da aplicação Web segura

• “Funcionamento seguro numa arquitectura segura”

Page 61: OWASP e o desenvolvimento seguro de aplicações para a Web

Ataques contra a aplicaçãoinjectar código hostil...

Page 62: OWASP e o desenvolvimento seguro de aplicações para a Web

e se?....

Page 63: OWASP e o desenvolvimento seguro de aplicações para a Web

e se?....

SELECT * FROM users usrWHERE usr.username = ‘admin’;--’

AND usr.password=’bb21158c733229347bd4e681891e21

3d94c685be’

Page 64: OWASP e o desenvolvimento seguro de aplicações para a Web

e se?....

Page 65: OWASP e o desenvolvimento seguro de aplicações para a Web
Page 66: OWASP e o desenvolvimento seguro de aplicações para a Web
Page 67: OWASP e o desenvolvimento seguro de aplicações para a Web
Page 68: OWASP e o desenvolvimento seguro de aplicações para a Web
Page 69: OWASP e o desenvolvimento seguro de aplicações para a Web
Page 70: OWASP e o desenvolvimento seguro de aplicações para a Web
Page 71: OWASP e o desenvolvimento seguro de aplicações para a Web

qualquer input do utilizador pode ser

um vector de ataque

Page 72: OWASP e o desenvolvimento seguro de aplicações para a Web

A1: Injecção

• Risco?

• Qualquer ponto de entrada da aplicação pode ser usada como vector para injectar conteúdo hostil para modificar o comportamento das mesmas

• IMPORTANTE

• Não afecta apenas o SQL

• LDAP e XPath podem ser igualmente vulneráveis

Page 73: OWASP e o desenvolvimento seguro de aplicações para a Web

A1: Injecção

• CONTRA-MEDIDAS

• Todas as entradas/input pode ser modificado do lado do cliente. É necessário validar:

• Parâmetros das strings de query;

• Campos dos formulários (incluindo os “hidden”)

• Upload de Ficheiros: se se está à espera de uma imagem, é preciso ter a certeza que se recebe uma imagem!!!!

• Cookies

• HTTP Headers: todos os campos, incluindo o “referrer” são input do utilizador (e podem ser modificados)

Page 74: OWASP e o desenvolvimento seguro de aplicações para a Web

A1: Injecção

• CONTRA-MEDIDAS

• NUNCA copiar o input do utilizador directamente para comandos de query (SQL, Xpath, LDAP, comandos do SO, etc.)

• usar um modelo de ligação para parâmetros SQL:

• se não existir um modelo de ligação, codificar o input antes de o usar:

• usar aspas (“) no caso do SQL Server

• pelicas com ‘\’ (\’) no caso do MySQL (no PHP, a função addslashes é bastante útil)

• ...

Page 75: OWASP e o desenvolvimento seguro de aplicações para a Web

A1: Injecção

• CONTRA-MEDIDAS

• escolher a melhor estratégia de validação

• melhor: whitelist

• quando todos os valores possíveis são conhecidos (enums, expressões if/else...if, expressões regulares, ...)

• graylist

• forçar as regras de negócio

• tipo: string, numérico, byte, ...

• intervalo: >0, <MaxInt, [a-z]{3,20}

• mais fraco: blacklist if(input.IndexOf(“<script>”)>=0)// rejeitar

Page 76: OWASP e o desenvolvimento seguro de aplicações para a Web

Ataques contra a aplicaçãobrincar com identificadores óbvios...

Page 77: OWASP e o desenvolvimento seguro de aplicações para a Web

e se?....

https://www.onlinebank.com/user?acct=6065

• um atacante repara que o parâmetro acct é 6065

?acct=6065

• modifica este valor para um valor próximo?acct=6066

• atacante consegue ver a informação da conta da vítima

Page 78: OWASP e o desenvolvimento seguro de aplicações para a Web

A4: Referências Directas a Objectos Inseguras

• Qual é risco?

• Todas as referências podem ser modificadas do lado do cliente. Um atacante pode conseguir obter acesso e/ou modificar informação confidencial

• Quais as contra-medidas?

• Nunca enviar referências internas para o browser:

• Usar mapeamentos temporários e aleatórios (#0, #1, #2, #3, etc.)

• OU combinar o acesso a referências com controlo de acesso:

• SELECT * FROM item WHERE id = $id AND owner = $uID

• UPDATE item … WHERE id = $id AND owner = $uid

Page 79: OWASP e o desenvolvimento seguro de aplicações para a Web

Ataques contra a aplicaçãoquebrar os mecanismos de sessão

e de autenticação

Page 80: OWASP e o desenvolvimento seguro de aplicações para a Web

e se?....

Page 81: OWASP e o desenvolvimento seguro de aplicações para a Web

e se?....

Page 82: OWASP e o desenvolvimento seguro de aplicações para a Web

e se?....

Page 83: OWASP e o desenvolvimento seguro de aplicações para a Web

Custom Code

Acc

ount

s Fi

nanc

e A

dmin

istr

atio

n Tr

ansa

ctio

ns

Com

mun

icat

ion

Kno

wle

dge

Mgm

t E

-Com

mer

ce

Bus

. Fun

ctio

ns 1 Utilizador envia credenciais

2 Site usa URL rewriting (i.e., coloca sessão na URL)

3 Utilizador carrega num link para http://www.hacker.com num forum

www.site.com?JSESSIONID=9FA1DB9EA...

4 Hacker verificar os logs dos referers no www.hacker.com

e encontra o JSESSIONID do utilizador

5 Hacker usa JSESSIONID e assume a identificação e a conta da vítima

Page 84: OWASP e o desenvolvimento seguro de aplicações para a Web

A3: Quebra da Autenticação e da Gestão de Sessões

• Qual o risco?

• o HTTP é um protocolo stateless. Cada pedido deve transmitir informação da sessão na rede

• os mecanismos de autenticação são um dos alvos preferenciais dos atacantes, a vários níveis: formulários, tráfego, dados armazenados.

• Quais as contra-medidas?

• Usar mecanismos simples, normalizados e centralizados de sessões

• usar atributos de segurança dos cookies (flag de segurança, flag HttpOnly, cifra e controlo de integridade)

• validar os identificadores de sessão

• o sessionID está a ser enviado do sítio certo?

Page 85: OWASP e o desenvolvimento seguro de aplicações para a Web

A3: Quebra da Autenticação e da Gestão de Sessões

• Quais as contra-medidas?

• ter a certeza que o ‘logout’ destrói efectivamente a sessão

• prevenir ataques de força bruta, mas prevenir igualmente ataques de DoS em contas legítimas

• forçar a recuperação segura de passwords

• autenticar antes de efectuar o reset da password

• rever, rever e rever manualmente o código da autenticação (e do logoff)

Page 86: OWASP e o desenvolvimento seguro de aplicações para a Web

Ataques contra a aplicaçãoencontrar URLs “secretas” escondidas

Page 87: OWASP e o desenvolvimento seguro de aplicações para a Web

e se?....

Page 88: OWASP e o desenvolvimento seguro de aplicações para a Web

e se?....

Page 89: OWASP e o desenvolvimento seguro de aplicações para a Web

e se?....• um atacante repara que a

URL indica qual o seu papel /user/getAccounts

• modifica este valor para um papel diferente

/admin/getAccounts/manager/getAccounts

• atacante consegue ver mais contas do que a sua

Page 90: OWASP e o desenvolvimento seguro de aplicações para a Web

A7: Falhas na Restrição de Acesso a URL

• Qual o risco?

• URLs que conduzem a recursos confidenciais podem ser facilmente enviadas, armazenadas (bookmarks), monitoradas (proxies, dispositivos de segurança) e algumas vezes adivinhadas

• Quais as contra-medidas?

• Desautorizar por completo o acesso certos tipos de ficheiros mais sensíveis

• Validar TODOS os pedidos que chegam à aplicação

• Autorização explicita

• Não expor documentos físicos com URLs permanentes ou facilmente adivinháveis

Page 91: OWASP e o desenvolvimento seguro de aplicações para a Web

Ataques contra os utilizadoresredireccionar os utilizadores para outro lado...

Page 92: OWASP e o desenvolvimento seguro de aplicações para a Web

e se?....

Page 93: OWASP e o desenvolvimento seguro de aplicações para a Web

3

2

Atacante envia um ataque para a vítima através de um email ou página Web

From: Internal Revenue Service Subject: Your Unclaimed Tax Refund Our records show you have an unclaimed federal tax refund. Please click here to initiate your claim.

A aplicação redirecciona a vítima para o site do atacante

Pedido é enviado para um site vulnerável, incluindo o site de destino do atacante como parâmetro. O redireccionamento envia a vítima para o site do atacante.

Custom Code

Acc

ount

s

Fina

nce

Adm

inis

trat

ion

Tran

sact

ions

Com

mun

icat

ion

Kno

wle

dge

Mgm

t

E-C

omm

erce

Bus

. Fun

ctio

ns

4 O site do atacante instala malware ou tenta obter informação privada

Vítima carrega no link que contém um parâmetro não validado

Evil Site

http://www.irs.gov/taxrefund/claim.jsp?year=2006& … &dest=www.evilsite.com

Page 94: OWASP e o desenvolvimento seguro de aplicações para a Web

A8: Redirecionamentos e Encaminhamentos não-Validados

• Qual o risco?

• Um atacante pode usar a reputação do seu site de Web como um vector para redireccionar utilizadores para um site de Web hostil

• Quais as contra-medidas?

• Nunca permitir o redireccionamento de URL absolutas

• Se não for possível:

• Usar whitelists de hosts válidos

• Mostrar um aviso antes de redirecionar o utilizador

• Se usar um “portal web”, tenha a certeza que as páginas de redirecionamento não incluem informação sensível na URL (a.k.a. informação de single-sign-on)

Page 95: OWASP e o desenvolvimento seguro de aplicações para a Web

Evitar o A8

• Existem diversas opções

• Evitar usar redirecionamentos e encaminhamentos sempre que puder

• Se usar, não envolva parâmetros (do utilizador) ao definir a URL alvo

• Se tiver mesmo que usar parâmetros, então faça um dos seguintes:

• valide cada parâmetro para garantir que é válido e autorizado para o utilizador actual, ou

• (preferido) use um mapeamento do lado do servidor para traduzir a escolha realizada pelo utilizador na URL alvo

• Defesa em profundidade: para redirecionamentos, valide a URL alvo, depois da mesma ser calculada, garantido que se refere a um site externo devidamente autorizado

• ESAPI: pode fazer isto por si:

• Ver: SecurityWrapperResponse.sendRedirect(  URL  )

• http://owasp-­‐esapi-­‐java.googlecode.com/svn/trunk_doc/org/owasp/esapi/filters/SecurityWrapperResponse.html#sendRedirect(java.lang.String)

Page 96: OWASP e o desenvolvimento seguro de aplicações para a Web

Ataques contra os utilizadoresexecutar código hostil do cliente

no site de web...

Page 97: OWASP e o desenvolvimento seguro de aplicações para a Web

e se?....

Page 98: OWASP e o desenvolvimento seguro de aplicações para a Web

e se?....

Page 99: OWASP e o desenvolvimento seguro de aplicações para a Web

Aplicação com vulnerabilidade XSS armazenada

3

2

Atacante monta a armadilha – actualizando o seu perfil

Atacante introduz um script malicioso numa página web que armazena os dados no servidor

1

Vítima visualiza a página – visita o perfil do atacante

O script envia silenciosamente para o atacante o cookie de sessão da vítima

Script corre dentro do browser da vítima com acesso total ao DOM e aos cookies

Custom Code

Acc

ount

s Fi

nanc

e A

dmin

istra

tion

Tran

sact

ions

C

omm

unic

atio

n K

now

ledg

e M

gmt

E-C

omm

erce

B

us. F

unct

ions

XSS

Page 100: OWASP e o desenvolvimento seguro de aplicações para a Web

A2: Cross Site Scripting (XSS)

• Qual o risco?

• Um atacante pode injectar código hostil a partir do lado do cliente na aplicação web, que depois pode ser reenviado para uma vítima

• Quais as contra-medidas?

• Filtrar/Sanitizar o output. Codificar no formato de destino.

• Para output em HTML, usar o HtmlEntities:

• <div  id=“comment”>Here  is  my  <script>attack</script></div>

• <div  id=“comment”>Here  is  my  &lt;script&gt;attack&lt;/script&gt;</div>

• No caso do output XML, usar entidades pré-definidas:

• <says>“here  is  my  <script>”</says>    <says><![CDATA[here  is  my  <script>]]></says>

• <says>my  input  is  <script></says>  <says>my  input  is  &lt;script&gt;</says>

Page 101: OWASP e o desenvolvimento seguro de aplicações para a Web

Ataques contra os utilizadoresreplicar e repetir pedidos previsíveis

Page 102: OWASP e o desenvolvimento seguro de aplicações para a Web

e se?....

Page 103: OWASP e o desenvolvimento seguro de aplicações para a Web

e se?....

Page 104: OWASP e o desenvolvimento seguro de aplicações para a Web

Alice Bobtransferir 100€ para oBob através do bank.com

POST  http://bank.com/transfer.do  HTTP/1.1.........Content-­‐Length:  19;

acct=BOB&amount=100

Mariapercebe que a mesma aplicação web do bank.com pode executar a

transferência usando uma URL com parâmetros.GET  http://bank.com/transfer.do?acct=BOB&amount=100  HTTP/1.1

vai tentar usar a Alice para tentar transferir 100.000€ para a sua própria contahttp://bank.com/transfer.do?acct=MARIA&amount=100000

envia email HTML para a Alice com uma URL para carregar<a  href="http://bank.com/transfer.do?

acct=MARIA&amount=100000">View  my  Pictures!</a>

ou, envia email HTML para a Alice com uma imagem para esconder o ataque<img  src="http://bank.com/transfer.do?acct=MARIA&amount=100000"  

width="1"  height="1"  border="0">

Alice se Alice estiver autenticada no bank.com com uma sessão activa é feita a transferência (no segundo caso de forma escondida)

Page 105: OWASP e o desenvolvimento seguro de aplicações para a Web

A5: Cross Site Request Forgery (CSRF)

• Qual o risco?

• Um atacante pode construir o seu próprio site de web e iniciar pedidos no browser do visitante

• Quais as contra-medidas?

• Implementar pedidos imprevisíveis para para todas as acções sensíveis

• usar campos de controlo aleatórios invisíveis e temporários:

• <input  type=”hidden”  name=”check”  value=”ab23b4a”>

• ligar os formulários à sessão do utilizador:

• if(!(Request.Form[“checker”]).Equals(SessionID))  //  return  error

• Usar CAPTCHA

• Usar verificações alternativas:

• SMS/Chamada de Voz/Tokens criptográficos, etc.

Page 106: OWASP e o desenvolvimento seguro de aplicações para a Web

Outros ataquesquebrar criptografia fraca...

Page 107: OWASP e o desenvolvimento seguro de aplicações para a Web

A9: Armazenamento Criptográfico Inseguro

• Qual o risco?

• Um atacante pode não necessitar de tanto tempo como pode esperar para decifrar os seus dados

• Se alguma das seguintes expressões são estranhas para si, então existe um risco:

• cifra assimétrica e simétrica, cifra online, cifra offline, CBC, entropia de chaves, vector de inicialização, ECB, código de autenticação de mensagens (MAC), PBKDF2 (RFC2898), Rijndael, AES, 3DES, DSA, RSA, ECC, SHA, keyring, DPAPI, ...

• Quais as contra-medidas?

• Não faça criptografia por si próprio!!!

• Usar APIs conhecidas

• usar implementações open-source de referência (OpenSSL, Truecrypt, etc.)

• usar librarias implementadas pela comunidade (OWASP ESAPI, ...)

• Formação...

Page 108: OWASP e o desenvolvimento seguro de aplicações para a Web

Evitar o A9

• Verifique a sua arquitectura

• identificar todos os dados sensíveis

• identificar todos os pontos em que os dados são armazenados

• assegurar modelo de ameaças para lidar com possíveis ataques

• usar cifra para combater as ameaças => não se limitando apenas a “codificar” os dados

• Proteger com os mecanismos apropriados

• Cifra de ficheiros, Cifra de BD, Cifra de Elementos de dados (XML)

• Usar os mecanismos correctamente

• usar algoritmos fortes e standard

• gerar, distribuir e proteger as chaves de forma adequada

• estar preparado para mudar de chaves

• Verificar a implementação

• o algoritmo forte e standard está a ser usado e é o adequado para esta situação

• todas as chaves, certificados e passwords estão devidamente armazenados e protegidos

• estão criados os mecanismos correctos e seguros para a distribuição e alteração de chaves

Page 109: OWASP e o desenvolvimento seguro de aplicações para a Web

Outros ataquesobservar o ambiente...

Page 110: OWASP e o desenvolvimento seguro de aplicações para a Web

e se?....

Page 111: OWASP e o desenvolvimento seguro de aplicações para a Web

A10: Protecção Insuficiente da Camada de Transporte

• Qual é o risco?

• Visualização do tráfego, devido a insuficiente protecção da camada de transporte

• Quais as contra-medidas?

• Requere links SSL cifrados

• Usar certificados apropriados (assinados e válidos)

• Impedir que os cookies possam sair dos links cifrados (flag “secure” activa)

Page 112: OWASP e o desenvolvimento seguro de aplicações para a Web

Evitar o A10

• Protecção com os mecanismos adequados

• usar o TLS em todas as ligações com dados sensíveis

• cifrar individualmente as mensagens antes do seu envio

• ex., usar XML-Encryption

• assinar digitalmente as mensagens antes do envio

• ex., usar XML-Signature

• Usar os mecanismos de forma adequada e correcta

• usar algoritmos fortes e standard (desactivar alguns algoritmos antigos no SSL)

• gerir as chaves e certificados correctamente

• verificar os certificados SSL antes de os usar

• usar mecanismos adequados e não sobrepostos

• ex., SSL vs. XML-Encryption

• Consultar: http://www.owasp.org/index.php/Transport_Layer_Protection_Cheat_Sheet

Page 113: OWASP e o desenvolvimento seguro de aplicações para a Web

OWASP Top 10

Page 114: OWASP e o desenvolvimento seguro de aplicações para a Web

OWASP Top 10 (2010)

• A1: Injecção

• A2: Cross Site Scripting (XSS)

• A3: Quebra de Autenticação e da Gestão de Sessões

• A4: Referência Directa a Objectos Insegura

• A5: Cross Site Request Forgery (CSRF)

• A6: Configuração de Segurança Incorrecta

• A7: Falhas na Restrição de Acesso a URL

• A8: Redireccionamentos e Encaminhamentos não-Validados

• A9: Armazenamento Criptográfico Inseguro

• A10: Protecção Insuficiente da Camada de Transporte

Page 115: OWASP e o desenvolvimento seguro de aplicações para a Web

Riscos no OWASP Top 10

RISCO

A1-­‐Injec=on FÁCIL COMUM MÉDIA SEVERO

A2-­‐XSS MÉDIO MTO  ESPALHADO FÁCIL MODERADO

A3-­‐Auth’n MÉDIO COMUM MÉDIA SEVERO

A4-­‐DOR FÁCIL COMUM FÁCIL MODERADO

A5-­‐CSRF MÉDIO ESPALHADO FÁCIL MODERADO

A6-­‐Config FÁCIL COMUM FÁCIL MODERADO

A7-­‐Crypto DIFÍCIL POUCO  COMUM DIFÍCIL SEVERO

A8-­‐URL  Access FÁCIL POUCO  COMUM MÉDIA MODERADO

A9-­‐Transport DIFÍCIL COMUM FÁCIL MODERADO

A10-­‐Redirects MÉDIO POUCO  COMUM FÁCIL MODERADO

                     Fraquezas                    de  Segurança

       Vectores        de  Ataque

 Impactos      TécnicosAgentes

de  AmeaçaImpactosNegócio

Exploração Prevalência Detecção Impacto

Page 116: OWASP e o desenvolvimento seguro de aplicações para a Web

O “novo” Top 10 da OWASP (2010)

http://www.owasp.org/index.php/Top_10

Page 117: OWASP e o desenvolvimento seguro de aplicações para a Web

@pontocom

[email protected]@iscte.pthttp://www.linkedin.com/in/carlosserrao

Page 118: OWASP e o desenvolvimento seguro de aplicações para a Web

OWASP e o desenvolvimento seguro de aplicações para a Web ISELTech’12

2012.05.11 Carlos Serrão