Palestra de Desenvolvimento de Aplicações Web SegurasProf. Dércio Luiz Reis, Dr*
Porque segurança de aplicações é prioridade?Aplicações web são o foco número 1 dos hackers:75% dos ataques acontecem na camada da aplicação (Gartner)A maior parte das páginas web estão vulneráveis:90% dos sites são vulneráveis à ataques na aplicação (Watchfire)78% das vulnerabilidadesfacilmenteexploráveisafetamaplicações Web (Symantec)09/06/2010Prof. Dércio Luiz Reis, Dr*2
Porque segurança de aplicações é prioridade?80% das organizações irão experimentar um incidente em segurança de aplicações até 2010 (Gartner)Aplicações web são alvos de alto valor para hackers:Dados de clientes, cartão de crédito, roubo de identidade, fraude, etc.09/06/2010Prof. Dércio Luiz Reis, Dr*3
Porque segurança de aplicações é prioridade?No Brasil 13% das empresas que sofreram ataques tiveram prejuízos que ultrapassam R$ 1 Milhão (Módulo);Estudo realizado com 200 empresas brasileiras afirma que :67,5% sofreram algum tipo de ataquenosúltimos 12 meses (ISS);Instituiçõesfinanceirasnacionaistêmsofrido até 100 ataques frustrados por dia.09/06/2010Prof. Dércio Luiz Reis, Dr*4
Principaiscausas de vulnerabilidades09/06/2010Prof. Dércio Luiz Reis, Dr*5Principal problemade segurançaUsuários podem  submeter dados  de entradaarbitráriosPrincipaissinais de problemas:– Imaturidadeemsegurança;– Desenvolvimentoin-house;– Percepção de simplicidade;– Restrições de recursos e tempo;– Mau uso de tecnologias.
O Mito: Nosso site está seguro?Firewall;Network  Scanners;Auditorias de Segurança.09/06/2010Prof. Dércio Luiz Reis, Dr*6
Arquiteturabásica de segurança09/06/2010Prof. Dércio Luiz Reis, Dr*7
Proteções para o ambiente web09/06/2010Prof. Dércio Luiz Reis, Dr*8
A Realidade: Segurança e gastos estão desequilibrados09/06/2010Prof. Dércio Luiz Reis, Dr*9
É assim que uma aplicação parece para um hacker09/06/2010Prof. Dércio Luiz Reis, Dr*10
TOP 10 vulnerabilidade de aplicações Web09/06/201011Prof. Dércio Luiz Reis, Dr*
Tabela de Riscos09/06/2010Prof. Dércio Luiz Reis, Dr*12
Comparação da Lista OWASP09/06/2010Prof. Dércio Luiz Reis, Dr*13
TOP 10 vulnerabilidade de aplicações Web09/06/2010Prof. Dércio Luiz Reis, Dr*14
TOP 10 vulnerabilidade de aplicações Web09/06/2010Prof. Dércio Luiz Reis, Dr*15
TOP 10 vulnerabilidade de aplicações Web09/06/2010Prof. Dércio Luiz Reis, Dr*16
Tendências e Vulnerabilidades do MITRE09/06/2010Prof. Dércio Luiz Reis, Dr*17
Alguns Problemas descartados no estudo do OWASP (Open Web Application Security Project) TOP 10Entrada de dados não validados é o maior desafio para  qualquer time de desenvolvimento e é a origem dos problemas de segurança de muitas aplicações. A recomendação é criar um mecanismo de validação centralizado como parte de sua aplicação. Para maiores informações, leia os seguintes documentos de validação de dados da OWASP:http://www.owasp.org/index.php/Data_Validationhttp://www.owasp.org/index.php/Testing_for_Data_Validation 09/06/2010Prof. Dércio Luiz Reis, Dr*18
Alguns Problemas descartados no estudo do OWASP (Open Web Application Security Project) TOP 10Problemas de estouro de pilhas, estouro de inteiros e formato de strings são  vulnerabilidades extremamente sérias para programas escritos em linguagem C ou C++. A remediação para estes tipos de problemas são tratados por comunidades de segurança de aplicações tradicionais, como o SANS, CERT e pelos fornecedores de linguagem de programação.  Se o código é escrito em uma linguagem que é passível a estouros de pilha, recomenda-se ler os conteúdos a este respeito no site da OWASP:http://www.owasp.org/index.php/Buffer_overflow http://www.owasp.org/index.php/Testing_for_Buffer_Overflow09/06/2010Prof. Dércio Luiz Reis, Dr*19
Alguns Problemas descartados no estudo do OWASP (Open Web Application Security Project) TOP 10Gerenciamento de configuração insegura afeta todos os sistemas em alguma extensão, particularmente o PHP.  Quando implementando sua aplicação, você deve consultar a última versão do OWASP Guide e o OWASP testingGuide para informações detalhadas a respeito do gerenciamento de configuração segura e testes:http://www.owasp.org/index.php/Configurationhttp://www.owasp.org/index.php/Testing_for_infrastructure_configuration_management09/06/2010Prof. Dércio Luiz Reis, Dr*20
VulnerabilidadesConsiderando que o desenvolvedor observe os pontos abordados pelo documento será possível verificar uma redução direta nos seguintes pontos:Ataques de phishing, que podem explorar qualquer uma dessas vulnerabilidades, particularmente, XSS e problemas de autenticação e autorização (A1,A4,A7,A10)Violação de privacidadedevido à validação fraca, regras de negócio e verificações de autorização fracas (A2, A4, A6, A7, A10)Roubo de identidade por meio de controles de criptografia fracos ou não existentes (A8 e A9), inclusão de arquivo remoto (A3) e autenticação, regras de negócio e verificação de autorização (A4, A7, A10)09/06/2010Prof. Dércio Luiz Reis, Dr*21
POR QUE CONSIDERAR ALGUNS PROBLEMAS IMPORTANTESCross Site RequestForgery (CSRF) é a maior nova inclusão da edição do OWASP Top 10. Embora ocupe a 36ª posição na classificação original, acredita-se que ela seja de tamanha importância, que as aplicações devem iniciar seus esforços de proteção hoje, particularmente para aplicações de alto risco e criticidade. O CSRF é mais prevalente do que sua atual classificação e pode ser mais perigoso.Criptografia. O uso incorreto da criptografia não ocupam as posições 8 e 9 da classificação, conforme as informações do MITRE, porém representam a origem de muitos problemas de quebra de privacidade e conformidade (particularmente a  conformidade com o PCI DSS 1.1).09/06/2010Prof. Dércio Luiz Reis, Dr*22
VULNERABILIDADES, NÃO ATAQUESO foco é unicamente em vulnerabilidades, embora a terminologia utilizada comumente combine vulnerabilidades e ataques. Se as organizações usam este documento para tornar suas aplicações seguras e, consequentemente, reduzir o risco para seus negócios, será possível observar uma redução direta nos seguintes pontos:09/06/2010Prof. Dércio Luiz Reis, Dr*23
VULNERABILIDADES, NÃO ATAQUESAtaques de phishing, que podem explorar qualquer uma dessas vulnerabilidades, particularmente, XSS e problemas de autenticação e autorização (A1,A4,A7,A10)Violação de privacidade devido à validação fraca, regras de negócio e verificações de autorização fracas (A2, A4, A6, A7, A10)Roubo de identidade por meio de controles de criptografia fracos ou não existentes (A8 e A9), inclusão de arquivo remoto (A3) e autenticação, regras de negócio e verificação de autorização (A4, A7, A10)09/06/2010Prof. Dércio Luiz Reis, Dr*24
VulnerabilidadesComprometimento de sistema, alteração de informações e destruição de dados por ataques de injeção (A2) e inclusão de arquivo remoto (A3)Perda financeira por meio de transações não autorizadas e ataques CSRF (A4, A5, A7, A10)Perda de reputação devido à exploração de qualquer uma das vulnerabilidades acima (A1 à A10)09/06/2010Prof. Dércio Luiz Reis, Dr*25
Exemplos09/06/2010Prof. Dércio Luiz Reis, Dr*26
#1 – Cross Site Scripting (XSS)O que é? – Script malicioso ecoado de volta, embutido no código HTML retornado de um site confiável;Quaissão as implicações?– Sequestro de sessões;– Atacantes podem executar scripts no navegador da vítima;– Conteúdodapáginacomprometido;– Introduzir worms.09/06/2010Prof. Dércio Luiz Reis, Dr*27
#1 – Cross Site Scripting (XSS)09/06/2010Prof. Dércio Luiz Reis, Dr*28
#2 – SQL Injection (Injection Flaws)09/06/2010Prof. Dércio Luiz Reis, Dr*29
#3 – Cross Site Request Forgery (CSRF)O que é?    Transmite e executa comandos maliciosos entre sites  sem que o usuário perceba.Quaissão as implicações?     - Roubo de informações do usuário, como cookies  e sessões;     - Possibilidade de executar transações entre sites os  quais o usuário esteja autenticado;     - Risco se agrava quando o tempo de expiração de sessão é muitolongo.09/06/2010Prof. Dércio Luiz Reis, Dr*30
Quais preocupações os profissionais de T.I. devem ter ?O que os desenvolvedores e testadores da minha organização sabem sobre segurança da informação?• Eles têm meios de prevenir vulnerabilidades?• Apesar de nosso investimento em segurança de rede, será querealmenteestamosseguros?• Ainda que esteja seguro hoje, tenho como garantir que não haverá falhas de segurança no futuro?09/06/2010Prof. Dércio Luiz Reis, Dr*31
Segurança: Parte do Cliclo de Vida09/06/2010Prof. Dércio Luiz Reis, Dr*32
Testes de Segurança09/06/2010Prof. Dércio Luiz Reis, Dr*33Atuação de Softwares de Segurança
PROTEÇÃOTendo o tempo para planejar a autorização criando uma matriz para mapear as regras e as funções da aplicação é o passo primordial para alcançar a proteção contra acessos não autorizados. Aplicações web devem garantir controle de acesso em cada URL e funções de negócio. Não é suficiente colocar o controle de acesso na camada de apresentação e deixar a regra de negócio desprotegida. Também não é suficiente verificar uma vez o usuário autorizado e não verificar novamente nos passos seguintes. De outra forma, um atacante pode simplesmente burlar o passo onde a autorização é verificada e forjar o valor do parâmetro necessário e continuar no passo seguinte.09/06/2010Prof. Dércio Luiz Reis, Dr*34
PROTEÇÃOGaranta que a matriz do controle de acesso é parte do negócio, da arquitetura e do design daaplicação;Garanta que todas URLs e funções de negócio são protegidas por um mecanismo de controle de acesso efetivo que verifique as funções e direitos do usuário antes que qualquer processamento ocorra. Certifique-se que este processo é realizado em todos os passos do fluxo e não apenas no passo inicial de um processo, pois pode haver vários passos a seremverificados;09/06/2010Prof. Dércio Luiz Reis, Dr*35
PROTEÇÃORealize um teste invasão (penetrationtest) antes do código entrar em produção a fim de garantir que a aplicação não poderá ser utilizada de má fé por um atacante motivado ou com conhecimentos avançados.Preste muita atenção em arquivos de  includes/bibliotecas, especialmente se eles possuem extensões executáveis como .php. Sempre que possível, devem ser mantidos fora da raiz web. Devem ser  verificados se não estão sendo acessados diretamente, porexemplo, verificando por uma constante que pode somente ser criada através de uma biblioteca do chamador.09/06/2010Prof. Dércio Luiz Reis, Dr*36
PROTEÇÃONão suponha que usuários não estarão atentos ao acessar URLs ou APIs escondidas ou especiais. Sempre se assegure que ações com privilégios altos e administrativos estarão protegidos.Bloqueie acesso a todos os tipos de arquivos que a sua aplicação não deva executar. Este filtro deve seguir a abordagem “acceptknowngood” na qual apenas são permitidos tipos de arquivos que a aplicação deva executar, como por exemplo .html .pdf, .php. Isto irá bloquear qualquer tentativa de acesso a arquivos de log, arquivos XML, entre outros, aos quais se espera nunca serem executados diretamente.Mantenha o antivírus e as correções de segurança atualizados para componentes como processadores XML, processadores de texto, processadores de imagem, entre outros que manipulam arquivos fornecidos por usuários.09/06/2010Prof. Dércio Luiz Reis, Dr*37
RECOMENDAÇÕES AOS DESENVOLVEDORESPara garantir uma segurança efetiva no desenvolvimento de aplicações Web requer muita experiência, pois qualquer leigo pode atacar um sistema.09/06/2010Prof. Dércio Luiz Reis, Dr*38
RECOMENDAÇÕES AOS DESENVOLVEDORESFaça parte da comunidade e OWASP e freqüente as reuniões regionais.Procure por treinamentos sobre desenvolvimento de código seguro.Desenvolva suas aplicações com segurança, Crie códigos simples e com profunda segurança.Desenvolva com aplicações que favoreçam a segurança do código.Reconstrua o código de forma segura de acordo com a sua plataforma utilizando pesquisasotimizadas.09/06/2010Prof. Dércio Luiz Reis, Dr*39
RECOMENDAÇÕES AOS DESENVOLVEDORESLeia o guia OWASP e comece a aplicar controles mais seguros a seu código, diferente do outros guias ele é desenvolvido para ajudá-lo a criar aplicações seguras e não a quebrá-las.Faça os testes de segurança e defeitos do seu código e torne esta prática constante no seudia-a-dia.Revise o livro de referências e veja se existem opções que se aplicam ao seu ambiente de trabalho.09/06/2010Prof. Dércio Luiz Reis, Dr*40
Ferramentas Free (Instalação)A utilização dos softwares apresentados em seguida destinam-se ao teste e verificação de vulnerabilidades  de segurança e seu dependerá do contexto e da necessidade de verificação da segurança dos aplicativos.09/06/2010Prof. Dércio Luiz Reis, Dr*41
Firefox Instalando o FirefoxO Firefox web browser  com sua arquitetura extensível add-on, é o melhor browser para teste de segurança de aplicações Web.A recomendação é que ele seja utilizado como o browser padrão do seu sistema.   Proceda o download e complete sua instalação. Visite  www.mozilla.com Mesmo que sua aplicação não seja especificamente escrita para compatibilidade com o Firefox, os aspectos de seguranças podem ser verificados por ele.09/06/2010Prof. Dércio Luiz Reis, Dr*42
Firefox ExtensionsAs extensões do Firefox permitem adicionar várias funcionalidades ao Firefox.  Recomendamos  algumas extensões em particular para teste de segurança de aplicações. Recomenda-se as seguintes Extensões :View source Charthttps://addons.mozzila.org/en-US/firefox/addon/655 Firebughttps://addons.mozzila.org/en-US/firefox/addon/1843Tamper Datahttps://addons.mozzila.org/en-US/firefox/addon/966Edit Cookieshttps://addons.mozzila.org/en-US/firefox/addon/4510UserAgent Switchhttps://addons.mozzila.org/en-US/firefox/addon/59Switch Proxyhttps://addons.mozzila.org/en-US/firefox/addon/12509/06/2010Prof. Dércio Luiz Reis, Dr*43
FirebugTalvez seja a extensão mais utilizada  do Firefox e oferece uma variedade de funções que são empregadas para atender diversas finalidades.Quando ativa mostra um círculo pequeno indicando que está instalado.  Se o círculo estiver verde indica que o Firebug está rodando e não encontrou erros na página.  Se estiver vermelho indica que está rodando e foram encontrados erros no Java Script e se estiver cinza indica que o Firebug está desativado;É considerado o canivete suiço no desenvolvimento e testes de aplicações Web;Auxilia na escrita de códigos HTML, JavaScript e DocumentObjectModel (DOM);Não salva as alterações no servidor que só ficam válidas durante a sua execução.09/06/2010Prof. Dércio Luiz Reis, Dr*44
OSWASP’sWebScarabPopular Web Proxy para teste de segurança de aplicações Web.   Web Proxies são vitais para a interceptação de requisições e respostas entre o browser  e  o  servidor.Existem diversas formas de instalar o WebScarab, mas recomenda-se  a versão  Java Web Start ou a versão Standalone.  Estas versões facilitam a a cópia para o ambiente de teste sem a necessidade de uma instalação completa.Está disponível no site da Owasp.09/06/2010Prof. Dércio Luiz Reis, Dr*45
Instalação de Perl e pacotes no WindowsÉ considerada  a  duct tape  (algo como o remendo) das linguagens de programação.   Esta visão está ligada ao fato de não ser uma linguagem elegante mas que cumpre sua função de forma rápida;  Muito utilizada para automatizar cases de teste de segurança automatizado;Pode ser instalada em ambiente Unix ou Windows e existem diferentes formas de instalação;Active Perl (permite execução em commandpropmpt) vem junto como Perl Package Manager.Alguns sistemas operacionais (fora Windows) podem vir com o Perl instalado.  Porém pode ser necessário compilar o fonte do Perl (por exemplo se você tem o sistemas 64 bits).09/06/2010Prof. Dércio Luiz Reis, Dr*46
CAL9000Incorpora uma grande quantidade de ferramentas de segurança em um único “pacote”.  É uma ferramenta típica de hackercontendo uma variedade de truques;Com esse aplicativo é possível ajuda para identificar problemas e corrigir a partir de uma variedade de testes durante a execução dos aplicativos.No Firefox vá para : http://www.owasp.org/index.php/Category:OWASP_9000_ProjectFaça o download e descompacte  no diretório desejado.  Execute o CAL9000.html no Firefox para abrir a aplicação;Não exige instalação ou requer direitos de acesso.  Pode rodar localmente ou em um servidor ou outra máquina.09/06/2010Prof. Dércio Luiz Reis, Dr*47
ViewStateDecoderAplicações Web escritas em ASP.NET incluem uma variável escondida chamada ViewState em cada uma de suas páginas.  Esta variável mantém os dados entre requisições HTTP.Esta ferramenta é executável no Windows e considerada complexa;O objetivo é verificar se o desenvolvedor não enviou ao cliente informações demais e inapropriadas como (registros internos, detalhes de conexão a banco de dados ou registros de debug).  Este é um teste básico de segurança.09/06/2010Prof. Dércio Luiz Reis, Dr*48
cURLEsta ferramenta é um utilitário de linha de comando que suporta um array de protocolos Web e componentes.Pode ser usado como um browser sem browser pois implementa as mesmas  características dos browsers e pode ser chamado em uma linha de comando a partir de um shell;Manuseia cookies, autenticação e protocolos Web melhor do que qualquer outra ferramenta de linha de comando.Para instalar vá até http://curl.haxx.se/download.html 09/06/2010Prof. Dércio Luiz Reis, Dr*49
PornzillaNão é uma ferramenta individual e sim uma coleção de bookmarklets e extensões do Firefox,  Provê um conveniente número de ferramentas usadas em testes de segurança em aplicações Web;Todos os componentes podem ser encontrados em http://www.squarefree.com/pornzilla Para instalar o bookmarklet simplesmente arraste e solte o link em sua barra de ferramentas ou organizador de bookmark;Para instalar a extensão siga os links e instale como qualquer outra extensão Firefox;09/06/2010Prof. Dércio Luiz Reis, Dr*50
CygwinEsta ferramenta permite que utilitários e scripts construídos para rodas em Linux possam ser executados em Windows sem uma instalação full do Linux;É necessário instalar outras ferramentas;Quem trabalha no Unix, Linux ou MacOS não precisa do Cygwin, pois pode  utilizar o standard terminal;Download em http:// www.cygwin.com/ Você deve selecionar os pacotes desejados.Os pacotes são scripts e aplicações pré-compiladas . Recomenda-se selecionar o diretório Perl inteiro e as ferramentas de desenvolvimento e editores que possibilitam escrever scripts  para ambiente Linux.09/06/2010Prof. Dércio Luiz Reis, Dr*51
Nikto 2É o scanner de vulnerabilidades mais empregado dos open source . Pode ser configurado para detectar uma variedade de problemas sem grandes esforços de configuração.É um script Perl e pode ser baixado em http://www.cirt.net/nikto2   que deverá ser descompactado e rodado em Cygwin ou em ambiente Unix/Linux;Possui uma dependência externa do módulo LibWhisker cuja última versão deve ser baixada em http://souceforge.net/projects/whisker/  ;A chamada deve ser via Perl através da linha de comando perlnikto.pl –h 192.168.0.1 09/06/2010Prof. Dércio Luiz Reis, Dr*52
BurpSuiteÉ uma coleção de ferramentas de segurança, diferente do WebScarab da OWASP,  que inclui componentes para interceptar, repetir, analisar ou injetar requisições em aplicativos Web;Disponível em   http://portswigger.net/suite/download.htmlÉ uma aplicação JAVA e pode não rodar em todos os sistemas operacionais mesmo se você tiver o Java RuntimeEnvironment;Burpproxy Intercepta requisições como um web proxy;Burpspider Executa lentamente a aplicação Web logando cada página. Usa credenciais para acesso e mantém cookies entre conexões;Burpsequencer Executa análises em sessões token, identificadores de sessão ou outras chaves que requerem seguança randômica;Burprepeater  Permite o salto ou resubimissão de requisições previamente gravadas.09/06/2010Prof. Dércio Luiz Reis, Dr*53
Apache HTTP ServerOpen Source Web Service que é hoje o mais popular servidor de páginas da WWW;É preciso configurar corretamente um HTTP server para impedir problemas com a vulnerabilidade  XSS (Cross-sitescripting);A instalação é simples em Windows (pacotes binários) mas em Unix é necessário baixa o source e compilar os fontes e configurar o firewall (que deve existir!) para permitir o acesso externo liberando as portas de acesso do TCP (80 ou 8080);Com o Apache HTTP rodando, arquivos do seu sistema estarão disponíveis para qualquer um que possa enviar pacotes para seu sistema.  Tome cuidado e não coloque nenhuma informação sensível no diretório htdocs;Quando não estiver em uso derrube o servidor Apache.09/06/2010Prof. Dércio Luiz Reis, Dr*54
ReferênciasOWASP (Open Web Application Security Project) TOP 10: How to build, design and test the security of web applications and web services.– http://www.owasp.orgWatchfire Web Site: referências, white-papers, demonstrações e trialshttp://www.watchfire.comISS Internet Security Systems http://www.iss.net09/06/2010Prof. Dércio Luiz Reis, Dr*55

Desenvolvimento de Aplicações Web Seguras

  • 1.
    Palestra de Desenvolvimentode Aplicações Web SegurasProf. Dércio Luiz Reis, Dr*
  • 2.
    Porque segurança deaplicações é prioridade?Aplicações web são o foco número 1 dos hackers:75% dos ataques acontecem na camada da aplicação (Gartner)A maior parte das páginas web estão vulneráveis:90% dos sites são vulneráveis à ataques na aplicação (Watchfire)78% das vulnerabilidadesfacilmenteexploráveisafetamaplicações Web (Symantec)09/06/2010Prof. Dércio Luiz Reis, Dr*2
  • 3.
    Porque segurança deaplicações é prioridade?80% das organizações irão experimentar um incidente em segurança de aplicações até 2010 (Gartner)Aplicações web são alvos de alto valor para hackers:Dados de clientes, cartão de crédito, roubo de identidade, fraude, etc.09/06/2010Prof. Dércio Luiz Reis, Dr*3
  • 4.
    Porque segurança deaplicações é prioridade?No Brasil 13% das empresas que sofreram ataques tiveram prejuízos que ultrapassam R$ 1 Milhão (Módulo);Estudo realizado com 200 empresas brasileiras afirma que :67,5% sofreram algum tipo de ataquenosúltimos 12 meses (ISS);Instituiçõesfinanceirasnacionaistêmsofrido até 100 ataques frustrados por dia.09/06/2010Prof. Dércio Luiz Reis, Dr*4
  • 5.
    Principaiscausas de vulnerabilidades09/06/2010Prof.Dércio Luiz Reis, Dr*5Principal problemade segurançaUsuários podem submeter dados de entradaarbitráriosPrincipaissinais de problemas:– Imaturidadeemsegurança;– Desenvolvimentoin-house;– Percepção de simplicidade;– Restrições de recursos e tempo;– Mau uso de tecnologias.
  • 6.
    O Mito: Nossosite está seguro?Firewall;Network Scanners;Auditorias de Segurança.09/06/2010Prof. Dércio Luiz Reis, Dr*6
  • 7.
  • 8.
    Proteções para oambiente web09/06/2010Prof. Dércio Luiz Reis, Dr*8
  • 9.
    A Realidade: Segurançae gastos estão desequilibrados09/06/2010Prof. Dércio Luiz Reis, Dr*9
  • 10.
    É assim queuma aplicação parece para um hacker09/06/2010Prof. Dércio Luiz Reis, Dr*10
  • 11.
    TOP 10 vulnerabilidadede aplicações Web09/06/201011Prof. Dércio Luiz Reis, Dr*
  • 12.
    Tabela de Riscos09/06/2010Prof.Dércio Luiz Reis, Dr*12
  • 13.
    Comparação da ListaOWASP09/06/2010Prof. Dércio Luiz Reis, Dr*13
  • 14.
    TOP 10 vulnerabilidadede aplicações Web09/06/2010Prof. Dércio Luiz Reis, Dr*14
  • 15.
    TOP 10 vulnerabilidadede aplicações Web09/06/2010Prof. Dércio Luiz Reis, Dr*15
  • 16.
    TOP 10 vulnerabilidadede aplicações Web09/06/2010Prof. Dércio Luiz Reis, Dr*16
  • 17.
    Tendências e Vulnerabilidadesdo MITRE09/06/2010Prof. Dércio Luiz Reis, Dr*17
  • 18.
    Alguns Problemas descartadosno estudo do OWASP (Open Web Application Security Project) TOP 10Entrada de dados não validados é o maior desafio para qualquer time de desenvolvimento e é a origem dos problemas de segurança de muitas aplicações. A recomendação é criar um mecanismo de validação centralizado como parte de sua aplicação. Para maiores informações, leia os seguintes documentos de validação de dados da OWASP:http://www.owasp.org/index.php/Data_Validationhttp://www.owasp.org/index.php/Testing_for_Data_Validation 09/06/2010Prof. Dércio Luiz Reis, Dr*18
  • 19.
    Alguns Problemas descartadosno estudo do OWASP (Open Web Application Security Project) TOP 10Problemas de estouro de pilhas, estouro de inteiros e formato de strings são vulnerabilidades extremamente sérias para programas escritos em linguagem C ou C++. A remediação para estes tipos de problemas são tratados por comunidades de segurança de aplicações tradicionais, como o SANS, CERT e pelos fornecedores de linguagem de programação. Se o código é escrito em uma linguagem que é passível a estouros de pilha, recomenda-se ler os conteúdos a este respeito no site da OWASP:http://www.owasp.org/index.php/Buffer_overflow http://www.owasp.org/index.php/Testing_for_Buffer_Overflow09/06/2010Prof. Dércio Luiz Reis, Dr*19
  • 20.
    Alguns Problemas descartadosno estudo do OWASP (Open Web Application Security Project) TOP 10Gerenciamento de configuração insegura afeta todos os sistemas em alguma extensão, particularmente o PHP. Quando implementando sua aplicação, você deve consultar a última versão do OWASP Guide e o OWASP testingGuide para informações detalhadas a respeito do gerenciamento de configuração segura e testes:http://www.owasp.org/index.php/Configurationhttp://www.owasp.org/index.php/Testing_for_infrastructure_configuration_management09/06/2010Prof. Dércio Luiz Reis, Dr*20
  • 21.
    VulnerabilidadesConsiderando que odesenvolvedor observe os pontos abordados pelo documento será possível verificar uma redução direta nos seguintes pontos:Ataques de phishing, que podem explorar qualquer uma dessas vulnerabilidades, particularmente, XSS e problemas de autenticação e autorização (A1,A4,A7,A10)Violação de privacidadedevido à validação fraca, regras de negócio e verificações de autorização fracas (A2, A4, A6, A7, A10)Roubo de identidade por meio de controles de criptografia fracos ou não existentes (A8 e A9), inclusão de arquivo remoto (A3) e autenticação, regras de negócio e verificação de autorização (A4, A7, A10)09/06/2010Prof. Dércio Luiz Reis, Dr*21
  • 22.
    POR QUE CONSIDERARALGUNS PROBLEMAS IMPORTANTESCross Site RequestForgery (CSRF) é a maior nova inclusão da edição do OWASP Top 10. Embora ocupe a 36ª posição na classificação original, acredita-se que ela seja de tamanha importância, que as aplicações devem iniciar seus esforços de proteção hoje, particularmente para aplicações de alto risco e criticidade. O CSRF é mais prevalente do que sua atual classificação e pode ser mais perigoso.Criptografia. O uso incorreto da criptografia não ocupam as posições 8 e 9 da classificação, conforme as informações do MITRE, porém representam a origem de muitos problemas de quebra de privacidade e conformidade (particularmente a conformidade com o PCI DSS 1.1).09/06/2010Prof. Dércio Luiz Reis, Dr*22
  • 23.
    VULNERABILIDADES, NÃO ATAQUESOfoco é unicamente em vulnerabilidades, embora a terminologia utilizada comumente combine vulnerabilidades e ataques. Se as organizações usam este documento para tornar suas aplicações seguras e, consequentemente, reduzir o risco para seus negócios, será possível observar uma redução direta nos seguintes pontos:09/06/2010Prof. Dércio Luiz Reis, Dr*23
  • 24.
    VULNERABILIDADES, NÃO ATAQUESAtaquesde phishing, que podem explorar qualquer uma dessas vulnerabilidades, particularmente, XSS e problemas de autenticação e autorização (A1,A4,A7,A10)Violação de privacidade devido à validação fraca, regras de negócio e verificações de autorização fracas (A2, A4, A6, A7, A10)Roubo de identidade por meio de controles de criptografia fracos ou não existentes (A8 e A9), inclusão de arquivo remoto (A3) e autenticação, regras de negócio e verificação de autorização (A4, A7, A10)09/06/2010Prof. Dércio Luiz Reis, Dr*24
  • 25.
    VulnerabilidadesComprometimento de sistema,alteração de informações e destruição de dados por ataques de injeção (A2) e inclusão de arquivo remoto (A3)Perda financeira por meio de transações não autorizadas e ataques CSRF (A4, A5, A7, A10)Perda de reputação devido à exploração de qualquer uma das vulnerabilidades acima (A1 à A10)09/06/2010Prof. Dércio Luiz Reis, Dr*25
  • 26.
  • 27.
    #1 – CrossSite Scripting (XSS)O que é? – Script malicioso ecoado de volta, embutido no código HTML retornado de um site confiável;Quaissão as implicações?– Sequestro de sessões;– Atacantes podem executar scripts no navegador da vítima;– Conteúdodapáginacomprometido;– Introduzir worms.09/06/2010Prof. Dércio Luiz Reis, Dr*27
  • 28.
    #1 – CrossSite Scripting (XSS)09/06/2010Prof. Dércio Luiz Reis, Dr*28
  • 29.
    #2 – SQLInjection (Injection Flaws)09/06/2010Prof. Dércio Luiz Reis, Dr*29
  • 30.
    #3 – CrossSite Request Forgery (CSRF)O que é? Transmite e executa comandos maliciosos entre sites sem que o usuário perceba.Quaissão as implicações? - Roubo de informações do usuário, como cookies e sessões; - Possibilidade de executar transações entre sites os quais o usuário esteja autenticado; - Risco se agrava quando o tempo de expiração de sessão é muitolongo.09/06/2010Prof. Dércio Luiz Reis, Dr*30
  • 31.
    Quais preocupações osprofissionais de T.I. devem ter ?O que os desenvolvedores e testadores da minha organização sabem sobre segurança da informação?• Eles têm meios de prevenir vulnerabilidades?• Apesar de nosso investimento em segurança de rede, será querealmenteestamosseguros?• Ainda que esteja seguro hoje, tenho como garantir que não haverá falhas de segurança no futuro?09/06/2010Prof. Dércio Luiz Reis, Dr*31
  • 32.
    Segurança: Parte doCliclo de Vida09/06/2010Prof. Dércio Luiz Reis, Dr*32
  • 33.
    Testes de Segurança09/06/2010Prof.Dércio Luiz Reis, Dr*33Atuação de Softwares de Segurança
  • 34.
    PROTEÇÃOTendo o tempopara planejar a autorização criando uma matriz para mapear as regras e as funções da aplicação é o passo primordial para alcançar a proteção contra acessos não autorizados. Aplicações web devem garantir controle de acesso em cada URL e funções de negócio. Não é suficiente colocar o controle de acesso na camada de apresentação e deixar a regra de negócio desprotegida. Também não é suficiente verificar uma vez o usuário autorizado e não verificar novamente nos passos seguintes. De outra forma, um atacante pode simplesmente burlar o passo onde a autorização é verificada e forjar o valor do parâmetro necessário e continuar no passo seguinte.09/06/2010Prof. Dércio Luiz Reis, Dr*34
  • 35.
    PROTEÇÃOGaranta que amatriz do controle de acesso é parte do negócio, da arquitetura e do design daaplicação;Garanta que todas URLs e funções de negócio são protegidas por um mecanismo de controle de acesso efetivo que verifique as funções e direitos do usuário antes que qualquer processamento ocorra. Certifique-se que este processo é realizado em todos os passos do fluxo e não apenas no passo inicial de um processo, pois pode haver vários passos a seremverificados;09/06/2010Prof. Dércio Luiz Reis, Dr*35
  • 36.
    PROTEÇÃORealize um testeinvasão (penetrationtest) antes do código entrar em produção a fim de garantir que a aplicação não poderá ser utilizada de má fé por um atacante motivado ou com conhecimentos avançados.Preste muita atenção em arquivos de includes/bibliotecas, especialmente se eles possuem extensões executáveis como .php. Sempre que possível, devem ser mantidos fora da raiz web. Devem ser verificados se não estão sendo acessados diretamente, porexemplo, verificando por uma constante que pode somente ser criada através de uma biblioteca do chamador.09/06/2010Prof. Dércio Luiz Reis, Dr*36
  • 37.
    PROTEÇÃONão suponha queusuários não estarão atentos ao acessar URLs ou APIs escondidas ou especiais. Sempre se assegure que ações com privilégios altos e administrativos estarão protegidos.Bloqueie acesso a todos os tipos de arquivos que a sua aplicação não deva executar. Este filtro deve seguir a abordagem “acceptknowngood” na qual apenas são permitidos tipos de arquivos que a aplicação deva executar, como por exemplo .html .pdf, .php. Isto irá bloquear qualquer tentativa de acesso a arquivos de log, arquivos XML, entre outros, aos quais se espera nunca serem executados diretamente.Mantenha o antivírus e as correções de segurança atualizados para componentes como processadores XML, processadores de texto, processadores de imagem, entre outros que manipulam arquivos fornecidos por usuários.09/06/2010Prof. Dércio Luiz Reis, Dr*37
  • 38.
    RECOMENDAÇÕES AOS DESENVOLVEDORESParagarantir uma segurança efetiva no desenvolvimento de aplicações Web requer muita experiência, pois qualquer leigo pode atacar um sistema.09/06/2010Prof. Dércio Luiz Reis, Dr*38
  • 39.
    RECOMENDAÇÕES AOS DESENVOLVEDORESFaçaparte da comunidade e OWASP e freqüente as reuniões regionais.Procure por treinamentos sobre desenvolvimento de código seguro.Desenvolva suas aplicações com segurança, Crie códigos simples e com profunda segurança.Desenvolva com aplicações que favoreçam a segurança do código.Reconstrua o código de forma segura de acordo com a sua plataforma utilizando pesquisasotimizadas.09/06/2010Prof. Dércio Luiz Reis, Dr*39
  • 40.
    RECOMENDAÇÕES AOS DESENVOLVEDORESLeiao guia OWASP e comece a aplicar controles mais seguros a seu código, diferente do outros guias ele é desenvolvido para ajudá-lo a criar aplicações seguras e não a quebrá-las.Faça os testes de segurança e defeitos do seu código e torne esta prática constante no seudia-a-dia.Revise o livro de referências e veja se existem opções que se aplicam ao seu ambiente de trabalho.09/06/2010Prof. Dércio Luiz Reis, Dr*40
  • 41.
    Ferramentas Free (Instalação)Autilização dos softwares apresentados em seguida destinam-se ao teste e verificação de vulnerabilidades de segurança e seu dependerá do contexto e da necessidade de verificação da segurança dos aplicativos.09/06/2010Prof. Dércio Luiz Reis, Dr*41
  • 42.
    Firefox Instalando oFirefoxO Firefox web browser com sua arquitetura extensível add-on, é o melhor browser para teste de segurança de aplicações Web.A recomendação é que ele seja utilizado como o browser padrão do seu sistema. Proceda o download e complete sua instalação. Visite www.mozilla.com Mesmo que sua aplicação não seja especificamente escrita para compatibilidade com o Firefox, os aspectos de seguranças podem ser verificados por ele.09/06/2010Prof. Dércio Luiz Reis, Dr*42
  • 43.
    Firefox ExtensionsAs extensõesdo Firefox permitem adicionar várias funcionalidades ao Firefox. Recomendamos algumas extensões em particular para teste de segurança de aplicações. Recomenda-se as seguintes Extensões :View source Charthttps://addons.mozzila.org/en-US/firefox/addon/655 Firebughttps://addons.mozzila.org/en-US/firefox/addon/1843Tamper Datahttps://addons.mozzila.org/en-US/firefox/addon/966Edit Cookieshttps://addons.mozzila.org/en-US/firefox/addon/4510UserAgent Switchhttps://addons.mozzila.org/en-US/firefox/addon/59Switch Proxyhttps://addons.mozzila.org/en-US/firefox/addon/12509/06/2010Prof. Dércio Luiz Reis, Dr*43
  • 44.
    FirebugTalvez seja aextensão mais utilizada do Firefox e oferece uma variedade de funções que são empregadas para atender diversas finalidades.Quando ativa mostra um círculo pequeno indicando que está instalado. Se o círculo estiver verde indica que o Firebug está rodando e não encontrou erros na página. Se estiver vermelho indica que está rodando e foram encontrados erros no Java Script e se estiver cinza indica que o Firebug está desativado;É considerado o canivete suiço no desenvolvimento e testes de aplicações Web;Auxilia na escrita de códigos HTML, JavaScript e DocumentObjectModel (DOM);Não salva as alterações no servidor que só ficam válidas durante a sua execução.09/06/2010Prof. Dércio Luiz Reis, Dr*44
  • 45.
    OSWASP’sWebScarabPopular Web Proxypara teste de segurança de aplicações Web. Web Proxies são vitais para a interceptação de requisições e respostas entre o browser e o servidor.Existem diversas formas de instalar o WebScarab, mas recomenda-se a versão Java Web Start ou a versão Standalone. Estas versões facilitam a a cópia para o ambiente de teste sem a necessidade de uma instalação completa.Está disponível no site da Owasp.09/06/2010Prof. Dércio Luiz Reis, Dr*45
  • 46.
    Instalação de Perle pacotes no WindowsÉ considerada a duct tape (algo como o remendo) das linguagens de programação. Esta visão está ligada ao fato de não ser uma linguagem elegante mas que cumpre sua função de forma rápida; Muito utilizada para automatizar cases de teste de segurança automatizado;Pode ser instalada em ambiente Unix ou Windows e existem diferentes formas de instalação;Active Perl (permite execução em commandpropmpt) vem junto como Perl Package Manager.Alguns sistemas operacionais (fora Windows) podem vir com o Perl instalado. Porém pode ser necessário compilar o fonte do Perl (por exemplo se você tem o sistemas 64 bits).09/06/2010Prof. Dércio Luiz Reis, Dr*46
  • 47.
    CAL9000Incorpora uma grandequantidade de ferramentas de segurança em um único “pacote”. É uma ferramenta típica de hackercontendo uma variedade de truques;Com esse aplicativo é possível ajuda para identificar problemas e corrigir a partir de uma variedade de testes durante a execução dos aplicativos.No Firefox vá para : http://www.owasp.org/index.php/Category:OWASP_9000_ProjectFaça o download e descompacte no diretório desejado. Execute o CAL9000.html no Firefox para abrir a aplicação;Não exige instalação ou requer direitos de acesso. Pode rodar localmente ou em um servidor ou outra máquina.09/06/2010Prof. Dércio Luiz Reis, Dr*47
  • 48.
    ViewStateDecoderAplicações Web escritasem ASP.NET incluem uma variável escondida chamada ViewState em cada uma de suas páginas. Esta variável mantém os dados entre requisições HTTP.Esta ferramenta é executável no Windows e considerada complexa;O objetivo é verificar se o desenvolvedor não enviou ao cliente informações demais e inapropriadas como (registros internos, detalhes de conexão a banco de dados ou registros de debug). Este é um teste básico de segurança.09/06/2010Prof. Dércio Luiz Reis, Dr*48
  • 49.
    cURLEsta ferramenta éum utilitário de linha de comando que suporta um array de protocolos Web e componentes.Pode ser usado como um browser sem browser pois implementa as mesmas características dos browsers e pode ser chamado em uma linha de comando a partir de um shell;Manuseia cookies, autenticação e protocolos Web melhor do que qualquer outra ferramenta de linha de comando.Para instalar vá até http://curl.haxx.se/download.html 09/06/2010Prof. Dércio Luiz Reis, Dr*49
  • 50.
    PornzillaNão é umaferramenta individual e sim uma coleção de bookmarklets e extensões do Firefox, Provê um conveniente número de ferramentas usadas em testes de segurança em aplicações Web;Todos os componentes podem ser encontrados em http://www.squarefree.com/pornzilla Para instalar o bookmarklet simplesmente arraste e solte o link em sua barra de ferramentas ou organizador de bookmark;Para instalar a extensão siga os links e instale como qualquer outra extensão Firefox;09/06/2010Prof. Dércio Luiz Reis, Dr*50
  • 51.
    CygwinEsta ferramenta permiteque utilitários e scripts construídos para rodas em Linux possam ser executados em Windows sem uma instalação full do Linux;É necessário instalar outras ferramentas;Quem trabalha no Unix, Linux ou MacOS não precisa do Cygwin, pois pode utilizar o standard terminal;Download em http:// www.cygwin.com/ Você deve selecionar os pacotes desejados.Os pacotes são scripts e aplicações pré-compiladas . Recomenda-se selecionar o diretório Perl inteiro e as ferramentas de desenvolvimento e editores que possibilitam escrever scripts para ambiente Linux.09/06/2010Prof. Dércio Luiz Reis, Dr*51
  • 52.
    Nikto 2É oscanner de vulnerabilidades mais empregado dos open source . Pode ser configurado para detectar uma variedade de problemas sem grandes esforços de configuração.É um script Perl e pode ser baixado em http://www.cirt.net/nikto2 que deverá ser descompactado e rodado em Cygwin ou em ambiente Unix/Linux;Possui uma dependência externa do módulo LibWhisker cuja última versão deve ser baixada em http://souceforge.net/projects/whisker/ ;A chamada deve ser via Perl através da linha de comando perlnikto.pl –h 192.168.0.1 09/06/2010Prof. Dércio Luiz Reis, Dr*52
  • 53.
    BurpSuiteÉ uma coleçãode ferramentas de segurança, diferente do WebScarab da OWASP, que inclui componentes para interceptar, repetir, analisar ou injetar requisições em aplicativos Web;Disponível em http://portswigger.net/suite/download.htmlÉ uma aplicação JAVA e pode não rodar em todos os sistemas operacionais mesmo se você tiver o Java RuntimeEnvironment;Burpproxy Intercepta requisições como um web proxy;Burpspider Executa lentamente a aplicação Web logando cada página. Usa credenciais para acesso e mantém cookies entre conexões;Burpsequencer Executa análises em sessões token, identificadores de sessão ou outras chaves que requerem seguança randômica;Burprepeater  Permite o salto ou resubimissão de requisições previamente gravadas.09/06/2010Prof. Dércio Luiz Reis, Dr*53
  • 54.
    Apache HTTP ServerOpenSource Web Service que é hoje o mais popular servidor de páginas da WWW;É preciso configurar corretamente um HTTP server para impedir problemas com a vulnerabilidade XSS (Cross-sitescripting);A instalação é simples em Windows (pacotes binários) mas em Unix é necessário baixa o source e compilar os fontes e configurar o firewall (que deve existir!) para permitir o acesso externo liberando as portas de acesso do TCP (80 ou 8080);Com o Apache HTTP rodando, arquivos do seu sistema estarão disponíveis para qualquer um que possa enviar pacotes para seu sistema. Tome cuidado e não coloque nenhuma informação sensível no diretório htdocs;Quando não estiver em uso derrube o servidor Apache.09/06/2010Prof. Dércio Luiz Reis, Dr*54
  • 55.
    ReferênciasOWASP (Open WebApplication Security Project) TOP 10: How to build, design and test the security of web applications and web services.– http://www.owasp.orgWatchfire Web Site: referências, white-papers, demonstrações e trialshttp://www.watchfire.comISS Internet Security Systems http://www.iss.net09/06/2010Prof. Dércio Luiz Reis, Dr*55