Your SlideShare is downloading. ×
0
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
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

Tratando as vulnerabilidades do Top 10 com php

7,116

Published on

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
7,116
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
267
Comments
0
Likes
3
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. 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

×