Your SlideShare is downloading. ×
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,734

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,734
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
61
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:
    www.cjr.org.br
    @CJR_UnB
  • 2. 10 maiores riscos em aplicações Web
    Leandro Silva dos Santos
    Thiago Stuckert
    leandrosantos@inbrax.com
    thiago.melo.stuckert@gmail.com.br
    Novembro - 2010
    2
  • 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ítuloBrasília: http://goo.gl/iN9u4
    3
  • 4. OWASP TOP 10
    Documento de conscientização.
    Amplo consenso sobre as falhas de segurança.
    Link para o projeto - http://goo.gl/8OAK
    4
  • 5. A1 - Falhas de Injeção
    OWASP TOP 10
    5
  • 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.
    6
  • 7. Injeção de SQL
    Structured Query Language (SQL)
    Inserir SQL em uma entrada de dados.
    Insert/Update/Delete ou operações administrativas.
    7
  • 8. Cenário
    Account:
    SKU:
    Account:
    SKU:
    "SELECT * FROM accounts WHERE acct=‘’ OR 1=1--’"
    Account Summary
    Acct:5424-6066-2134-4334
    Acct:4128-7574-3921-0192
    Acct:5424-9383-2039-4029
    Acct:4128-0004-1234-0293
    DB Table 

    HTTP response 

    HTTP request
    SQL query
    Finance
    Transactions
    Accounts
    Administration
    Communication
    Knowledge Mgmt
    E-Commerce
    Bus. Functions
    Databases
    Legacy Systems
    Web Services
    Directories
    Billing
    Human Resrcs
    Application Layer
    APPLICATIONATTACK
    Custom Code
    1. Aplicaçãoapresenta um formuláriopara o usuário.
    2. Usuárioenviaumaentradamaliciosaatravés do formulário.
    App Server
    3. Aplicaçãotransmite a consulta SQL para o BD.
    Web Server
    Hardened OS
    4. BD executa a consulta e retorna o resultadopara a aplicação.
    Network Layer
    5. Aplicaçãoapresenta o resultadopara o usuário.
    Firewall
    Firewall
    8
  • 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
    9
  • 10. Proteção
    PreparedStatements (Consultas parametrizadas).
    Stored Procedures.
    Verificar todos os dados fornecidos pelo usuário.
    Enterprise Security API (ESAPI)
    Validação no lado do cliente.
    10
  • 11. Whitelist x Blacklist
    Blacklist é uma lista de entradas maliciosas.
    Whitelist é uma lista de entradas válidas.
    Whitelist é a mais recomendada.
    Expressões regulares.
    11
  • 12. Referências
    The real dirtyofwhitelist– http://goo.gl/ETxO9
    OWASP Sqli- http://goo.gl/p0zea
    OWASP SqliProteção -http://goo.gl/X8nI
    OWASP BlindSqli - http://goo.gl/JmnhW
    OWASP Enterprise Security API-http://goo.gl/uAUq7
    RsnakeSqliCheat Sheet: http://goo.gl/iXkxg
    Outra cheat sheet - http://goo.gl/Obdz
    12
  • 13. A2 - Cross Site Scripting (XSS)
    OWASP TOP 10
    13
  • 14. O que é?
    14
    • 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)
  • Finance
    Transactions
    Accounts
    Administration
    Communication
    Knowledge Mgmt
    E-Commerce
    Bus. Functions
    Custom Code
    Cenário Persistente
    Atacantepreparaumaarmadilha, atualizandoseuperfil
    1
    Aplicação com a vulnerabilidade XSS
    Atacantearmazena um script maliciosoemumapágina Web.
    Vítimavisita o perfil do atacante
    2
    Script roda no navegador da vítima, tendo total acesso ao DOM e cookie.
    3
    Script enviasilenciosamentepara o atacante o session cookie da vítima
    15
  • 20. Demo
    XSS persistente.
    Objetivo: Mostrar o cookie do usuário.
    Cookie permite o armazenamento da seção.
    Video
    16
  • 21. 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.
    17
  • 22. Proteção
    Fazer validação dos dados inseridos pelo usuário.
    Não renderizar dados digitados pelo usuário sem validação.
    18
  • 23. 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
    19
  • 24. A3 - Falhas de autenticação e gerenciamento de sessão
    OWASP TOP 10
    20
  • 25. O que é?
    HTTP é um protocolo stateless.
    SESSION ID.
    Logout, gerenciamento da senha e timeouts.
    Complicado de implementar de maneira segura.
    21
  • 26. Cenário
    Finance
    Transactions
    Accounts
    Administration
    Communication
    Knowledge Mgmt
    E-Commerce
    Bus. Functions
    Custom Code
    1
    Usuário envia credenciais
    www.boi.com?JSESSIONID=9FA1DB9EA...
    Páginautilizareescrita de url
    Ex: Coloca a sessãona URL
    2
    3
    Usuárioclica no link http://www.hacker.comem um fórum
    Atacantecheca o log de www.hacker.com
    e encontra o JSESSIONID da vítima
    4
    5
    Atacanteutiliza o JSESSIONID e tomacontrole da conta da vítima
    22
  • 27. 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
    23
  • 28. Proteção
    • Autenticaçãodeveser simples, centralizada e padronizada.
    • 29. Utilize SSL paraprotegercredenciais e session id`s.
    Verifique o certificado SSL.
    Examinetodas as funçõesrelacionadas à autenticação.
    • Verifique se o logout realmentedestrói a sessão.
    24
  • 30. Referências
    OWASP Authentication Cheat_Sheet- http://goo.gl/AVNQ6
    ESAPI Authenticator API- http://goo.gl/zHVDk
    Common WeaknessEnumeration (CWE)
    CWE Entry 287 on Improper Authentication- http://goo.gl/VVKY0
    25
  • 31. A4 - Referência direta insegura aos objetos
    OWASP TOP 10
    26
  • 32. O que é?
    Oacessodireto a um objetonão é verificado.
    Exemplo:
    http://www.exemplo.com/index.php?permissao=atendente
    Modificar ‘permissao’ para ‘admin’.
    27
  • 33. Demo
    • O atacante notaqueseuparametro ‘acct’ é 6065.
    • 34. Elemodifica o númeropara 6066.
    • 35. O atacanteacessainformaçõesdaconta de outrousuário.
    https://www.onlinebank.com/user?acct=6065
    28
  • 36. 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.
    29
  • 37. 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).
    30
  • 38. 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
    31
  • 39. A5 - Cross Site Request Forgery (CSRF)
    OWASP TOP 10
    32
  • 40. 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.
    33
  • 41. Finance
    Transactions
    Accounts
    Administration
    Communication
    Knowledge Mgmt
    E-Commerce
    Bus. Functions
    Custom Code
    Demo
    Atacantecriaumaarmadilhaem um site ou email
    1
    Aplicação com umavulnerabilidade CSRF
    Escondeemuma tag <img> um ataque contra umaaplicaçãovulnerável
    Quandologada no site vulnerável,
    a vítimavisita o site do atacante
    2
    3
    O aplicaçãovulnerávelrecebe a requisiçãolegítima da vítima e executa o comando da requisição
    A tag <img> carregadapelonavegadorenviaumarequisição GET incluíndo as credenciaispara a aplicaçãovulnerável
    Video
    34
  • 42. Proteção
    • Requererumasegundaautenticaçãoparafunçõessensíveis (captcha, tabela de senhas, geolocation).
    Adicionar um token secretosensível a requisição.
    • Armazenar um token simples emcadasessão e o armazenaremcadaformulárioou link.
    35
  • 43. 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
    Evitarataques de CSRF emjava por Lucas Ferreira- http://goo.gl/AjrDv
    36
  • 44. A6 - ConFiguraçãoinapropriada de segurança
    OWASP TOP 10
    37
  • 45. O que é?
    Ocorrequandopáginas do sistemaestãodisponíveisparaseremacessadasporqualquerusuário.
    Exemplo:
    O usuáriotentaacessarurlspadrões de páginas de configuração.
    http://exemplo.com/config
    38
  • 46. 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.
    39
  • 47. 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 ConfigurationGuides/Benchmarks http://goo.gl/vC73u
    40
  • 48. A7 - ArmazenamentoInseguro - Criptografia
    OWASP TOP 10
    41
  • 49. 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.
    42
  • 50. Impacto Típico
    • Atacantes podem acessar informações sensíveis.
    • 51. Atacantes extraem informações secretas para utilizar em outros ataques.
    • 52. Perda de credibilidade da empresa.
    43
  • 53. Finance
    Transactions
    Accounts
    Administration
    Communication
    Knowledge Mgmt
    E-Commerce
    Bus. Functions
    Custom Code
    Cenário
    Vítimaentra com o número do cartão de créditoem um formulário
    1
    Log files
    Um desenvolvedormaliciosorouba o número de várioscartões de crédito
    4
    2
    Ocorre um erronaaplicação e o número do cartão de crédito do
    usuário é armazenado no log
    3
    Os logs sãoacessíveispelosdesenvolvedores da aplicaçãoporpropósitos de depuração de erros
    44
  • 54. Proteção
    • Identifiquetodosos dados sensíveis.
    Identifique o lugar aondeos dados serãoarmazenados.
    Use algoritmos fortes e bemconhecidos.
    Gerencie corretamente as chaves.
    45
  • 55. Referências
    ESAPI EncryptorAPI - http://goo.gl/y5FI5
    OWASP Development Guide: Chapter on Cryptography - http://goo.gl/0SaiU
    OWASP CodeReviewGuide: ChapteronCryptography - http://goo.gl/KdBys
    CWE Entry 310 on Cryptographic Issues - http://goo.gl/QRO2E
    46
  • 56. A8 - Falha de restrição de acesso à URL
    OWASP TOP 10
    47
  • 57. O que é?
    Algumaspáginasnãofazemverificação de acesso.
    Complemento da vulnerabilidadeA4 - Referência direta insegura aos objetos
    48
  • 58. Cenário
    • 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
    49
  • 61. 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.
    50
  • 62. 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
    51
  • 63. A9 - Proteção insuficiente na camada de transporte
    OWASP TOP 10
    52
  • 64. O que é?
    Transmissão de dados sensíveis de forma insegura.
    Firesheep
    53
  • 65. Demo
    Parceiro de negócio
    Vítimaexterna
    Backend Systems
    Custom Code
    Empregados
    2
    1
    Um atacante externo rouba credenciais e dados da rede externa
    Um atacanteinternoroubacredenciais e dados da redeinterna
    Atacanteexterno
    Atacante interno
    Video
    54
  • 66. Proteção
    Usar SSL/TLS emtodas as conexões com dados sensíveis.
    Assinarmensagens antes de transmiti-las.
    Gerenciarchavescorretamente.
    Verificarcertificados SSL antes de usá-los.
    (origem, autoassinados)
    55
  • 67. Referências
    Firesheep - http://goo.gl/yEcU
    Blacksheep- http://goo.gl/3dagf
    HTTPS Everywhere - http://goo.gl/fsKV
    OWASP ProteçãonaCamada de Transporte - http://goo.gl/McooF
    56
  • 68. A10 - encaminhamento e redirecionamento sem validação
    OWASP TOP 10
    57
  • 69. Finance
    Transactions
    Accounts
    Administration
    Communication
    Knowledge Mgmt
    E-Commerce
    Bus. Functions
    Custom Code
    Redirecionamento sem validação
    1
    Atacanteenvia um email parasuavítima
    From: ServiçosinternosSubject: Suarestituição de impostosNossosregistrosmostramque o senhorpossuiimpostos a restituir, por favor clique aqui.
    3
    A aplicaçãoredireciona a vítima
    A vítimaclica e o endereçopossue um parâmetrosemvalidação
    2
    A requisiçãoenviapara o site vulnerável o parâmetro,semservalidado. Redirecionando a vítimapara o site do atacante.
    Evil Site
    4
    Evil site instala um malware navítima
    http://www.irs.gov/taxrefund/claim.jsp?year=2006&… &dest=www.evilsite.com
    58
  • 70. Encaminhamento sem validação
    1
    O atacanteenvia um ataqueparaumapáginavulnerável
    A páginarequisitadapossuiacesso a umaárearestrita. E o atacanteconseguiserencaminhadoparaestapágina, burlando o controle de acesso.
    public void sensitiveMethod( HttpServletRequest request, HttpServletResponse response) {
    try {
    // Do sensitive stuff here.
    ...
    }
    catch ( ...
    A aplicaçãoautoriza a requisição
    2
    Filtro
    3
    Falha a autorização do encaminhamento e o atacanteburla o controle de acesso.
    public void doPost( HttpServletRequest request, HttpServletResponse response) {
    try {
    String target = request.getParameter( "dest" ) );
    ...
    request.getRequestDispatcher( target ).forward(request, response);
    }
    catch ( ...
    59
  • 71. 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.
    60
  • 72. 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
    61
  • 73. 2007 x 2010
    =
    =
    +
    =
    +
    -
    -
    62
  • 74. Perguntas?
    Obrigado!
    leandrosantos@inbrax.com
    thiago.melo.stuckert@gmail.com.br
    Apoio:
    63

×