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

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

Há um total de 7 fases para a implementação do SDL:[5]

Formação editar

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

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

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

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

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

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

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

  1. 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 
  2. «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 
  3. 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 
  4. «Microsoft Security Development Lifecycle». www.microsoft.com. Consultado em 22 de setembro de 2016 
  5. «Microsoft Security Development Lifecycle (SDL)». Techsurface. Consultado em 22 de setembro de 2016 

Bibliografia editar

  • 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.
  Este artigo sobre informática é um esboço. Você pode ajudar a Wikipédia expandindo-o.