tópico 19 segurança no desenvolvimento de sistemas segurança no desenvolvimento de sistemas

36
Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas.

Upload: fernanda-neiva-valverde

Post on 07-Apr-2016

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

Tópico 19

Segurança no Desenvolvimento de Segurança no Desenvolvimento de SistemasSistemas.

Page 2: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

2

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

Page 3: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

3

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

Page 4: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

4

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.

Page 5: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

5

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.

Page 6: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

6

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.

Page 7: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

7

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.

Page 8: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

8

10.5 Segurança nos processos de desenvolvimento e suporteObjetivo: 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.

Page 9: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

9

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

Page 10: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

10

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

Page 11: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

11

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.

Page 12: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

12

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;

Page 13: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

13

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;

Page 14: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

14

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.

Page 15: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

15

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.

Page 16: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

16

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;

Page 17: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

17

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.

Page 18: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

18

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.

Page 19: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

19

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;

Page 20: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

20

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.

Page 21: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

21

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;

Page 22: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

22

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.

Page 23: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

23

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

Page 24: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

24

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.

Page 25: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

25

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

• Buffer Overflow

• Data tampering

• Script Injection

• SQL Injection

• CrossSite

• Scripting

Page 26: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

26

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.

Page 27: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

27

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

Page 28: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

28

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

Page 29: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

29

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.

Page 30: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

30

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

Page 31: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

31

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:

Page 32: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

32

<?php

$usuario = $_POST['usuario'];$senha = $_POST['senha'];

$query = "SELECT * FROM usuarios WHERE username = ‘$usuario’ AND password = ‘$senha’";

?>

********

Usuário:

Senha:

‘ or 1=‘1

$query = "SELECT * FROM usuarios WHERE username = ‘$usuario’ AND password = ‘ ’ or 1=‘1 ’";

O problema na prática

Page 33: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

33

<?php

$usuario = $_POST['usuario'];$senha = $_POST['senha'];$user_tratado = addslashes($usuario);$pass_tratado = addslashes($senha);

$query = "SELECT * FROM usuarios WHERE username = ‘$user_tratado’ AND password = ‘$pass_tratado’";

?>

********

Usuário:

Senha:

‘ or 1=‘1

"SELECT * FROM usuarios WHERE username = ‘ ’ AND password = ‘ \’ or 1=\‘1 ’";

Resolvendo o problema na prática

Page 34: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

34

Regras:

• Validação de dados;• Validação de parâmetros;• O cliente não é confiável! Toda entrada de dados deve ser considerada como mal-intencionada;• Limitações nas contas de acesso ao banco de dados como permitir apenas consultas, ou não execução de stored procedures;• Controle de acesso que permita rastreabilidade através de auditorias;• Controle de permissão para execução de serviços nos servidores. (Ex: serviço do servidor SQL rodando com a conta do administrador; serviço do servidor Web sendo executado com a conta root)• Nunca utilizar ou manter senhas default de servidores de banco de dados ou emails;

Page 35: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

35

Sites de referência

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/

Page 36: Tópico 19 Segurança no Desenvolvimento de Sistemas Segurança no Desenvolvimento de Sistemas

36

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