tratando as vulnerabilidades do top 10 com php

Post on 20-Aug-2015

7.225 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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 vulnerabilidades 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

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

O que é OWASP?

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

designers, arquitetos e organizações.

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

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

Patrocinadores / Membros

Quem contribui?

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

Top 10 2007

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

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

1 – XSS (Cross Site Scripting)

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 hostilRoubo de informaçõesControle do navegador da vítima

Tipos de Cross Site Scripting

RefletidoQuando o site reflete para o usuário todo

ou parte do conteúdo da requisição

ArmazenadoO script é armazenado em base de dados e

é mostrado às vítimas posteriormente

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

Tratando em php

Sanitize os dados usandohtmlentities() ou htmlspecialchars()

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

2 – Falha de Injeção

2 - Falhas de Injeção

Várias linguagens envolvidas:SQLLDAPHTMLXSLTXMLComandos de interpretadores do sistema

operacional (cmd, shell, etc)

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

Falhas de Injeção

Ambientes afetados:Quaisquer ambientes que utilizem

interpretadoresMuito comum no acesso a bases de dados

SQL Injection

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()

Tratando em php

Sanitize os dados usandoescapeshellcmd()

Tratando em php

Evite, mas se precisar interagir com shell useescapeshellarg()

Tratando em php

Referenciando path de forma segura, evitando path traversal realpath()

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

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

3 – Execução Maliciosa de Arquivos

3 - Execução Maliciosa de Arquivo

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

Permite realizarExecução remota de código Instalação de rootkits

Execução Maliciosa de Arquivo

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

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_*)

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

4 – Referência Direta aObjetos

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

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

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)

Tratando em php

O recurso de _autoload é uma boa opção

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

5 – CSRF (Cross Site Request Forgery)

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

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

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ção

Ambientes afetados:Todos os ambientes web

Tratando em php

EviteQue 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

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

6 – Vazamento de Informações

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çõesArquitetura internaPlataformasDados sigilosos

Vazamento de Informações

Formas de vazamento:Tempo de respostaRespostas 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

Tratando em php

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

Configure no php.ini log_errors = On display_errors = Off

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

7 – Furo de Autenticação

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

Furo de Autenticação

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

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)

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

Tratando em php

Utilize outros algoritmos de hash

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

8 – Armazenamento Criptográfico

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

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

Tratando em php

UseMcrypt com algoritmos conhecidos de

criptografia

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

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

9 – Comunicação Insegura

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

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

10 – Restrições de Acesso a URL

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

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

Tratando em php

Controle de acessoEstabeleça um bom controle de acesso as

informações da aplicação

Hardening de sessãoA sessão é responsável por manter o

estado das conexões, garanta que as sessões terão segurança adequada

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

Encerrando

Fiquem de olho

Port do projeto ESAPI para phpBiblioteca completa para tratar as

vulnerabilidades do Top 10

AppSec Latin America 2009Conferência que será realizada no Brasil e

irá unir especialistas do mundo todo para tratar de segurança em aplicações WEB

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/

Perguntas

Obrigado

top related