Ciclo de Vida do Desenvolvimento SeguroCiclo de Vida do Desenvolvimento Seguro, ou SDL (do inglês Security Development Lifecycle), é um processo que consiste na inserção de várias atividades e produtos relacionados a segurança na fase de desenvolvimento de software, como modelagem de ameaças, análise estática do código com uso de ferramentas, revisão de código, testes de segurança direcionados e uma revisão final de segurança, minimizando o surgimento de vulnerabilidades.[1][2][3] Foi proposto e utilizado inicialmente pela Microsoft em janeiro de 2004 para reduzir os custos de manutenção de software e aumentar a confiabilidade do software no que se relaciona a bugs de segurança. Baseia-se no clássico modelo em espiral.[1] Atualmente o processo está na versão 5.2, de 23 de maio de 2012.[4] Visão geralO SDL faz uso de um conjunto de princípios de alto nível conhecido como SD3+C:[1]
Todos os elementos do SD3+C impõem requisitos no processo de desenvolvimento, mas os dois primeiros elementos, seguro por design e seguro por padrão, fornecem as maiores vantagens de segurança. Seguro por design determina os processos que têm por objetivo impedir a introdução de vulnerabilidades em primeiro lugar, enquanto seguro por padrão requer que a exposição padrão do software, sua superfície de ataque, seja minimizada. FasesHá um total de 7 fases para a implementação do SDL:[5] FormaçãoEssa fase é um pré-requisito para a implementação do SDL e visa a formação de um núcleo de treinamento e atualização. É realizada uma atualização sobre os princípios básicos de segurança e tendências recentes de segurança e privacidade, assim como treinamento de conceitos fundamentais para a construção de um software melhor. Entre estes conceitos estão incluídos projeto seguro, modelagem de ameaças, codificação segura, testes de segurança e melhores práticas para privacidade. É ainda nessa fase que é definida a freqüência mínima de treinamento e o limiar mínimo aceitável para grupos de treinamento. RequisitosNessa fase definem-se portões de qualidade e analisa os riscos de segurança e privacidade. O time de desenvolvimento identifica requerimentos de segurança e privacidade, ProjetoNessa fase é feita a modelagem de ameaças e a análise de superfície de ataque (ou vulnerabilidade). A modelagem de ameaças consiste no levantamento de contra-medidas de segurança que resolvem as ameaças ao software. A análise de superfície de ataque consiste em fazer um levantamento de formas de acesso do aplicativo ou componente. ImplementaçãoNessa fase são especificadas ferramentas de segurança, listas de verificação, reforçadas funções proibidas e realizada a análise estática, assim como são adotadas as melhores práticas de codificação segura para ajudar a implementar um projeto seguro. VerificaçãoNessa fase são realizados testes dinâmicos de difusão (fuzz) e verificados os modelos de ameaças e a superfície de ataque. Os testes de difusão consistem em tomar dados válidos, metamorfoseá-los e depois observar um aplicativo que empregue esses dados, verificando se aplicação se comporta adequadamente ou apresenta algum tipo de falha de segurança. Em sua forma mais simples, pode-se criar uma biblioteca de arquivos válidos que o aplicativo utilize e depois usar uma ferramenta para corromper sistematicamente um arquivo e fazer o aplicativo executá-lo ou processá-lo no verificador de aplicativos com verificação de heap habilitada para ajudar a descobrir mais erros. LançamentoNessa fase é definido o plano de resposta, a revisão de segurança final (FSR) e a liberação de arquivo. A FSR é executada pela equipe de segurança central com ajuda da equipe de produto, mas não apenas pela equipe de produto. No final do processo FSR, as descobertas são anotadas e é tomada uma decisão sobre o lançamento do software ou o retrabalho de seções. RespostaNessa fase é realizada a execução de resposta, que consiste de duas partes principais:
Referências
Bibliografia
Information related to Ciclo de Vida do Desenvolvimento Seguro |