60
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP Foundation http://www.owasp.org 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

Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Embed Size (px)

DESCRIPTION

Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Citation preview

Page 1: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Copyright © The OWASP FoundationPermission is granted to copy, distribute and/or modify this document under the terms of the OWASP License.

The OWASP Foundationhttp://www.owasp.org

Tratando as vulnerabil idades do Top 10 do OWASPPhp Conference – São Paulo 28/11/2008

Wagner EliasResearch & Development Manager Brazilian Chapter Leaderhttp://wagnerelias.comhttp://www.conviso.com.br

Page 2: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Agenda Um pouco de OWASP Top 10 2007

1 – XSS (Cross Site Scripting)2 – Falhas de Injeção3 – Execução Maliciosa de Arquivos4 – Referência Direta a Objetos5 – CSRF (Cross Site Request Forgery)6 – Vazamento de Informações7 – Furo de Autenticação8 – Armazenamento Criptográfico9 – Comunicação Insegura10 – Restrição de Acesso a URL

Encerramento

Page 3: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

O que é OWASP?

Open Web Application Security Project Educar e conscientizar segurança para desenvolvedores, designers,

arquitetos e organizações.

Page 4: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Como funciona?

DocumentaçãoWiki e Books

Code Review, Testing Guide, Building, Top Ten, …

Code Projects Projetos ferramentas ofensivas/defensivasProcessos, procedimentos …Educação e outros

Chapters (Capítulos)Grupo de usuários+100 e crescendo

ConferênciasGrandes e pequenos eventos ao redor do mundo

Page 5: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Brazil ian Chapter (OWASP-BR)

Positive Security ProjectMelhorar 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 webPrincípios, agentes de ameça, controles, vulnerabilidades e

ataques, impactos de negócio e técnicos Traduções

WebGoatTop Ten Project

Lista de discussão ativa, participe!http://lists.owasp.org/mailman/listinfo/owasp-brazilian

Acompanhe e colabore com o wiki do capítulohttp://www.owasp.org/index.php/Brazilian

Page 6: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Patrocinadores / Membros

Page 7: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Quem contribui?

Page 8: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Copyright © The OWASP FoundationPermission is granted to copy, distribute and/or modify this document under the terms of the OWASP License.

The OWASP Foundationhttp://www.owasp.org

Tratando as vulnerabil idades do Top 10 do OWASP

Top 10 2007

Page 9: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

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

Page 10: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Copyright © The OWASP FoundationPermission is granted to copy, distribute and/or modify this document under the terms of the OWASP License.

The OWASP Foundationhttp://www.owasp.org

Tratando as vulnerabil idades do Top 10 do OWASP

1 – XSS (Cross Site Scripting)

Page 11: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

1 - Cross Site Scripting (XSS)

Permite que um atacante insira um script na página que será mostrada à vítima.

Afeta qualquer ambiente webEfeitos:

Seqüestro de sessãoInserção de código ou conteúdo hostilRoubo de informaçõesControle do navegador da vítima

Page 12: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Tipos de Cross Site Scripting

RefletidoQuando o site reflete para o usuário todo ou parte

do conteúdo da requisiçãoArmazenado

O script é armazenado em base de dados e é mostrado às vítimas posteriormente

Inserção DOMOs scripts da página são alterados

Page 13: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Tratando em php

Sanitize os dados usandohtmlentities() ou htmlspecialchars()

Page 14: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Copyright © The OWASP FoundationPermission is granted to copy, distribute and/or modify this document under the terms of the OWASP License.

The OWASP Foundationhttp://www.owasp.org

Tratando as vulnerabil idades do Top 10 do OWASP

2 – Falha de Injeção

Page 15: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

2 - Falhas de Injeção

Várias linguagens envolvidas:SQLLDAPHTMLXSLTXMLComandos de interpretadores do sistema

operacional (cmd, shell, etc)

Page 16: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Falhas de Injeção

Como acontecem:Dados fornecidos por usuários são usados como

parte de comandos ou consultasDados são manipulados para alterar os

comandos enviados ao interpretadorAtacante pode se utilizar das permissões da

aplicação para ler e/ou alterar dadosPode permitir execução de programas

Page 17: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Falhas de Injeção

Ambientes afetados:Quaisquer ambientes que utilizem interpretadoresMuito comum no acesso a bases de dados

SQL Injection

Page 18: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Dicas

Valide sempreExpressões regulares são sempre uma boa

Adote camada de abstração de dadosBibliotecas 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()) usemysqli_query()

Não confieNo usuário e no magic_quotes /addslashes()

Page 19: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Tratando em php

Sanitize os dados usandoescapeshellcmd()

Page 20: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Tratando em php

Evite, mas se precisar interagir com shell useescapeshellarg()

Page 21: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Tratando em php

Referenciando path de forma segura, evitando path traversalrealpath()

Page 22: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

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

Page 23: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Copyright © The OWASP FoundationPermission is granted to copy, distribute and/or modify this document under the terms of the OWASP License.

The OWASP Foundationhttp://www.owasp.org

Tratando as vulnerabil idades do Top 10 do OWASP

3 – Execução Maliciosa de Arquivos

Page 24: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

3 - Execução Maliciosa de Arquivo

Execução de conteúdo externo ao código da aplicação

Permite realizarExecução remota de códigoInstalação de rootkits

Page 25: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Execução Maliciosa de Arquivo

Ambientes afetados:Sistemas que aceitam nomes de arquivosSistemas que recebem arquivosAmbientes interpretados

Page 26: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Tratando em php

Desabilite estas funções que são habilitadas por defaultallow_url_fopen e allow_url_include

Cuidado com as funçõeseval()passthru()Streams (stream_*)

Page 27: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Copyright © The OWASP FoundationPermission is granted to copy, distribute and/or modify this document under the terms of the OWASP License.

The OWASP Foundationhttp://www.owasp.org

Tratando as vulnerabil idades do Top 10 do OWASP

4 – Referência Direta aObjetos

Page 28: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

4 - Referência Direta a Objeto

Ocorre quando a aplicação expõe referência direta a objeto internoArquivoDiretórioRegistro de base de dadosURLParâmetro

Page 29: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

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árioAtacante manipula a URL e altera o CPFAtacante acessa dados de outros CPFs

Page 30: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Referência Direta a Objeto

Ambientes afetados:Qualquer ambiente web

SoluçãoUsar sessõesArmazenar identificadores internos na sessão do

usuárioUsar identificadores de sessão aleatórios (token)

Page 31: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Tratando em php

O recurso de _autoload é uma boa opção

Page 32: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Copyright © The OWASP FoundationPermission is granted to copy, distribute and/or modify this document under the terms of the OWASP License.

The OWASP Foundationhttp://www.owasp.org

Tratando as vulnerabil idades do Top 10 do OWASP

5 – CSRF (Cross Site Request Forgery)

Page 33: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

5 - Cross Site Request Forgery (CSRF)

Usar sessão já aberta pelo usuário para enviar comandos para a aplicaçãoUsuário loga na aplicação alvoUsuário acessa site do atacanteScripts do atacante usam a sessão da aplicação

alvo Enviam comandos em nome do usuário na sessão já

aberta

Page 34: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Cross Site Request Forgery

Quando ocorre:Não há verificação de autorizaçãoAção é executada quando credenciais são

enviadas na URLAs credenciais são submetidas automaticamente

Cookies

Page 35: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Cross Site Request Forgery

A maioria das aplicações atuais estão vulneráveisAplicações de Internet Banking pedem a senha

para operações de atualizaçãoAmbientes afetados:

Todos os ambientes web

Page 36: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Tratando em php

EviteQue funções críticas na aplicação sejam feitas

sem a necessidade de re-autenticaçãoNão use apenas $_REQUEST[‘input‘]

Utilize Corretamente $_COOKIE, $_GET e $_POST Token em todas as requisições

Page 37: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Copyright © The OWASP FoundationPermission is granted to copy, distribute and/or modify this document under the terms of the OWASP License.

The OWASP Foundationhttp://www.owasp.org

Tratando as vulnerabil idades do Top 10 do OWASP

6 – Vazamento de Informações

Page 38: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

6 - Vazamento de Informações

Nome completo:Vazamento de informações e tratamento de erros

inapropriadoA própria aplicação informa ao atacante:

ConfiguraçõesArquitetura internaPlataformasDados sigilosos

Page 39: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Vazamento de Informações

Formas de vazamento:Tempo de respostaRespostas diferentes para diferentes entradas

Página de erro com códigos diferentesPáginas de erros com informações de debug

Stack trace na página de erro

Ambientes afetados:Todos

Page 40: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Tratando em php

Cuidado com informações sobre o ambientePhpinfo()Server-Status

Configure no php.inilog_errors = On display_errors = Off

Page 41: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Copyright © The OWASP FoundationPermission is granted to copy, distribute and/or modify this document under the terms of the OWASP License.

The OWASP Foundationhttp://www.owasp.org

Tratando as vulnerabil idades do Top 10 do OWASP

7 – Furo de Autenticação

Page 42: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

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 credenciaisFalha de proteção de identificadores de sessão

Ambientes afetados:Todos os ambientes

Page 43: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Furo de Autenticação

Conseqüências:Roubos de contasSeqüestro de sessãoViolações de privacidadeAcessos não autorizadosPersonificação de usuários (impersonation)

Page 44: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Dicas

Nunca façaArmazenamento de senhas. Nem mesmo

criptografadasNão use mais md5 e sha-1

FaçaArmazene apenas o hash + salt das senhasFortaleç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)

Page 45: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Números aleatórios

Cuidado com as funções geradoras de números aleatóriosrand(), 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

Page 46: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Tratando em php

Utilize outros algoritmos de hash

Page 47: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Copyright © The OWASP FoundationPermission is granted to copy, distribute and/or modify this document under the terms of the OWASP License.

The OWASP Foundationhttp://www.owasp.org

Tratando as vulnerabil idades do Top 10 do OWASP

8 – Armazenamento Criptográfico

Page 48: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

8 - Armazenamento Criptográfico

Nome Completo:Armazenamento Criptográfico Inseguro

Aplicações tem dados sensíveisAlgumas não criptografamOutras criptografam de forma insegura

Algoritmos mal concebidos Mecanismos inapropriados Erros no uso de criptografia

– Mesmo com algoritmos adequados

Page 49: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Armazenamento Criptográfico

Ambientes afetadosTodos

Problemas mais comuns:Não criptografar dados sensíveisUso inseguro de algoritmos fortes

Chaves fracasUso de algoritmos caseiros ou de algoritmos

fracosArmazenar chaves em sistemas de

armazenamento desprotegidos

Page 50: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Tratando em php

UseMcrypt com algoritmos conhecidos de criptografia

CuidadosImplementação do algoritmoArmazenamento da chaveCifra de César e XOR não funcionam

Page 51: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Copyright © The OWASP FoundationPermission is granted to copy, distribute and/or modify this document under the terms of the OWASP License.

The OWASP Foundationhttp://www.owasp.org

Tratando as vulnerabil idades do Top 10 do OWASP

9 – Comunicação Insegura

Page 52: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

9 - Comunicações inseguras

Todo o tráfego autenticado da aplicação deve ser criptografadoUsar 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

Page 53: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Copyright © The OWASP FoundationPermission is granted to copy, distribute and/or modify this document under the terms of the OWASP License.

The OWASP Foundationhttp://www.owasp.org

Tratando as vulnerabil idades do Top 10 do OWASP

10 – Restrições de Acesso a URL

Page 54: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

10 - Restrições de acesso a URLs

Nome completo:Falha ao restringir acesso a URLs

Aplicações tem páginas internasEstas 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

Page 55: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

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

Page 56: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Tratando em php

Controle de acessoEstabeleça um bom controle de acesso as

informações da aplicaçãoHardening 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

Page 57: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Copyright © The OWASP FoundationPermission is granted to copy, distribute and/or modify this document under the terms of the OWASP License.

The OWASP Foundationhttp://www.owasp.org

Tratando as vulnerabil idades do Top 10 do OWASP

Encerrando

Page 58: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Fiquem de olho

Port do projeto ESAPI para phpBiblioteca completa para tratar as

vulnerabilidades do Top 10AppSec 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

Page 59: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

REFERÊNCIAS

http://www.owasp.orgCode 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/

Page 60: Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias

Perguntas

Obrigado