Tratando as vulnerabilidades do Top 10 com php

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    1 Favorite

    Tratando as vulnerabilidades do Top 10 com php - Presentation Transcript

    1. Tratando as vulnerabilidades do Top 10 do OWASP Php Conference – São Paulo 28/11/2008 Wagner Elias Research & Development Manager Brazilian Chapter Leader http://wagnerelias.com http://www.conviso.com.br
    2. Agenda
      • Um pouco de OWASP
      • Top 10 2007
        • 1 – XSS (Cross Site Scripting)
        • 2 – Falhas de Injeção
        • 3 – Execução Maliciosa de Arquivos
        • 4 – Referência Direta a Objetos
        • 5 – CSRF (Cross Site Request Forgery)
        • 6 – Vazamento de Informações
        • 7 – Furo de Autenticação
        • 8 – Armazenamento Criptográfico
        • 9 – Comunicação Insegura
        • 10 – Restrição de Acesso a URL
      • Encerramento
    3. O que é OWASP?
      • Open Web Application Security Project
      • Educar e conscientizar segurança para desenvolvedores, designers, arquitetos e organizações.
    4. Como funciona?
      • Documentação
        • Wiki e Books
          • Code Review, Testing Guide, Building, Top Ten, …
      • Code Projects
        • Projetos ferramentas ofensivas/defensivas
        • Processos, procedimentos …
        • Educação e outros
      • Chapters (Capítulos)
        • Grupo de usuários
        • +100 e crescendo
      • Conferências
        • Grandes e pequenos eventos ao redor do mundo
    5. Brazilian Chapter (OWASP-BR)
      • Positive Security Project
        • Melhorar a postura das empresas em relação a segurança em aplicações
      • Application Security Desk Reference Project (ASDR)
        • Guia de referência sobre segurança em aplicações web
        • Princípios, agentes de ameça, controles, vulnerabilidades e ataques, impactos de negócio e técnicos
      • Traduções
        • WebGoat
        • Top Ten Project
      • Lista de discussão ativa, participe!
        • http://lists.owasp.org/mailman/listinfo/owasp-brazilian
      • Acompanhe e colabore com o wiki do capítulo
        • http://www.owasp.org/index.php/Brazilian
    6. Patrocinadores / Membros
    7. Quem contribui?
    8. Tratando as vulnerabilidades do Top 10 do OWASP Top 10 2007
    9. O que é?
      • Estudo da OWASP que busca identificar e classificar as 10 principais vulnerabilidades encontradas em ambientes WEB
      • Traduzido para vários idiomas e atualizado regularmente
          • Pt-Br:http://www.owasp.org/images/4/42/OWASP_TOP_10_2007_PT-BR.pdf
    10. Tratando as vulnerabilidades do Top 10 do OWASP 1 – XSS (Cross Site Scripting)
    11. 1 - Cross Site Scripting (XSS)
      • Permite que um atacante insira um script na página que será mostrada à vítima.
      • Afeta qualquer ambiente web
      • Efeitos:
        • Seqüestro de sessão
        • Inserção de código ou conteúdo hostil
        • Roubo de informações
        • Controle do navegador da vítima
    12. Tipos de Cross Site Scripting
      • Refletido
        • Quando o site reflete para o usuário todo ou parte do conteúdo da requisição
      • Armazenado
        • O script é armazenado em base de dados e é mostrado às vítimas posteriormente
      • Inserção DOM
        • Os scripts da página são alterados
    13. Tratando em php
      • Sanitize os dados usando
        • htmlentities() ou htmlspecialchars()
    14. Tratando as vulnerabilidades do Top 10 do OWASP 2 – Falha de Injeção
    15. 2 - Falhas de Injeção
      • Várias linguagens envolvidas:
        • SQL
        • LDAP
        • HTML
        • XSLT
        • XML
        • Comandos de interpretadores do sistema operacional (cmd, shell, etc)
    16. Falhas de Injeção
      • Como acontecem:
        • Dados fornecidos por usuários são usados como parte de comandos ou consultas
        • Dados são manipulados para alterar os comandos enviados ao interpretador
        • Atacante pode se utilizar das permissões da aplicação para ler e/ou alterar dados
        • Pode permitir execução de programas
    17. Falhas de Injeção
      • Ambientes afetados:
        • Quaisquer ambientes que utilizem interpretadores
        • Muito comum no acesso a bases de dados
          • SQL Injection
    18. Dicas
      • Valide sempre
        • Expressões regulares são sempre uma boa
      • Adote camada de abstração de dados
        • Bibliotecas de ORM são bastante eficazes para evitar falhas de SQL Injection. Exemplo ADOdb, PDO.
      • Use procedimentos armazenados
        • Prepared Statements (Bind Variables)
      • Evite usar a chamada padrão de query do MySQL ( mysqli_multi_query()) use
        • mysqli_query()
      • Não confie
        • No usuário e no magic_quotes /addslashes() 
    19. Tratando em php
      • Sanitize os dados usando
        • escapeshellcmd()
    20. Tratando em php
      • Evite, mas se precisar interagir com shell use
        • escapeshellarg()
    21. Tratando em php
      • Referenciando path de forma segura, evitando path traversal
        • realpath()
    22. Tratando em php
        • Evitando SQL Injection com mysql_escape_string() (não é uma solução definitiva, sujeito a SQL Injection usando técnicas de encode.) Só Bind Variables Salva 
    23. Tratando as vulnerabilidades do Top 10 do OWASP 3 – Execução Maliciosa de Arquivos
    24. 3 - Execução Maliciosa de Arquivo
      • Execução de conteúdo externo ao código da aplicação
      • Permite realizar
        • Execução remota de código
        • Instalação de rootkits
    25. Execução Maliciosa de Arquivo
      • Ambientes afetados:
        • Sistemas que aceitam nomes de arquivos
        • Sistemas que recebem arquivos
        • Ambientes interpretados
    26. Tratando em php
      • Desabilite estas funções que são habilitadas por default
        • allow_url_fopen e allow_url_include
      • Cuidado com as funções
        • eval()
        • passthru()
        • Streams (stream_*)
    27. Tratando as vulnerabilidades do Top 10 do OWASP 4 – Referência Direta a Objetos
    28. 4 - Referência Direta a Objeto
      • Ocorre quando a aplicação expõe referência direta a objeto interno
        • Arquivo
        • Diretório
        • Registro de base de dados
        • URL
        • Parâmetro
    29. Referência Direta a Objeto
      • Permite ao atacante manipular a referência e burlar controles de acesso
      • Exemplo:
        • Aplicação utiliza CPF na URL para identificar usuário
        • Atacante manipula a URL e altera o CPF
        • Atacante acessa dados de outros CPFs
    30. Referência Direta a Objeto
      • Ambientes afetados:
        • Qualquer ambiente web
      • Solução
        • Usar sessões
        • Armazenar identificadores internos na sessão do usuário
        • Usar identificadores de sessão aleatórios (token)
    31. Tratando em php
      • O recurso de _autoload é uma boa opção
    32. Tratando as vulnerabilidades do Top 10 do OWASP 5 – CSRF (Cross Site Request Forgery)
    33. 5 - Cross Site Request Forgery (CSRF)
      • Usar sessão já aberta pelo usuário para enviar comandos para a aplicação
        • Usuário loga na aplicação alvo
        • Usuário acessa site do atacante
        • Scripts do atacante usam a sessão da aplicação alvo
          • Enviam comandos em nome do usuário na sessão já aberta
    34. Cross Site Request Forgery
      • Quando ocorre:
        • Não há verificação de autorização
        • Ação é executada quando credenciais são enviadas na URL
        • As credenciais são submetidas automaticamente
          • Cookies
    35. Cross Site Request Forgery
      • A maioria das aplicações atuais estão vulneráveis
        • Aplicações de Internet Banking pedem a senha para operações de atualização
      • Ambientes afetados:
        • Todos os ambientes web
    36. Tratando em php
      • Evite
        • Que funções críticas na aplicação sejam feitas sem a necessidade de re-autenticação
        • Não use apenas $_REQUEST[‘input‘]
      • Utilize
        • Corretamente $_COOKIE, $_GET e $_POST
        • Token em todas as requisições
    37. Tratando as vulnerabilidades do Top 10 do OWASP 6 – Vazamento de Informações
    38. 6 - Vazamento de Informações
      • Nome completo:
        • Vazamento de informações e tratamento de erros inapropriado
      • A própria aplicação informa ao atacante:
        • Configurações
        • Arquitetura interna
        • Plataformas
        • Dados sigilosos
    39. Vazamento de Informações
      • Formas de vazamento:
        • Tempo de resposta
        • Respostas diferentes para diferentes entradas
          • Página de erro com códigos diferentes
        • Páginas de erros com informações de debug
          • Stack trace na página de erro
      • Ambientes afetados:
        • Todos
    40. Tratando em php
      • Cuidado com informações sobre o ambiente
        • Phpinfo()
        • Server-Status
      • Configure no php.ini
        • log_errors = On
        • display_errors = Off
    41. Tratando as vulnerabilidades do Top 10 do OWASP 7 – Furo de Autenticação
    42. 7 - Furo de Autenticação
      • Nome completo:
        • Furo de autenticação e gerência de sessão
      • Problemas mais comuns:
        • Falhas de proteção de credenciais
        • Falha de proteção de identificadores de sessão
      • Ambientes afetados:
        • Todos os ambientes
    43. Furo de Autenticação
      • Conseqüências:
        • Roubos de contas
        • Seqüestro de sessão
        • Violações de privacidade
        • Acessos não autorizados
        • Personificação de usuários ( impersonation )
    44. Dicas
      • Nunca faça
        • Armazenamento de senhas. Nem mesmo criptografadas
        • Não use mais md5 e sha-1
      • Faça
        • Armazene apenas o hash + salt das senhas
        • Fortaleça as configurações de sessão
          • session.save_path = [diretório protegido]
          • session.cookie_httponly = 1 (acesso apenas por HTTP)
          • session.cookie_secure = 1 (força o uso de HTTPS)
    45. Números aleatórios
      • Cuidado com as funções geradoras de números aleatórios
        • rand(), srand(), mt_rand(), mt_srand()
        • Uma falha na implementação destas funções causou inúmeras falhas em sistemas de autenticação em projetos open source
    46. Tratando em php
      • Utilize outros algoritmos de hash
    47. Tratando as vulnerabilidades do Top 10 do OWASP 8 – Armazenamento Criptográfico
    48. 8 - Armazenamento Criptográfico
      • Nome Completo:
        • Armazenamento Criptográfico Inseguro
      • Aplicações tem dados sensíveis
        • Algumas não criptografam
        • Outras criptografam de forma insegura
          • Algoritmos mal concebidos
          • Mecanismos inapropriados
          • Erros no uso de criptografia
            • Mesmo com algoritmos adequados
    49. Armazenamento Criptográfico
      • Ambientes afetados
        • Todos
      • Problemas mais comuns:
        • Não criptografar dados sensíveis
        • Uso inseguro de algoritmos fortes
          • Chaves fracas
        • Uso de algoritmos caseiros ou de algoritmos fracos
        • Armazenar chaves em sistemas de armazenamento desprotegidos
    50. Tratando em php
      • Use
        • Mcrypt com algoritmos conhecidos de criptografia
      • Cuidados
        • Implementação do algoritmo
        • Armazenamento da chave
        • Cifra de César e XOR não funcionam
    51. Tratando as vulnerabilidades do Top 10 do OWASP 9 – Comunicação Insegura
    52. 9 - Comunicações inseguras
      • Todo o tráfego autenticado da aplicação deve ser criptografado
        • Usar SSL ou equivalente:
          • Entre aplicação e cliente
          • Entre aplicação e back-end (base de dados)
      • Sempre autenticar (ou re-autenticar) antes de transmitir dados sigilosos
      • Ambientes afetados:
        • todos
    53. Tratando as vulnerabilidades do Top 10 do OWASP 10 – Restrições de Acesso a URL
    54. 10 - Restrições de acesso a URLs
      • Nome completo:
        • Falha ao restringir acesso a URLs
      • Aplicações tem páginas internas
        • Estas páginas só devem ser acessadas:
          • Por usuários autenticados ou
          • Após determinada operação
      • O acesso a páginas internas deve ser controlado corretamente
    55. Restrições de acesso a URLs
      • Ambientes Afetados:
        • Todos
      • Problemas:
        • Navegação forçada:
          • Adivinhação de URLs
          • Força bruta
      • Ocorre porque a página não verifica se usuário deveria acessar
    56. Tratando em php
      • Controle de acesso
        • Estabeleça um bom controle de acesso as informações da aplicação
      • Hardening de sessão
        • A sessão é responsável por manter o estado das conexões, garanta que as sessões terão segurança adequada
    57. Tratando as vulnerabilidades do Top 10 do OWASP Encerrando
    58. Fiquem de olho
      • Port do projeto ESAPI para php
        • Biblioteca completa para tratar as vulnerabilidades do Top 10
      • AppSec Latin America 2009
        • Conferência que será realizada no Brasil e irá unir especialistas do mundo todo para tratar de segurança em aplicações WEB
    59. REFERÊNCIAS
      • http://www.owasp.org
        • Code Review Guide
          • www.owasp.org/index.php/Category:OWASP_Code_Review_Project
        • Development Guide
          • www.owasp.com.br/index.php/Category:OWASP_Guide_Project
        • Testing Guide
          • www.owasp.com.br/index.php/Category:OWASP_Testing_Project
        • Application Security Desk Reference
          • www.owasp.com.br/index.php/Category:OWASP_ASDR_Project
        • Top Ten Project
          • www.owasp.com.br/index.php/Category:OWASP_Top_Ten_Project
      • http://br.php.net/manual/
    60. Perguntas
          • Obrigado

    + Conviso IT SecurityConviso IT Security, 2 years ago

    custom

    1734 views, 1 favs, 1 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 1734
      • 1675 on SlideShare
      • 59 from embeds
    • Comments 0
    • Favorites 1
    • Downloads 50
    Most viewed embeds
    • 59 views on http://wagnerelias.com

    more

    All embeds
    • 59 views on http://wagnerelias.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories