Ciclo de Vida do Desenvolvimento Seguro
Ciclo 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 geral[editar | editar código-fonte]
O SDL faz uso de um conjunto de princípios de alto nível conhecido como SD3+C:[1]
- Seguro por Projeto (Design): a arquitetura, o projeto e a implementação do software devem ser executados de forma a protegê-lo e proteger as informações que ele processa, além de resistir a ataques.
- Seguro por Padrão (Default): visto que na prática é impossível obter uma segurança perfeita os projetistas devem considerar a possibilidade de haver falhas de segurança.
- Seguro na Implantação (Deployment): o software deve conter ferramentas e orientação que ajudem os usuários finais e/ou administradores a usá-lo com segurança, assim como a implantação das atualizações deve ser fácil.
- Comunicações: os desenvolvedores de software devem estar preparados para a descoberta de vulnerabilidades do produto e devem comunicar-se de maneira aberta e responsável com os usuários finais e/ou com os administradores para ajudá-los a tomar medidas de proteção (como instalar patches ou implantar soluções alternativas).
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.
Fases[editar | editar código-fonte]
Há um total de 7 fases para a implementação do SDL:[5]
Formação[editar | editar código-fonte]
Essa 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.
Requisitos [editar | editar código-fonte]
Nessa 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,
Projeto[editar | editar código-fonte]
Nessa 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ção[editar | editar código-fonte]
Nessa 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ção[editar | editar código-fonte]
Nessa 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çamento[editar | editar código-fonte]
Nessa 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.
Resposta[editar | editar código-fonte]
Nessa fase é realizada a execução de resposta, que consiste de duas partes principais:
- responder a defeitos de segurança e trabalhar com pessoas que descobrem problemas de segurança no código.
- aprender com os erros, através da análise e documentação da causa dos defeitos.
Referências
- ↑ a b c «O ciclo de vida do desenvolvimento da segurança de computação confiável». msdn.microsoft.com. Consultado em 22 de setembro de 2016
- ↑ «Uma análise do ciclo de vida do desenvolvimento da segurança na Microsoft: Por Michael Howard». www.microsoft.com. Consultado em 22 de setembro de 2016
- ↑ Barbosa, Eber Donizeti; Reinaldo de Oliveira (13 de fevereiro de 2016). «Desenvolvimento de Software Seguro: Conhecendo e Prevenindo Ataques Sql Injection e Cross-site Scripting(XSS)». Revista T.I.S. 4 (1). ISSN 2316-2872
- ↑ «Microsoft Security Development Lifecycle». www.microsoft.com. Consultado em 22 de setembro de 2016
- ↑ «Microsoft Security Development Lifecycle (SDL)». Techsurface. Consultado em 22 de setembro de 2016
Bibliografia[editar | editar código-fonte]
- HOWARD, Michael; LIPNER, Steve.The security development lifecycle: SDL, a process for developing demonstrably more secure software (em inglês) Microsoft Press [S.l.] ISBN 0735622140.
- ELIAS, Wagner; CABRAL, Carlos (org.); CAPRINO, Willian (org.). Trilhas em Segurança da Informação: Caminhos e ideias para a proteção de dados. Brasport [S.l.] 2015-01-08. ISBN 9788574526867.