Desenvolvimento de Aplicações Web Seguras

55
Palestra de Desenvolvimento de Aplicações Web Seguras Prof. Dércio Luiz Reis, Dr*

description

COnteúdo da Palestra sobre Desenvolvimento de aplicações seguras para Web

Transcript of Desenvolvimento de Aplicações Web Seguras

Palestra de Desenvolvimento de Aplicações Web Seguras

Prof. Dércio Luiz Reis, Dr*

09/04/2023 Prof. Dércio Luiz Reis, Dr* 2

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 vulnerabilidades facilmente exploráveis afetam aplicações Web (Symantec)

09/04/2023 Prof. Dércio Luiz Reis, Dr* 3

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/04/2023 Prof. Dércio Luiz Reis, Dr* 4

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 ataque nos últimos 12

meses (ISS);– Instituições financeiras nacionais têm sofrido até 100

ataques frustrados por dia.

09/04/2023 Prof. Dércio Luiz Reis, Dr* 5

Principais causas de vulnerabilidades

Principal problemade segurança

Usuários podem submeter dados de entrada arbitrários

Principais sinais de problemas:

– Imaturidade em segurança;– Desenvolvimento in-house;– Percepção de simplicidade;– Restrições de recursos e tempo;– Mau uso de tecnologias.

09/04/2023 Prof. Dércio Luiz Reis, Dr* 6

O Mito: Nosso site está seguro?

• Firewall;• Network Scanners;• Auditorias de Segurança.

09/04/2023 Prof. Dércio Luiz Reis, Dr* 7

Arquitetura básica de segurança

09/04/2023 Prof. Dércio Luiz Reis, Dr* 8

Proteções para o ambiente web

09/04/2023 Prof. Dércio Luiz Reis, Dr* 9

A Realidade: Segurança e gastos estão desequilibrados

09/04/2023 Prof. Dércio Luiz Reis, Dr* 10

É assim que uma aplicação parece para um hacker

09/04/2023 Prof. Dércio Luiz Reis, Dr* 11

TOP 10 vulnerabilidade de aplicações Web TIPOS DE ATAQUE

A1 Cross Site Scripting (XSS)A2 Falhas de InjeçãoA3 Execução maliciosa de arquivosA4 Referência Insegura Direta à ObjetosA5 Cross Site Request Forgery (CSRF)A6 Vazamento de Informações e Tratamento de Erros

InapropriadoA7 Autenticação falha e Gerenciamento de SessãoA8 Armazenamento Criptográfico InseguroA9 Comunicações insegurasA10 Falha de Restrição de Acesso à URL

09/04/2023 Prof. Dércio Luiz Reis, Dr* 12

Tabela de Riscos

09/04/2023 Prof. Dércio Luiz Reis, Dr* 13

Comparação da Lista OWASP

09/04/2023 Prof. Dércio Luiz Reis, Dr* 14

TOP 10 vulnerabilidade de aplicações Web

09/04/2023 Prof. Dércio Luiz Reis, Dr* 15

TOP 10 vulnerabilidade de aplicações Web

09/04/2023 Prof. Dércio Luiz Reis, Dr* 16

TOP 10 vulnerabilidade de aplicações Web

09/04/2023 Prof. Dércio Luiz Reis, Dr* 17

Tendências e Vulnerabilidades do MITRE

09/04/2023 Prof. Dércio Luiz Reis, Dr* 18

Alguns Problemas descartados no estudo do OWASP (Open Web Application Security Project) TOP 10

Entrada 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/04/2023 Prof. Dércio Luiz Reis, Dr* 19

Alguns Problemas descartados no estudo do OWASP (Open Web Application Security Project) TOP 10

Problemas 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_Overflow

09/04/2023 Prof. Dércio Luiz Reis, Dr* 20

Alguns Problemas descartados no estudo do OWASP (Open Web Application Security Project) TOP 10

Gerenciamento 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 testing Guide 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_management

09/04/2023 Prof. Dércio Luiz Reis, Dr* 21

VulnerabilidadesConsiderando que o desenvolvedor observe os pontos abordados

pelo documento será possível verificar uma redução direta nos seguintes pontos:

a) Ataques de phishing, que podem explorar qualquer uma dessas vulnerabilidades, particularmente, XSS e problemas de autenticação e autorização (A1,A4,A7,A10)

b) Violação de privacidade devido à validação fraca, regras de negócio e verificações de autorização fracas (A2, A4, A6, A7, A10)

c) 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/04/2023 Prof. Dércio Luiz Reis, Dr* 22

POR QUE CONSIDERAR ALGUNS PROBLEMAS IMPORTANTES

Cross Site Request Forgery (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/04/2023 Prof. Dércio Luiz Reis, Dr* 23

VULNERABILIDADES, NÃO ATAQUES

O 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/04/2023 Prof. Dércio Luiz Reis, Dr* 24

VULNERABILIDADES, NÃO ATAQUES

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 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/04/2023 Prof. Dércio Luiz Reis, Dr* 25

Vulnerabilidades

Comprometimento 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/04/2023 Prof. Dércio Luiz Reis, Dr* 26

Exemplos

09/04/2023 Prof. Dércio Luiz Reis, Dr* 27

#1 – Cross Site Scripting (XSS)O que é? – Script malicioso ecoado de volta,

embutido no código HTML retornado de um site confiável;

Quais são as implicações?– Sequestro de sessões;– Atacantes podem executar scripts no

navegador da vítima;– Conteúdo da página comprometido;– Introduzir worms.

09/04/2023 Prof. Dércio Luiz Reis, Dr* 28

#1 – Cross Site Scripting (XSS)

09/04/2023 Prof. Dércio Luiz Reis, Dr* 29

#2 – SQL Injection (Injection Flaws)

09/04/2023 Prof. Dércio Luiz Reis, Dr* 30

#3 – Cross Site Request Forgery (CSRF)

O que é? Transmite e executa comandos maliciosos entre sites sem que o

usuário perceba.

Quais sã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 é

muito longo.

09/04/2023 Prof. Dércio Luiz Reis, Dr* 31

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á que realmente estamos seguros?

• Ainda que esteja seguro hoje, tenho como garantir que não haverá falhas de segurança no futuro?

09/04/2023 Prof. Dércio Luiz Reis, Dr* 32

Segurança: Parte do Cliclo de Vida

09/04/2023 Prof. Dércio Luiz Reis, Dr* 33

Testes de Segurança

Atuação de Softwares de Segurança

09/04/2023 Prof. Dércio Luiz Reis, Dr* 34

PROTEÇÃO

Tendo 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/04/2023 Prof. Dércio Luiz Reis, Dr* 35

PROTEÇÃO

• Garanta que a matriz do controle de acesso é parte do negócio, da arquitetura e do design da aplicaçã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 serem verificados;

09/04/2023 Prof. Dércio Luiz Reis, Dr* 36

PROTEÇÃO

• Realize um teste invasão (penetration test) 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/04/2023 Prof. Dércio Luiz Reis, Dr* 37

PROTEÇÃO• Nã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 “accept known good” 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/04/2023 Prof. Dércio Luiz Reis, Dr* 38

RECOMENDAÇÕES AOS DESENVOLVEDORES

• Para garantir uma segurança efetiva no desenvolvimento de aplicações Web requer muita experiência, pois qualquer leigo pode atacar um sistema.

09/04/2023 Prof. Dércio Luiz Reis, Dr* 39

RECOMENDAÇÕES AOS DESENVOLVEDORES

• Faç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 pesquisas otimizadas.

09/04/2023 Prof. Dércio Luiz Reis, Dr* 40

RECOMENDAÇÕES AOS DESENVOLVEDORES

• Leia 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 seu dia-a-dia.

• Revise o livro de referências e veja se existem opções que se aplicam ao seu ambiente de trabalho.

09/04/2023 Prof. Dércio Luiz Reis, Dr* 41

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/04/2023 Prof. Dércio Luiz Reis, Dr* 42

Firefox

a) Instalando o Firefox– O 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/04/2023 Prof. Dércio Luiz Reis, Dr* 43

Firefox Extensionsb) As 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 Chart

– https://addons.mozzila.org/en-US/firefox/addon/655 • Firebug

– https://addons.mozzila.org/en-US/firefox/addon/1843• Tamper Data

– https://addons.mozzila.org/en-US/firefox/addon/966• Edit Cookies

– https://addons.mozzila.org/en-US/firefox/addon/4510• User Agent Switch

– https://addons.mozzila.org/en-US/firefox/addon/59• Switch Proxy

– https://addons.mozzila.org/en-US/firefox/addon/125

09/04/2023 Prof. Dércio Luiz Reis, Dr* 44

Firebug• Talvez 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 Document Object Model (DOM);

• Não salva as alterações no servidor que só ficam válidas durante a sua execução.

09/04/2023 Prof. Dércio Luiz Reis, Dr* 45

OSWASP’s WebScarab

• Popular 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/04/2023 Prof. Dércio Luiz Reis, Dr* 46

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 command propmpt) 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/04/2023 Prof. Dércio Luiz Reis, Dr* 47

CAL9000• Incorpora uma grande quantidade de ferramentas de segurança

em um único “pacote”. É uma ferramenta típica de hacker contendo 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_Project

• Faç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/04/2023 Prof. Dércio Luiz Reis, Dr* 48

ViewState Decoder

• Aplicaçõ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/04/2023 Prof. Dércio Luiz Reis, Dr* 49

cURL

• Esta 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/04/2023 Prof. Dércio Luiz Reis, Dr* 50

Pornzilla

• Nã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/04/2023 Prof. Dércio Luiz Reis, Dr* 51

Cygwin• Esta 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/04/2023 Prof. Dércio Luiz Reis, Dr* 52

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 perl nikto.pl –h 192.168.0.1

09/04/2023 Prof. Dércio Luiz Reis, Dr* 53

Burp Suite• É 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 Runtime Environment;– Burp proxy Intercepta requisições como um web proxy;– Burp spider Executa lentamente a aplicação Web logando cada

página. Usa credenciais para acesso e mantém cookies entre conexões;

– Burp sequencer Executa análises em sessões token, identificadores de sessão ou outras chaves que requerem seguança randômica;

– Burp repeater Permite o salto ou resubimissão de requisições previamente gravadas.

09/04/2023 Prof. Dércio Luiz Reis, Dr* 54

Apache HTTP Server• Open 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-site scripting);• 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/04/2023 Prof. Dércio Luiz Reis, Dr* 55

Referências

• OWASP (Open Web Application Security Project) TOP 10: How to build, design and test the security of web applications and web services.

– http://www.owasp.org• Watchfire Web Site: referências, white-papers,

demonstrações e trials• http://www.watchfire.com• ISS Internet Security Systems http://www.iss.net