Your SlideShare is downloading. ×
0
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

CJR Apresenta: OWASP TOP10

1,750

Published on

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á …

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.

Published in: Technology
1 Comment
0 Likes
Statistics
Notes
  • Blog de Leandro Silva dos Santos, um dos autores da apresentação http://programe-extjs.blogspot.com/
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

No Downloads
Views
Total Views
1,750
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
62
Comments
1
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Apresenta:<br />www.cjr.org.br<br />@CJR_UnB<br />
  • 2. 10 maiores riscos em aplicações Web<br />Leandro Silva dos Santos<br />Thiago Stuckert<br />leandrosantos@inbrax.com<br />thiago.melo.stuckert@gmail.com.br<br />Novembro - 2010<br />2<br />
  • 3. Open Web Application Security Project (OWASP)<br />Organização sem fins lucrativos.<br />Desenvolve projetos na área de teste de segurança de aplicações e serviços Web.<br />Site OWASP: http://www.owasp.org/<br />CapítuloBrasília: http://goo.gl/iN9u4<br />3<br />
  • 4. OWASP TOP 10<br />Documento de conscientização.<br />Amplo consenso sobre as falhas de segurança.<br />Link para o projeto - http://goo.gl/8OAK<br />4<br />
  • 5. A1 - Falhas de Injeção<br />OWASP TOP 10<br />5<br />
  • 6. O que é?<br />Injetar código que modifica a semântica da consulta. <br />Toda entrada é má até que se prove o contrário. <br />Falta de validação na entrada.<br />6<br />
  • 7. Injeção de SQL<br />Structured Query Language (SQL)<br />Inserir SQL em uma entrada de dados.<br />Insert/Update/Delete ou operações administrativas. <br />7<br />
  • 8. Cenário<br />Account: <br />SKU: <br />Account: <br /> SKU: <br />"SELECT * FROM accounts WHERE acct=‘’ OR 1=1--’"<br />Account Summary<br />Acct:5424-6066-2134-4334<br />Acct:4128-7574-3921-0192<br />Acct:5424-9383-2039-4029<br />Acct:4128-0004-1234-0293<br />DB Table <br /><br />HTTP response <br /><br />HTTP request<br />SQL query<br />Finance<br />Transactions<br />Accounts<br />Administration<br />Communication<br />Knowledge Mgmt<br />E-Commerce<br />Bus. Functions<br />Databases<br />Legacy Systems<br />Web Services<br />Directories<br />Billing<br />Human Resrcs<br />Application Layer<br />APPLICATIONATTACK<br />Custom Code<br />1. Aplicaçãoapresenta um formuláriopara o usuário.<br />2. Usuárioenviaumaentradamaliciosaatravés do formulário.<br />App Server<br />3. Aplicaçãotransmite a consulta SQL para o BD.<br />Web Server<br />Hardened OS<br />4. BD executa a consulta e retorna o resultadopara a aplicação.<br />Network Layer<br />5. Aplicaçãoapresenta o resultadopara o usuário.<br />Firewall<br />Firewall<br />8<br />
  • 9. Injeção de SQL às cegas<br />Mensagens genéricas.<br />Consultas SQL retornam verdadeiro ou falso. <br />101 AND (SELECT ASCII(SUBSTR(first_name,1,1)) FROM user_data WHERE userid=15613) =$ --<br />$ = [65, 122] (Todas as letras do alfabeto).<br />Demo: Video<br />9<br />
  • 10. Proteção<br />PreparedStatements (Consultas parametrizadas).<br />Stored Procedures.<br />Verificar todos os dados fornecidos pelo usuário.<br />Enterprise Security API (ESAPI)<br />Validação no lado do cliente.<br />10<br />
  • 11. Whitelist x Blacklist<br />Blacklist é uma lista de entradas maliciosas. <br />Whitelist é uma lista de entradas válidas.<br />Whitelist é a mais recomendada.<br />Expressões regulares.<br />11<br />
  • 12. Referências<br />The real dirtyofwhitelist– http://goo.gl/ETxO9<br />OWASP Sqli- http://goo.gl/p0zea<br />OWASP SqliProteção -http://goo.gl/X8nI<br />OWASP BlindSqli - http://goo.gl/JmnhW<br />OWASP Enterprise Security API-http://goo.gl/uAUq7<br />RsnakeSqliCheat Sheet: http://goo.gl/iXkxg<br />Outra cheat sheet - http://goo.gl/Obdz<br />12<br />
  • 13. A2 - Cross Site Scripting (XSS)<br />OWASP TOP 10<br />13<br />
  • 14. O que é?<br />14<br /><ul><li>O problema: Entrada fornecida pelo usuário é inserida dinamicamente nas páginas sendo executada como código pelo navegador.
  • 15. Origem do termo.
  • 16. Existem três tipos de XSS:
  • 17. Não-Persistente. (Refletido)
  • 18. Persistente. (Armazenado)
  • 19. Baseado em DOM (persistente ou não)</li></li></ul><li>Finance<br />Transactions<br />Accounts<br />Administration<br />Communication<br />Knowledge Mgmt<br />E-Commerce<br />Bus. Functions<br />Custom Code<br />Cenário Persistente<br />Atacantepreparaumaarmadilha, atualizandoseuperfil<br />1<br />Aplicação com a vulnerabilidade XSS<br />Atacantearmazena um script maliciosoemumapágina Web.<br />Vítimavisita o perfil do atacante<br />2<br />Script roda no navegador da vítima, tendo total acesso ao DOM e cookie.<br />3<br />Script enviasilenciosamentepara o atacante o session cookie da vítima<br />15<br />
  • 20. Demo<br />XSS persistente. <br />Objetivo: Mostrar o cookie do usuário.<br />Cookie permite o armazenamento da seção.<br />Video<br />16<br />
  • 21. Impactos do XSS<br />Sequestro de sessão de usuário.<br />Roubo de dados sensíveis.<br /> Reescrita de página Web.<br />Redirecionamento de página para sites falsos e/ou malware.<br />17<br />
  • 22. Proteção<br />Fazer validação dos dados inseridos pelo usuário.<br />Não renderizar dados digitados pelo usuário sem validação.<br />18<br />
  • 23. Referências<br />OWASP XSS: http://goo.gl/OQjw0<br />OWASP DOM Based XSS: http://goo.gl/DRP5n<br />Artigo DOM Based XSS: http://goo.gl/A6Yka<br />Rsnake XSS Cheat Sheet: http://goo.gl/oNbL<br />Livro “XSS Attacks: Cross Site Scripting Exploits and Defense” - http://goo.gl/unsrC<br />NoScript: http://goo.gl/HgJ8<br />19<br />
  • 24. A3 - Falhas de autenticação e gerenciamento de sessão<br />OWASP TOP 10<br />20<br />
  • 25. O que é?<br />HTTP é um protocolo stateless.<br />SESSION ID.<br />Logout, gerenciamento da senha e timeouts. <br />Complicado de implementar de maneira segura.<br />21<br />
  • 26. Cenário<br />Finance<br />Transactions<br />Accounts<br />Administration<br />Communication<br />Knowledge Mgmt<br />E-Commerce<br />Bus. Functions<br />Custom Code<br />1<br />Usuário envia credenciais<br />www.boi.com?JSESSIONID=9FA1DB9EA...<br />Páginautilizareescrita de url<br />Ex: Coloca a sessãona URL<br />2<br />3<br />Usuárioclica no link http://www.hacker.comem um fórum<br />Atacantecheca o log de www.hacker.com<br />e encontra o JSESSIONID da vítima<br />4<br />5<br />Atacanteutiliza o JSESSIONID e tomacontrole da conta da vítima<br />22<br />
  • 27. Demo<br />A aplicação não implementa o SESSION ID de forma aleatória.<br />O atacante utiliza um ataque força bruta para descobrir um SESSION ID válido.<br />Video<br />23<br />
  • 28. Proteção<br /><ul><li>Autenticaçãodeveser simples, centralizada e padronizada.
  • 29. Utilize SSL paraprotegercredenciais e session id`s.</li></ul>Verifique o certificado SSL.<br />Examinetodas as funçõesrelacionadas à autenticação.<br /><ul><li>Verifique se o logout realmentedestrói a sessão.</li></ul>24<br />
  • 30. Referências<br />OWASP Authentication Cheat_Sheet- http://goo.gl/AVNQ6<br /> ESAPI Authenticator API- http://goo.gl/zHVDk<br />Common WeaknessEnumeration (CWE)<br />CWE Entry 287 on Improper Authentication- http://goo.gl/VVKY0<br />25<br />
  • 31. A4 - Referência direta insegura aos objetos <br />OWASP TOP 10<br />26<br />
  • 32. O que é?<br />Oacessodireto a um objetonão é verificado.<br />Exemplo: <br />http://www.exemplo.com/index.php?permissao=atendente <br />Modificar ‘permissao’ para ‘admin’.<br />27<br />
  • 33. Demo<br /><ul><li>O atacante notaqueseuparametro ‘acct’ é 6065.
  • 34. Elemodifica o númeropara 6066.
  • 35. O atacanteacessainformaçõesdaconta de outrousuário.</li></ul>https://www.onlinebank.com/user?acct=6065<br />28<br />
  • 36. Erros comuns<br />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.<br />Esconder em campos ocultos as referências dos objetos e não reforçar a autorização de acesso.<br /><ul><li>Impacto típico:</li></ul>Acesso a arquivos não autorizados.<br />29<br />
  • 37. Proteção<br />Validação de referência direta<br />Verifique se o valor do parâmetro está formatado apropriadamente.<br />Verifique se o usuário tem permissão de acesso ao objeto referenciado.<br />Verifique se o usuário possui permissão ao modo de acesso (leitura, escrita, alteração e exclusão).<br />30<br />
  • 38. Referências<br />ESAPI Access Control API- http://goo.gl/wSB1k<br />Application Security Verification Standard (ASVS)<br />ASVS requirements area for Access Control (V4)- http://goo.gl/wAGr6<br />CWE Entry 639 on Insecure Direct Object References- http://goo.gl/ACOdx<br />CWE Entry 22 on Path Traversal- http://goo.gl/VqXlV<br />31<br />
  • 39. A5 - Cross Site Request Forgery (CSRF) <br />OWASP TOP 10<br />32<br />
  • 40. O que é?<br />Atacante forja uma requisição de um usuário já autenticado.<br />Navegador da vítima é forçado a executar uma ação sem seu consentimento. <br />Impactos típicos: acesso a informações sensíveis, modificação de dados da conta.<br />33<br />
  • 41. Finance<br />Transactions<br />Accounts<br />Administration<br />Communication<br />Knowledge Mgmt<br />E-Commerce<br />Bus. Functions<br />Custom Code<br />Demo<br />Atacantecriaumaarmadilhaem um site ou email<br />1<br />Aplicação com umavulnerabilidade CSRF<br />Escondeemuma tag <img> um ataque contra umaaplicaçãovulnerável<br />Quandologada no site vulnerável, <br />a vítimavisita o site do atacante<br />2<br />3<br />O aplicaçãovulnerávelrecebe a requisiçãolegítima da vítima e executa o comando da requisição<br />A tag <img> carregadapelonavegadorenviaumarequisição GET incluíndo as credenciaispara a aplicaçãovulnerável<br />Video<br />34<br />
  • 42. Proteção<br /><ul><li>Requererumasegundaautenticaçãoparafunçõessensíveis (captcha, tabela de senhas, geolocation).</li></ul>Adicionar um token secretosensível a requisição.<br /><ul><li>Armazenar um token simples emcadasessão e o armazenaremcadaformulárioou link.</li></ul>35<br />
  • 43. Referências<br />Curso sobre CSRF- http://goo.gl/pGOZJ<br />OWASP CSRF Proteção- http://goo.gl/uJ43O<br />OWASP CSRFTester-CSRF Testing Tool- http://goo.gl/pq1zS<br />ESAPI HTTPUtilitiesClass with AntiCSRFTokens- http://goo.gl/3Cq0t<br />Evitarataques de CSRF emjava por Lucas Ferreira- http://goo.gl/AjrDv<br />36<br />
  • 44. A6 - ConFiguraçãoinapropriada de segurança<br />OWASP TOP 10<br />37<br />
  • 45. O que é?<br />Ocorrequandopáginas do sistemaestãodisponíveisparaseremacessadasporqualquerusuário.<br />Exemplo:<br />O usuáriotentaacessarurlspadrões de páginas de configuração.<br />http://exemplo.com/config<br />38<br />
  • 46. Proteção<br />Verifique a configuração de todo o sistema, se há versões de bibliotecas desatualizadas.<br />Analise os efeitos dos patches inseridos no seu ambiente.<br />39<br />
  • 47. Referências<br />OWASP Development Guide: Chapter on Configuration http://goo.gl/6zc5e<br />ASVS requirements area for Security Configuration (V12) http://goo.gl/wAGr6<br />CWE Entry 2 on Environmental Security Flaws http://goo.gl/53vEl<br />CIS Security ConfigurationGuides/Benchmarks http://goo.gl/vC73u<br />40<br />
  • 48. A7 - ArmazenamentoInseguro - Criptografia<br />OWASP TOP 10<br />41<br />
  • 49. O que é?<br />Armazenar informação sensível de forma insegura.<br />Quais são as informações sensíveis?<br />Aonde armazená-las?<br />Estão protegidas em todos os lugares? <br />Conhecer as premissas de segurança do protocolo.<br />42<br />
  • 50. Impacto Típico<br /><ul><li>Atacantes podem acessar informações sensíveis.
  • 51. Atacantes extraem informações secretas para utilizar em outros ataques.
  • 52. Perda de credibilidade da empresa.</li></ul>43<br />
  • 53. Finance<br />Transactions<br />Accounts<br />Administration<br />Communication<br />Knowledge Mgmt<br />E-Commerce<br />Bus. Functions<br />Custom Code<br />Cenário<br />Vítimaentra com o número do cartão de créditoem um formulário<br />1<br />Log files<br />Um desenvolvedormaliciosorouba o número de várioscartões de crédito<br />4<br />2<br />Ocorre um erronaaplicação e o número do cartão de crédito do<br />usuário é armazenado no log<br />3<br />Os logs sãoacessíveispelosdesenvolvedores da aplicaçãoporpropósitos de depuração de erros<br />44<br />
  • 54. Proteção<br /><ul><li>Identifiquetodosos dados sensíveis.</li></ul>Identifique o lugar aondeos dados serãoarmazenados.<br />Use algoritmos fortes e bemconhecidos.<br />Gerencie corretamente as chaves.<br />45<br />
  • 55. Referências<br />ESAPI EncryptorAPI - http://goo.gl/y5FI5<br />OWASP Development Guide: Chapter on Cryptography - http://goo.gl/0SaiU<br />OWASP CodeReviewGuide: ChapteronCryptography - http://goo.gl/KdBys<br />CWE Entry 310 on Cryptographic Issues - http://goo.gl/QRO2E<br />46<br />
  • 56. A8 - Falha de restrição de acesso à URL<br />OWASP TOP 10<br />47<br />
  • 57. O que é?<br />Algumaspáginasnãofazemverificação de acesso.<br />Complemento da vulnerabilidadeA4 - Referência direta insegura aos objetos <br />48<br />
  • 58. Cenário<br /><ul><li>Um usuáriocomumloga no sistema e modificandoumaurl de umapágina, consegueacessá-la como se fosse o administrador.
  • 59. http://exemplo.com/informacao/index.php
  • 60. http://exemplo.com/admin_informacao/index.php</li></ul>49<br />
  • 61. Proteção<br />Para cada URL:<br />Restrinja o acesso para usuários autenticados (se não for público).<br />Aplique regras baseadas em permissões.<br />Desabilite o acesso de usuários não autenticados a páginas que contenham logs, configurações e outros.<br />50<br />
  • 62. Referências<br />OWASP Development Guide: Chapter on Authorization - http://goo.gl/bWfvF<br />OWASP Article on Forced Browsing - http://goo.gl/I7jNs<br />CWE Entry 285 on Improper Access Control (Authorization) - http://goo.gl/ZmcFO<br />51<br />
  • 63. A9 - Proteção insuficiente na camada de transporte<br />OWASP TOP 10<br />52<br />
  • 64. O que é?<br />Transmissão de dados sensíveis de forma insegura.<br />Firesheep<br />53<br />
  • 65. Demo<br />Parceiro de negócio<br />Vítimaexterna<br />Backend Systems<br />Custom Code<br />Empregados<br />2<br />1<br />Um atacante externo rouba credenciais e dados da rede externa<br />Um atacanteinternoroubacredenciais e dados da redeinterna<br />Atacanteexterno<br />Atacante interno<br />Video<br />54<br />
  • 66. Proteção<br />Usar SSL/TLS emtodas as conexões com dados sensíveis.<br />Assinarmensagens antes de transmiti-las.<br />Gerenciarchavescorretamente.<br />Verificarcertificados SSL antes de usá-los.<br />(origem, autoassinados)<br />55<br />
  • 67. Referências<br />Firesheep - http://goo.gl/yEcU<br />Blacksheep- http://goo.gl/3dagf<br />HTTPS Everywhere - http://goo.gl/fsKV<br />OWASP ProteçãonaCamada de Transporte - http://goo.gl/McooF<br />56<br />
  • 68. A10 - encaminhamento e redirecionamento sem validação<br />OWASP TOP 10<br />57<br />
  • 69. Finance<br />Transactions<br />Accounts<br />Administration<br />Communication<br />Knowledge Mgmt<br />E-Commerce<br />Bus. Functions<br />Custom Code<br />Redirecionamento sem validação<br />1<br />Atacanteenvia um email parasuavítima<br />From: ServiçosinternosSubject: Suarestituição de impostosNossosregistrosmostramque o senhorpossuiimpostos a restituir, por favor clique aqui.<br />3<br />A aplicaçãoredireciona a vítima<br />A vítimaclica e o endereçopossue um parâmetrosemvalidação<br />2<br />A requisiçãoenviapara o site vulnerável o parâmetro,semservalidado. Redirecionando a vítimapara o site do atacante.<br />Evil Site<br />4<br />Evil site instala um malware navítima<br />http://www.irs.gov/taxrefund/claim.jsp?year=2006&… &dest=www.evilsite.com<br />58<br />
  • 70. Encaminhamento sem validação<br />1<br />O atacanteenvia um ataqueparaumapáginavulnerável<br />A páginarequisitadapossuiacesso a umaárearestrita. E o atacanteconseguiserencaminhadoparaestapágina, burlando o controle de acesso.<br /> public void sensitiveMethod( HttpServletRequest request, HttpServletResponse response) {<br /> try {<br /> // Do sensitive stuff here.<br /> ...<br />}<br />catch ( ...<br />A aplicaçãoautoriza a requisição<br />2<br />Filtro<br />3<br />Falha a autorização do encaminhamento e o atacanteburla o controle de acesso.<br /> public void doPost( HttpServletRequest request, HttpServletResponse response) {<br /> try {<br />String target = request.getParameter( "dest" ) );<br />...<br />request.getRequestDispatcher( target ).forward(request, response);<br />}<br />catch ( ...<br />59<br />
  • 71. Proteção<br />Use encaminhamento e redirecionamento, somente quando necessário.<br />Caso use, não permita que o usuário defina destino na URL.<br />Valide cada parâmetro para garantir sua corretude e permissão de acesso.<br />60<br />
  • 72. Referências<br />OWASP Article on Open Redirects -http://goo.gl/vEAKE<br />ESAPI SecurityWrapperResponsesendRedirect() method - http://goo.gl/UzsA9<br />CWE Entry 601 on Open Redirects - http://goo.gl/z93EU<br />WASC Article on URL Redirector Abuse - http://goo.gl/tshz9<br />61<br />
  • 73. 2007 x 2010<br />=<br />=<br />+<br />=<br />+<br />-<br />-<br />62<br />
  • 74. Perguntas?<br />Obrigado!<br />leandrosantos@inbrax.com<br />thiago.melo.stuckert@gmail.com.br<br />Apoio:<br />63<br />

×