segurança da informação tópico 34 – seg.desenvolvimento de software sql injection, xss, etc...

33
Segurança da Informação Tópico 34 – Seg.desenvolvimento de software SQL Injection, XSS, etc Prof.Davison Marques

Upload: internet

Post on 17-Apr-2015

108 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Segurança da Informação Tópico 34 – Seg.desenvolvimento de software SQL Injection, XSS, etc Prof.Davison Marques

Segurança da Informação

Tópico 34 – Seg.desenvolvimento de software

SQL Injection, XSS, etc

Prof.Davison Marques

Page 2: Segurança da Informação Tópico 34 – Seg.desenvolvimento de software SQL Injection, XSS, etc Prof.Davison Marques

A segurança da informação em um projeto de desenvolvimento de sistemas deve considerar diversos aspectos como:

1) Detalhar na política de segurança os requerimentos de segurança que os sistemas devem atender, incluindo seus processos de segurança

2) A documentação do sistema deve estar sempre atualizada e armazenada em local seguro e controlado

3) Utilizar trilhas de auditoria nas transações executadas pelos usuários e nos acessos aos códigos-fonte

4) Criptografia de informações confidenciais

5) Automatizar a interface entre sistemas para evitar transações incorretas.

6) Segregação de funções

7) Não permitir o acesso de usuários diretamente no banco de dados de produção

8) Controles sobre os códigos-fonte que assegurem que todas as alterações tenham sido autorizadas, documentadas, e testadas, visando evitar versões fraudulentas

Segurança - Considerações

Page 3: Segurança da Informação Tópico 34 – Seg.desenvolvimento de software SQL Injection, XSS, etc Prof.Davison Marques

Segundo a norma NBR-ISO/IEC 17799, capítulo 10, a segurança no desenvolvimento e manutenção de sistemas é composta por:

10.1 Requisitos de segurança de sistemas

10.2 Segurança nos sistemas de aplicação

10.3 Controles de criptografia

10.4 Segurança de arquivos do sistema

10.5 Segurança nos processos de desenvolvimento e suporte

NBR-ISO/IEC 17799

Page 4: Segurança da Informação Tópico 34 – Seg.desenvolvimento de software SQL Injection, XSS, etc Prof.Davison Marques

10.1 Requisitos de segurança de sistemas

Objetivos: Garantir que a segurança seja parte integrante dos sistemas de informação.

Isto incluirá infra-estrutura, aplicações do negócio e aplicações desenvolvidas pelo usuário. O projeto e a implementação dos processos do negócio que dão suporte às aplicações e aos serviços podem ser cruciais para segurança.

Convém que requisitos de segurança sejam identificados e acordados antes do desenvolvimento dos sistemas de informação.

Convém que todos os requisitos de segurança, incluindo a necessidade de acordos de contingência, sejam identificados na fase de levantamento de requisitos de um projeto e justificados, acordados e documentados como parte do estudo de caso de um negócio para um sistema de informação.

NBR-ISO/IEC 17799

Page 5: Segurança da Informação Tópico 34 – Seg.desenvolvimento de software SQL Injection, XSS, etc Prof.Davison Marques

10.2 Segurança nos sistemas de aplicação

Objetivo: Prevenir perda, modificação ou uso impróprio de dados do usuário nos sistemas de aplicações.

Convém que os controles apropriados e trilhas de auditoria ou registros de atividades sejam previstos para os sistemas de aplicação, incluindo aplicações escritas pelo usuário. Convém que estes incluam a validação dos dados de entrada, processamento interno e dados de saída.

Controles adicionais podem ser necessários para sistemas que processam ou têm impacto em ativos organizacionais críticos, valiosos ou sensíveis. Convém que tais controles sejam determinados na base dos requisitos de segurança e na avaliação de riscos.

NBR-ISO/IEC 17799

Page 6: Segurança da Informação Tópico 34 – Seg.desenvolvimento de software SQL Injection, XSS, etc Prof.Davison Marques

10.3 Controles de criptografia

Objetivo: Proteger a confidencialidade, autenticidade ou integridade das informações.

Convém que técnicas e sistemas criptográficos sejam usados para a proteção das informações que são consideradas de risco e que para as quais outros controles não fornecem proteção adequada.

NBR-ISO/IEC 17799

Page 7: Segurança da Informação Tópico 34 – Seg.desenvolvimento de software SQL Injection, XSS, etc Prof.Davison Marques

10.4 Segurança de arquivos do sistema

Objetivo: Garantir que os projetos de tecnologia da informação e as atividades de suporte serão conduzidas de maneira segura.

Convém que o acesso aos arquivos do sistema seja controlado.

Convém que a manutenção da integridade do sistema seja de responsabilidade da função do usuário ou do grupo de desenvolvimento a quem pertence o sistema de aplicação ou software.

NBR-ISO/IEC 17799

Page 8: Segurança da Informação Tópico 34 – Seg.desenvolvimento de software SQL Injection, XSS, etc Prof.Davison Marques

10.5 Segurança nos processos de desenvolvimento e suporte

Objetivo: Manter a segurança do software e da informação do sistema de aplicação.

Convém que os ambientes de desenvolvimento e suporte sejam rigidamente controlados.

Convém que os gestores responsáveis pelos sistemas de aplicação também sejam responsáveis pela segurança do ambiente de desenvolvimento ou suporte. Convém que eles garantam que todas as modificações de sistemas propostas sejam analisadas criticamente, a fim de verificar que elas não comprometem a segurança do sistema ou do ambiente de produção.

NBR-ISO/IEC 17799

Page 9: Segurança da Informação Tópico 34 – Seg.desenvolvimento de software SQL Injection, XSS, etc Prof.Davison Marques

Segundo a norma NBR-ISO/IEC 27002, capítulo 12 Aquisição, desenvolvimento e manutenção de sistemas de informação, a segurança na aquisição, no desenvolvimento e manutenção de sistemas onde podemos destacar os itens:

12.2 Processamento correto nas aplicações

12.2.1 Validação dos dados de entrada

12.2.2 Controle do processamento interno

12.3 Controles criptográficos

12.4 Segurança dos arquivos do sistema

NBR-ISO/IEC 27002

Page 10: Segurança da Informação Tópico 34 – Seg.desenvolvimento de software SQL Injection, XSS, etc Prof.Davison Marques

12.4.1 Controle de software operacional

12.4.2 Proteção dos dados para teste de sistema

12.4.3 Controle de acesso ao código-fonte de programa

12.5 Segurança em processos de desenvolvimento e de suporte

12.5.1 Procedimentos para controle de mudanças

12.5.4 Vazamento de informações

12.5.5 Desenvolvimento terceirizado de software

NBR-ISO/IEC 27002

Page 11: Segurança da Informação Tópico 34 – Seg.desenvolvimento de software SQL Injection, XSS, etc Prof.Davison Marques

12.2 Processamento correto nas aplicações

Objetivo: Prevenir a ocorrência de erros, perdas, modificação não autorizada ou mau uso de informações em aplicações.

Convém que controles apropriados sejam incorporados no projeto das aplicações, inclusive aquelas desenvolvidas pelos usuários, para assegurar o processamento correto. Convém que esses controles incluam a validação dos dados de entrada, do processamento interno e dos dados de saída.

NBR-ISO/IEC 27002

Page 12: Segurança da Informação Tópico 34 – Seg.desenvolvimento de software SQL Injection, XSS, etc Prof.Davison Marques

12.2.1 Validação dos dados de entrada

Controle:Convém que os dados de entrada de aplicações sejam validados para garantir que são corretos e apropriados.Diretrizes para implementaçãoa) entrada duplicada ou outros tipos de verificação, tais como checagem de limites ou campos limitandoas faixas específicas de dados de entrada, para detectar os seguintes erros:

1) valores fora de faixa;2) caracteres inválidos em campos de dados;3) dados incompletos ou faltantes;4) volumes de dados excedendo limites superiores ou inferiores;5) dados de controle inconsistentes ou não autorizados;

NBR-ISO/IEC 27002

Page 13: Segurança da Informação Tópico 34 – Seg.desenvolvimento de software SQL Injection, XSS, etc Prof.Davison Marques

12.2.2 Controle do processamento interno

Controle:Convém que sejam incorporadas, nas aplicações, checagens de validação com o objetivo de detectar qualquer corrupção de informações, por erros ou por ações deliberadas.

Diretrizes para implementaçãoa) o uso das funções, como incluir, modificar e remover para implementação de alterações nos dados;b) procedimentos para evitar que programas rodem na ordem errada ou continuem rodando após uma falha de processamento;c) o uso de programas apropriados para recuperação de falhas, para assegurar o processamento correto dos dados;d) proteção contra ataques usando buffer overrun/overflow;

NBR-ISO/IEC 27002

Page 14: Segurança da Informação Tópico 34 – Seg.desenvolvimento de software SQL Injection, XSS, etc Prof.Davison Marques

12.4 Segurança dos arquivos do sistema

Objetivo: Garantir a segurança de arquivos de sistema.Convém que o acesso aos arquivos de sistema e aos programas de código fonte seja controlado e que atividades de projeto de tecnologia da informação e de suporte sejam conduzidas de forma segura.

Convém que cuidados sejam tomados para evitar a exposição de dados sensíveis em ambientes de teste.

NBR-ISO/IEC 27002

Page 15: Segurança da Informação Tópico 34 – Seg.desenvolvimento de software SQL Injection, XSS, etc Prof.Davison Marques

12.4 Segurança dos arquivos do sistema

Objetivo: Garantir a segurança de arquivos de sistema.Convém que o acesso aos arquivos de sistema e aos programas de código fonte seja controlado e que atividades de projeto de tecnologia da informação e de suporte sejam conduzidas de forma segura.

Convém que cuidados sejam tomados para evitar a exposição de dados sensíveis em ambientes de teste.

NBR-ISO/IEC 27002

Page 16: Segurança da Informação Tópico 34 – Seg.desenvolvimento de software SQL Injection, XSS, etc Prof.Davison Marques

12.4.1 Controle de software operacional

ControleConvém que procedimentos para controlar a instalação de software em sistemas operacionais sejam implementados.Diretrizes para implementaçãoa) a atualização do software operacional, de aplicativos e de bibliotecas de programas seja executada somente por administradores treinados e com autorização gerencial;b) sistemas operacionais somente contenham código executável e aprovado, e não contenham códigos em desenvolvimento ou compiladores;c) sistemas operacionais e aplicativos somente sejam implementados após testes extensivos e bem sucedidos; é recomendável que os testes incluam testes sobre uso, segurança, efeitos sobre outros sistemas, como também sobre uso amigável, e sejam realizados em sistemas separados;

NBR-ISO/IEC 27002

Page 17: Segurança da Informação Tópico 34 – Seg.desenvolvimento de software SQL Injection, XSS, etc Prof.Davison Marques

12.4.1 Controle de software operacional - Continuaçãod) um sistema de controle de configuração seja utilizado para manter controle da implementação do software assim como da documentação do sistema;e) uma estratégia de retorno às condições anteriores seja disponibilizada antes que mudanças sejam implementadas no sistema;f) um registro de auditoria seja mantido para todas as atualizações das bibliotecas dos programas operacionais;g) versões anteriores dos softwares aplicativos sejam mantidas como medida de contingência;h) versões antigas de software sejam arquivadas, junto com todas as informações e parâmetros requeridos, procedimentos, detalhes de configurações e software de suporte durante um prazo igual ao prazo de retenção dos dados.

NBR-ISO/IEC 27002

Page 18: Segurança da Informação Tópico 34 – Seg.desenvolvimento de software SQL Injection, XSS, etc Prof.Davison Marques

12.4.2 Proteção dos dados para teste de sistema

ControleConvém que os dados de teste sejam selecionados com cuidado, protegidos e controlados.

Diretrizes para implementaçãoa) os procedimentos de controle de acesso, aplicáveis aos aplicativos de sistema em ambiente operacional, sejam também aplicados aos aplicativos de sistema em ambiente de teste;b) seja obtida autorização cada vez que for utilizada uma cópia da informação operacional para uso de um aplicativo em teste;c) a informação operacional seja apagada do aplicativo em teste imediatamente após completar o teste;d) a cópia e o uso de informação operacional sejam registrados de forma a prover uma trilha para auditoria.

NBR-ISO/IEC 27002

Page 19: Segurança da Informação Tópico 34 – Seg.desenvolvimento de software SQL Injection, XSS, etc Prof.Davison Marques

12.4.3 Controle de acesso ao código-fonte de programa

ControleConvém que o acesso ao código-fonte de programa seja restrito.

Diretrizes para implementaçãoa) quando possível, seja evitado manter as bibliotecas de programa-fonte no mesmo ambiente dos sistemas operacionais;b) seja implementado o controle do código-fonte de programa e das bibliotecas de programa-fonte, conforme procedimentos estabelecidos;c) o pessoal de suporte não tenha acesso irrestrito às bibliotecas de programa-fonte;d) a atualização das bibliotecas de programa-fonte e itens associados e a entrega de fontes de programas a programadores seja apenas efetuada após o recebimento da autorização pertinente;e) as listagens dos programas sejam mantidas num ambiente seguro;f) seja mantido um registro de auditoria de todos os acessos a código-fonte de programa;

NBR-ISO/IEC 27002

Page 20: Segurança da Informação Tópico 34 – Seg.desenvolvimento de software SQL Injection, XSS, etc Prof.Davison Marques

12.5 Segurança em processos de desenvolvimento e de suporte

Objetivo: Manter a segurança de sistemas aplicativos e da informação.Convém que os ambientes de projeto e de suporte sejam estritamente controlados.

Convém que os gerentes responsáveis pelos sistemas aplicativos sejam também responsáveis pela segurança dos ambientes de projeto ou de suporte. Convém que eles assegurem que mudanças propostas sejam analisadas criticamente para verificar que não comprometam a segurança do sistema ou do ambiente operacional.

NBR-ISO/IEC 27002

Page 21: Segurança da Informação Tópico 34 – Seg.desenvolvimento de software SQL Injection, XSS, etc Prof.Davison Marques

12.5.1 Procedimentos para controle de mudanças

ControleConvém que a implementação de mudanças seja controlada utilizando procedimentos formais de controle de mudanças.

Diretrizes para implementaçãoa) a manutenção de um registro dos níveis acordados de autorização;b) a garantia de que as mudanças sejam submetidas por usuários autorizados;c) a análise crítica dos procedimentos de controle e integridade para assegurar que as mudanças não os comprometam;d) a identificação de todo software, informação, entidades em bancos de dados e hardware que precisam de emendas;e) a obtenção de aprovação formal para propostas detalhadas antes da implementação;f) a garantia da aceitação das mudanças por usuários autorizados, antes da implementação;

NBR-ISO/IEC 27002

Page 22: Segurança da Informação Tópico 34 – Seg.desenvolvimento de software SQL Injection, XSS, etc Prof.Davison Marques

12.5.1 Procedimentos para controle de mudanças

Continuag) a garantia da atualização da documentação do sistema após conclusão de cada mudança e de que a documentação antiga seja arquivada ou descartada;h) a manutenção de um controle de versão de todas as atualizações de softwares;i) a manutenção de uma trilha para auditoria de todas as mudanças solicitadas;j) a garantia de que toda a documentação operacional e procedimentos dos usuários sejam alterados conforme necessário e que se mantenham apropriados;k) a garantia de que as mudanças sejam implementadas em horários apropriados, sem a perturbação dos processos de negócios cabíveis.

NBR-ISO/IEC 27002

Page 23: Segurança da Informação Tópico 34 – Seg.desenvolvimento de software SQL Injection, XSS, etc Prof.Davison Marques

12.5.4 Vazamento de informações

ControleConvém que oportunidades para vazamento de informações sejam prevenidas.

Diretrizes para implementação

a) a varredura do envio de mídia e comunicações para verificar a presença de informação oculta;b) o mascaramento e a modulação do comportamento dos sistemas e das comunicações para reduzir a possibilidade de terceiros deduzirem informações a partir do comportamento dos sistemas;c) a utilização de sistemas e software reconhecidos como de alta integridade, por exemplo utilizando produtos avaliados (ver ISO/IEC 15408);d) o monitoramento regular das atividades do pessoal e do sistema, quando permitido pela legislação ou regulamentação vigente;e) o monitoramento do uso de recursos de sistemas de computação.aar

NBR-ISO/IEC 27002

Page 24: Segurança da Informação Tópico 34 – Seg.desenvolvimento de software SQL Injection, XSS, etc Prof.Davison Marques

12.5.5 Desenvolvimento terceirizado de software

ControleConvém que a organização supervisione e monitore o desenvolvimento terceirizado de software.Diretrizes para implementaçãoConvém que sejam considerados os seguintes itens quando do desenvolvimento de software terceirizado:a) acordos de licenciamento, propriedade do código e direitos de propriedade intelectual;b) certificação da qualidade e exatidão do serviço realizado;c) provisões para custódia no caso de falha da terceira parte;d) direitos de acesso para auditorias de qualidade e exatidão do serviço realizado;e) requisitos contratuais para a qualidade e funcionalidade da segurança do código;f) testes antes da instalação para detectar a presença de código malicioso e troiano.

NBR-ISO/IEC 27002

Page 25: Segurança da Informação Tópico 34 – Seg.desenvolvimento de software SQL Injection, XSS, etc Prof.Davison Marques

Principais falhas de segurança em aplicações:

• Buffer Overflow

• Data tampering

• Script Injection

• SQL Injection

• CrossSite

• Scripting

Falhas de Segurança

Page 26: Segurança da Informação Tópico 34 – Seg.desenvolvimento de software SQL Injection, XSS, etc Prof.Davison Marques

Buffer overflow:

Os Buffers são áreas de memória criadas pelos programas para armazenar Dados que estão sendo processados. Cada buffer tem um certo tamanho, dependendo do tipo de dados que ele irá armazenar. Um buffer overflow ocorre quando o programa recebe mais dados do que está preparado para armazenar no buffer. Se o programa não foi adequadamente escrito, este excesso de dados pode acabar sendo armazenado em áreas de memória próximas, corrompendo dados ou travando o programa, ou mesmo ser executada, que é a possibilidade mais perigosa.

Falhas de Segurança

Page 27: Segurança da Informação Tópico 34 – Seg.desenvolvimento de software SQL Injection, XSS, etc Prof.Davison Marques

Data Tampering:

•Envia-se um valor diferente do esperado pela aplicação

•Este valor induz a aplicação a fazer uma operação diferente da que faria normalmente, dando acesso a dados que deveriam estar ocultos

•Ou então o valor coloca a aplicação em loop, ou provoca erros mais adiante (como divisão por zero) efetivamente derrubando a aplicação em um ataque DoS – Denial of Service

Falhas de Segurança

Page 28: Segurança da Informação Tópico 34 – Seg.desenvolvimento de software SQL Injection, XSS, etc Prof.Davison Marques

Data Tampering:

Uma página lista registros visíveis pelo usuário, filtrados pelo nome do usuário autenticado pelo servidor.

A página seguinte é um formulário de edição, que recebe da página com a lista o id ou pk (chave primária) do registro a editar.

O cracker chama diretamente a página de edição, fornecendo o id de um registro que não apareceria para ele na página de listagem e assim editando dados que ele não estaria autorizado

Falhas de Segurança

Page 29: Segurança da Informação Tópico 34 – Seg.desenvolvimento de software SQL Injection, XSS, etc Prof.Davison Marques

ScriptInjection:

É uma forma de data tampering que insere código para execução pelo interpretador

de scripts presente no servidor ou no cliente.

Este código pode ser HTML, Javascript, SQL, PHP, VBA ou qualquer outra “linguagem

de macros”.

O cracker insere o código como parte dos dados enviados para a aplicação.

Este código poderá ser executado imediatamente pelo servidor, ou pelo cliente (navegador) como parte da página de resposta.

Falhas de Segurança

Page 30: Segurança da Informação Tópico 34 – Seg.desenvolvimento de software SQL Injection, XSS, etc Prof.Davison Marques

Cross-Site Scripting (XSS):

É uma variação do ataque de injeção que tem por objetivo contornar firewalls.Em vez de inserir código para execução imediata, o código é inserido para execução posterior por um outro usuário.

Muitas vezes, código “não executável” como tags <img> do HTML, objetos Flash e referências a style sheets (CSS) são o veículo do ataque, porque eles provocam conexões de Rede.

Exemplo:<script>alert("XSS")</script>

Na URL:http://site.com/search.php?q=<script>alert("XSS")</script>Resultado, popup JavaScript com o texto “alert(“XSS)”

Falhas de Segurança

Page 31: Segurança da Informação Tópico 34 – Seg.desenvolvimento de software SQL Injection, XSS, etc Prof.Davison Marques

SQL Injection:

SQL Injection, é uma técnica que consiste em 'injetar' código malicioso em uma instrução SQL através de uma falha do programador.A mais comum é a que vou descrever agora, onde é possível logar em um site sem ter a senha.

Basicamente o SQL utilizado em uma simples tela de login é o seguinte:

Falhas de Segurança

Page 32: Segurança da Informação Tópico 34 – Seg.desenvolvimento de software SQL Injection, XSS, etc Prof.Davison Marques

SQL Injection - http://unixwiz.net/techtips/sql-injection.html

Web Application Security Consortium - http://www.webappsec.org

The Open Web Application Security Project -http://www.owasp.org

Guia segurança para aplicações Web - http://www.owasp.org/documentation/guide.html

SQL Security - http://www.sqlsecurity.com

Web applications news - http://www.cgisecurity.net

Web Services Test Security - http://net-square.com/wschess

MSDN Security - http://msdn.microsoft.com/security/

Sites de referência

Page 33: Segurança da Informação Tópico 34 – Seg.desenvolvimento de software SQL Injection, XSS, etc Prof.Davison Marques

Sites de referência

Centro de orientações de segurança (Português)http://www.microsoft.com/brasil/security/guidance/default.mspx

Modelagem de ameaçashttp://www.microsoft.com/brasil/security/guidance/topics/devsec/secmod76.mspx

Checklist - Revisão da arquitetura e do projetohttp://www.microsoft.com/brasil/security/guidance/topics/devsec/secmod97.mspx

MSDN - Desenvolvendo aplicações segurashttp://www.microsoft.com/brasil/security/guidance/topics/devsecapps.mspx

Microsoft Patterns & Practiceshttp://www.msdn.microsoft.com/practices

E-Learning Microsoft focado em segurança https://www.microsoftelearning.com/security

Sites de referência