Especialização em Segurança da Informação Segurança em Aplicações 4. Processo Desenvolvimento Seguro Márcio Aurélio Ribeiro Moreira [email protected] http://si.uniminas.br/~marcio/ Pós-SI – 4ª Turma – 2008 Alvos e ferramentas de segurança Produto: Devemos desenvolver com segurança e Garantir a segurança da aplicação desenvolvida Processo: Para isto precisamos de um processo seguro Pessoas: As pessoas precisam pensar, usar e multiplicar os princípios de segurança Ferramentas & Ambientes: Devem atender as premissas de segurança Márcio Moreira Unidade 4 – Processo de Desenvolvimento Seguro – Slide 2 Segurança em Aplicações Segurança nas corporações 2003 vulnerability attack 2004 vulnerability attack admin configuration mistake admin configuration mistake brute force attack brute force attack social engineering social engineering Principais causas de ataques: Vulnerabilidades no software Falhas de administração do ambiente Dados do Zone-h de 11/4/2005 Márcio Moreira Unidade 4 – Processo de Desenvolvimento Seguro – Slide 3 Segurança em Aplicações Processo de desenvolvimento seguro Princípios: Segurança pelo projeto O software deve se projetado, arquitetado e implementado para ser resistente aos ataques Segurança por default Considerar o ambiente de produção inseguro Usar privilégios mínimos e só disponibilizar o necessário Segurança no desenvolvimento e produção Ferramentas e guias de segurança devem ser disponibilizados aos usuários finais e administradores da aplicação Comunicações Em caso de descoberta de vulnerabilidades comunicar claramente o cliente quais ações a serem tomadas Márcio Moreira Unidade 4 – Processo de Desenvolvimento Seguro – Slide 4 Segurança em Aplicações Ciclo de vida de vulnerabilidades Fonte: Pascal Meunier, Overview of Secure Programming, 2004, http:cerias.purdue.edu Márcio Moreira Unidade 4 – Processo de Desenvolvimento Seguro – Slide 5 Segurança em Aplicações Modelagem de negócio O que fazer? Identificar diretivas estratégicas de segurança Identificar necessidades de segurança Revisar o processo de negócio sob a ótica da segurança Faça uma modelagem de ameaças e riscos no nível de negócio Classifique os processos de negócio quanto à segurança Como fazer? Acrescentar as atividades acima nas atividades do processo de modelagem Márcio Moreira Unidade 4 – Processo de Desenvolvimento Seguro – Slide 6 Segurança em Aplicações Requisitos Os requisitos de segurança e privacidade devem ser definidos e especificados Classifique as informações quanto à segurança Deixe claro o que os casos de uso e os atores não podem fazer em termos de segurança Os papéis e responsabilidades de segurança devem ser especificados A norma internacional ISO/IEC 15408 (Common Criteria): É usada para definir os requisitos de uma aplicação Mas, também é utilizada para avaliar a segurança de uma aplicação pronta Márcio Moreira Unidade 4 – Processo de Desenvolvimento Seguro – Slide 7 Segurança em Aplicações Common Criteria – Conceitos 1 TOE - Target Of Evaluation: Sistema a ser avaliado PP - Protection Profile: Padrão de segurança (definido pelo mercado) que um tipo de aplicação precisa ter SFR - Security Functional Requirements: Especificação dos requisitos funcionais de segurança ST - Security Target: Propriedades de segurança de cada elemento do TOE avaliado contra os SFR Márcio Moreira Unidade 4 – Processo de Desenvolvimento Seguro – Slide 8 Segurança em Aplicações Common Criteria – Conceitos 2 SAR - Security Assurance Requirements: Que medidas tomadas no desenvolvimento e na avaliação para garantir os requisitos de segurança da aplicação EAL – Evaluation Assurance Level: Nível de segurança do ST e do TOE (sistema). Valores de 1 a 7, especificados pelo PP. Padrão ISO: 1 a 4, Exemplo: Windows 2000 (EAL4). Os níveis de 5 a 7 são muito rígidos, normalmente usados por agências de segurança governamental. Márcio Moreira Unidade 4 – Processo de Desenvolvimento Seguro – Slide 9 Segurança em Aplicações Como usar a CC no desenvolvimento? Use padrões (PP) como guia Especifique os requisitos de segurança (SFR) Especifique como garantir a segurança (SAR) Mantenha todos ambientes com no mínimo EAL3 Analise e projete a implementação dos SFR Use boas práticas de programação Teste a implementação dos SFR usando os SAR Gere evidências de aderências à norma Se o TOE for crítico, utilize entidades certificadoras para avaliar a segurança Márcio Moreira Unidade 4 – Processo de Desenvolvimento Seguro – Slide 10 Segurança em Aplicações Como usar a CC em aplicações prontas? Levante o padrão (PP) aplicável Levante os SFR da aplicação e dos ambientes (desenvolvimento e produção) Teste se os SFR foram implementados adequadamente Utilizando os níveis de EAL1 a EAL3 Os níveis superiores requerem testes durante o desenvolvimento Realize testes de penetração e de ataques que forem aplicáveis Verifique as evidências apresentadas dos SAR Márcio Moreira Unidade 4 – Processo de Desenvolvimento Seguro – Slide 11 Segurança em Aplicações Referências e exemplos da CC Referências: Common Criteria portal Common Criteria – parte 1 Common Criteria – parte 2 Common Criteria – parte 3 Exemplos de uso: Especificação dos Requisitos de Segurança do Lotus Notes da EMPRESA X Protection Profile – Controlled Access - NSA Windows 2000 – Security Target Márcio Moreira Unidade 4 – Processo de Desenvolvimento Seguro – Slide 12 Segurança em Aplicações Análise & Projeto Faça a modelagem de ameaças a nível de componentes (ativo ameaça risco) & requisitos projeto Defina e revise a segurança da arquitetura Crie guias de análise e projeto seguros Crie e use padrões de projeto seguro Camadas, parâmetros fortemente tipados, menor privilégio e minimize as áreas de exposição Documente as áreas de exposição Defina critérios para eliminar vulnerabilidades Márcio Moreira Unidade 4 – Processo de Desenvolvimento Seguro – Slide 13 Segurança em Aplicações Implementação Use padrões de codificação e testes Isto evita a introdução de novas vulnerabilidades Use ferramentas de testes de segurança Existem ferramentas que testam até a entrada de dados inválidos para as APIs e interfaces de rede Use ferramentas de varredura estática de código Algumas ferramentas podem detectar fluxos de código que resultam em vulnerabilidades Faça revisões Treine os desenvolvedores para fazer revisões e eliminar vulnerabilidades Márcio Moreira Unidade 4 – Processo de Desenvolvimento Seguro – Slide 14 Segurança em Aplicações Equipe de Implementação Inclua nos treinamentos os padrões de segurança Faça treinamentos por perfil: gerente de projeto, arquiteto, analista, desenvolvedor, testador, etc. Apóie iniciativas de melhorias de padrões Tenha um especialista em segurança na equipe Disponibilize o conhecimento existente Escrevendo código seguro Modelagem de ameaças Padrões de projeto Guias de melhores práticas Márcio Moreira Unidade 4 – Processo de Desenvolvimento Seguro – Slide 15 Segurança em Aplicações Um pequeno descuido Blaster Duas linhas de código C no RPCSS: while (*pwszTemp != L'\\') *pwszServerName++ = *pwszTemp++; Levaram a: >15 milhões de computadores infectados 3.3M de chamados de suporte em Set/2003 (volume normal relacionado a vírus é de 350K) Muita repercussão negativa “Isto aumentará o nível de frustração ao ponto que várias organizações irão contemplar seriamente alternativas à Microsoft”. Gartner Group “É realmente recomendado ter cautela aqui. Os esforços [de segurança da Microsoft] foram sinceros, mas não estou certo se foram sinceros o suficiente.” Forrester Research Fonte: Microsoft – TechEd 2005 - José Antonio das Neves Neto Márcio Moreira Unidade 4 – Processo de Desenvolvimento Seguro – Slide 16 Segurança em Aplicações Testes Revise código legado Faça testes de segurança nos componentes Faça testes de segurança da interface com usuário Faça testes de ataque e penetração no sistema How to Break Software Security – Addison Wesley 2003 Faça testes de abuso dos SRF e SAR Faça testes que cubram código novo, código alterado e código antigo Revise o modelo de ameaças (técnicas e negócio) Teste todo o modelo de ameaças Prepare o plano de resposta a ataques Márcio Moreira Unidade 4 – Processo de Desenvolvimento Seguro – Slide 17 Segurança em Aplicações Custo de correções de falhas % Fase Fonte: Research by @Stake for IBM, publicado por Corsaire Limited em 2004 Márcio Moreira Unidade 4 – Processo de Desenvolvimento Seguro – Slide 18 Segurança em Aplicações Distribuição Crie baselines de distribuições seguras Atualize as bases de distribuição somente através de ferramentas seguras Planeje a integridade dos meios físicos Disponibilize chaves hash de verificação Inclua verificações de segurança no ambiente antes de instalar o produto Prepare material orientando o cliente e o usuário sobre procedimentos de segurança Márcio Moreira Unidade 4 – Processo de Desenvolvimento Seguro – Slide 19 Segurança em Aplicações Gestão de configuração e mudança Os elementos de segurança devem ser planejados, validados, verificados e corrigidos durante as mudanças Revisar os requisitos das mudanças em face dos elementos de segurança Garantir atualização da modelagem de ameaças Garantir atualização da implementação dos novos elementos de segurança Márcio Moreira Unidade 4 – Processo de Desenvolvimento Seguro – Slide 20 Segurança em Aplicações Gerência de projetos O gerente de projeto deve garantir a segurança durante o desenvolvimento Deve garantir a execução das revisões e dos demais elementos do processo seguro Deve validar os SFR, SAR e outras questões de segurança com o cliente Executar a revisão final de segurança Márcio Moreira Unidade 4 – Processo de Desenvolvimento Seguro – Slide 21 Segurança em Aplicações Ambientes Ambientes livres de ataques Desenvolvimento, testes, homologação e produção Redes, wireless, servidores, acesso remoto, e-mail, impressão, atualização de SO, etc. Cuidar da segurança física Planejar os procedimentos de atualização Use: Single sign-on, políticas de grupos e processos de gestão de usuários e perfis Márcio Moreira Mercado de Serviços de Diretórios Fonte: Microsoft TechEd 2005 Unidade 4 – Processo de Desenvolvimento Seguro – Slide 22 Segurança em Aplicações Fatores críticos de sucesso Aplicação obrigatória do processo Capacitação dos desenvolvedores Definição das métricas de segurança Estabeleça indicadores, métricas, objetivos e metas Política de segurança Grupo de segurança Especialista em segurança na equipe Execução das revisões (parcial e final) Márcio Moreira Unidade 4 – Processo de Desenvolvimento Seguro – Slide 23 Segurança em Aplicações Complexidade x Vulnerabilidades Millions of Lines Windows Complexity 45 40 35 30 25 20 15 10 5 0 Win Win Win 95 NT 4.0 Win 98 NT 5.0 Win XP 3.1 NT (1997) (1998) (1999) (2000) 2K (2002) (1990) (1995) (2001) Fonte: Microsoft Fonte: CERT/CC Webserver market share Apache: 67%, MS-IIS: 25% (Fev/03) Com SSL: Apache: 54%, MS-IIS: 35% (Set/02) Fonte: CGI International Márcio Moreira Unidade 4 – Processo de Desenvolvimento Seguro – Slide 24 Segurança em Aplicações Resultados da aplicação do processo Microsoft Security Bulletin Search: 1 vulnerabilidade no IIS 6 em dois anos 1 vulnerabilidade no SQL 2000 em dois anos Boletins Críticos + Importantes divulgados após lançamento do produto Márcio Moreira Unidade 4 – Processo de Desenvolvimento Seguro – Slide 25 Segurança em Aplicações Processos em ascensão Microsoft SDL - Secure Development Life Oracle SDP - Secure Development Process Oracle Software Security Assurance Process IBM CLASP - Comprehensive, Lightweight Application Security Process SUN SDP - Secure Development Process Márcio Moreira Unidade 4 – Processo de Desenvolvimento Seguro – Slide 26 Segurança em Aplicações