Microsoft Security Development Lifecycle (SDL)

A segurança e a privacidade nunca devem ser uma reflexão posterior ao desenvolver software seguro, deve ser implementado um processo formal para garantir que são considerados em todos os pontos do ciclo de vida do produto. O Ciclo de Vida de Desenvolvimento de Segurança (SDL) da Microsoft incorpora requisitos de segurança abrangentes, ferramentas específicas de tecnologia e processos obrigatórios no desenvolvimento e funcionamento de todos os produtos de software. Todas as equipas de desenvolvimento da Microsoft têm de cumprir os processos e requisitos do SDL, o que resulta num software mais seguro, com vulnerabilidades cada vez menos graves a um custo de desenvolvimento reduzido.

Processo de Ciclo de Vida do Desenvolvimento de Segurança.

O SDL da Microsoft consiste em sete componentes, incluindo cinco fases principais e duas atividades de segurança de suporte. As cinco fases principais são requisitos, design, implementação, verificação e lançamento. Cada uma destas fases contém verificações e aprovações obrigatórias para garantir que todos os requisitos de segurança e privacidade e melhores práticas são devidamente abordados. As duas atividades de segurança de suporte, preparação e resposta, são realizadas antes e depois das fases principais, respetivamente, para garantir que são implementadas corretamente e que o software permanece seguro após a implementação.

Treinamento

Todos os funcionários da Microsoft são obrigados a concluir a formação geral de segurança e sensibilização para a privacidade, bem como formação específica relacionada com a sua função. A formação inicial é fornecida aos novos colaboradores após a contratação e é necessária formação anual de atualização em todo o seu emprego na Microsoft.

Os programadores e engenheiros também devem participar na formação específica de funções para mantê-los informados sobre as noções básicas de segurança e tendências recentes no desenvolvimento seguro. Todos os funcionários a tempo inteiro, estagiários, funcionários contingentes, subcontratados e terceiros também são encorajados e fornecidos com a oportunidade de procurar formação avançada de segurança e privacidade.

Requisitos

Cada produto, serviço e funcionalidade que a Microsoft desenvolve começa com requisitos de segurança e privacidade claramente definidos; são a base de aplicações seguras e informam o seu design. As equipas de desenvolvimento definem estes requisitos com base em fatores como o tipo de dados que o produto irá processar, ameaças conhecidas, melhores práticas, regulamentos e requisitos do setor e lições aprendidas com incidentes anteriores. Uma vez definidos, os requisitos são claramente documentados e controlados.

O desenvolvimento de software é um processo contínuo, o que significa que os requisitos de segurança e privacidade associados mudam ao longo do ciclo de vida do produto para refletir as alterações na funcionalidade e no panorama das ameaças.

Design

Assim que os requisitos de segurança, privacidade e funcionais tiverem sido definidos, a estrutura do software pode começar. Como parte do processo de conceção, os modelos de ameaças são criados para ajudar a identificar, categorizar e classificar potenciais ameaças de acordo com o risco. Os modelos de ameaças têm de ser mantidos e atualizados ao longo do ciclo de vida de cada produto à medida que são feitas alterações ao software.

Diagrama de Modelação de Ameaças.

O processo de modelação de ameaças começa por definir os diferentes componentes de um produto e como interagem entre si em cenários funcionais fundamentais, como a autenticação. Fluxo de Dados Diagramas (DFDs) são criados para representar visualmente as principais interações de fluxo de dados, tipos de dados, portas e protocolos utilizados. Os DFDs são utilizados para identificar e atribuir prioridades a ameaças de mitigação que são adicionadas aos requisitos de segurança do produto.

As equipas de serviços utilizam o Threat Modeling Tool da Microsoft para criar modelos de ameaças, que permitem à equipa:

  • Comunicar sobre o design de segurança dos respetivos sistemas
  • Analisar designs de segurança para potenciais problemas de segurança com uma metodologia comprovada
  • Sugerir e gerir a mitigação para problemas de segurança

Antes de qualquer produto ser lançado, todos os modelos de ameaças são revistos quanto à precisão e à totalidade, incluindo mitigação para riscos inaceitáveis.

Implementação

A implementação começa com os programadores a escrever código de acordo com o plano que criaram nas duas fases anteriores. A Microsoft fornece aos programadores um conjunto de ferramentas de desenvolvimento seguras para implementar eficazmente todos os requisitos de segurança, privacidade e função do software que concebem. Estas ferramentas incluem compiladores, ambientes de desenvolvimento seguros e verificações de segurança incorporadas.

Verificação

Antes de poder ser libertado qualquer código escrito, são necessárias várias verificações e aprovações para verificar se o código está em conformidade com o SDL, cumpre os requisitos de estrutura e está livre de erros de codificação. As revisões manuais são realizadas por um revisor separado do engenheiro que desenvolveu o código. A separação de deveres é um controlo importante neste passo para minimizar o risco de escrita e libertação do código que origina danos acidentais ou maliciosos.

São também necessárias várias verificações automatizadas e estão incorporadas no pipeline para analisar código durante marcar e quando as compilações são compiladas. As verificações de segurança utilizadas na Microsoft enquadram-se nas seguintes categorias:

  • Análise de código estático: analisa o código fonte para potenciais falhas de segurança, incluindo a presença de credenciais no código.
  • Análise binária: avalia as vulnerabilidades ao nível do código binário para confirmar que o código está pronto para produção.
  • Scanner de credenciais e segredos: identifique possíveis instâncias de credenciais e exposição secreta em ficheiros de configuração e código fonte.
  • Análise de encriptação: valida as melhores práticas de encriptação no código fonte e na execução de código.
  • Teste fuzz: utilize dados incorretos e inesperados para exercer APIs e analisadores para marcar para vulnerabilidades e validar o processamento de erros.
  • Validação da configuração: analisa a configuração dos sistemas de produção em relação às normas de segurança e às melhores práticas.
  • Governação de Componentes (CG): deteção de software open source e verificação da versão, vulnerabilidade e obrigações legais.

Se o revisor manual ou as ferramentas automatizadas encontrarem problemas com o código, o submetidor será notificado e terá de fazer as alterações necessárias antes de o submeter novamente para revisão.

Além disso, os testes de penetração são realizados regularmente no Microsoft serviços online por fornecedores internos e externos. Os testes de penetração fornecem outro meio para detetar falhas de segurança não detetadas por outros métodos. Para saber mais sobre os testes de penetração na Microsoft, consulte Simulação de ataques no Microsoft 365.

Lançar

Depois de passar todos os testes e revisões de segurança necessários, as compilações não são imediatamente lançadas para todos os clientes. As compilações são lançadas sistematicamente e gradualmente para grupos maiores e maiores, referidos como anéis, no que é chamado de processo de implementação segura (SDP). Geralmente, os anéis SDP podem ser definidos como:

  • Cadência 0: a equipa de desenvolvimento responsável pelo serviço ou funcionalidade
  • Anel 1: Todos os funcionários da Microsoft
  • Anel 2: utilizadores fora da Microsoft que tenham configurado a sua organização ou utilizadores específicos para estarem no canal de lançamento direcionado
  • Anel 3: lançamento padrão mundial em sub fases

As compilações permanecem em cada um destes anéis durante um número adequado de dias com períodos de carga elevados, exceto a Cadência 3, uma vez que a compilação foi devidamente testada para estabilidade nos anéis anteriores.

Resposta

Todos os serviços Microsoft são amplamente registados e monitorizados após o lançamento, identificando potenciais incidentes de segurança através de um sistema centralizado de monitorização quase em tempo real. Para saber mais sobre a monitorização de segurança e a gestão de incidentes de segurança na Microsoft, consulte Descrição geral da monitorização de segurança e gestão de incidentes de segurança da Microsoft.