Compreendendo a estrutura SSDF do NIST

A mitigação dos riscos de segurança da cadeia de fornecimento de software geralmente envolve a implementação de múltiplas camadas de segurança e diferentes estratégias. Mas uma das abordagens mais eficientes para manter seu software seguro é abordar possíveis vulnerabilidades de segurança durante o estágio de desenvolvimento de seu aplicativo de software. Isto é muitas vezes um desafio, uma vez que apenas alguns modelos de ciclo de vida de desenvolvimento de software abordam explicitamente as questões de segurança de software. Para manter seu software seguro, você precisará adotar práticas seguras de desenvolvimento de software para qualquer modelo de ciclo de vida de desenvolvimento de software que escolher usar.

O Secure Software Development Framework (SSDF) descreve algumas das práticas fundamentais que você deve seguir para garantir a segurança do software que você está construindo. O SSDF é baseado em práticas padrão de segurança de desenvolvimento de software estabelecidas pelo Instituto Nacional de Padrões e Tecnologia (NIST) e aborda explicitamente questões de segurança no desenvolvimento de software. O SSDF versão 1.1 é definido em NISTSP 800-218 publicação. A estrutura foi publicada inicialmente em setembro de 2021 como um rascunho versão. Em 22 de março de 2021, o NIST lançou a versão final do SSDF 1.1. Todas as práticas e tarefas de alto nível permaneceram as mesmas, com muitas das diferenças centradas nos vários exemplos fornecidos. Ao decidir quais práticas implementar, o NIST recomenda equilibrar o risco em relação ao custo, viabilidade e aplicabilidade. Automatizar o máximo possível de verificações e processos que promovam a segurança do software é um recurso importante a ser considerado.

Como uma organização que trabalha com um modelo de ciclo de vida de desenvolvimento de software, você deve implementar as diretrizes do SSDF como parte dos esforços gerais para proteger seu software contra vulnerabilidades da cadeia de fornecimento de software. Seguir esta estrutura ajudará na detecção de vulnerabilidades não resolvidas antes do lançamento do software. Isto reduz o risco e os impactos de possíveis explorações de segurança devido a estas vulnerabilidades não detectadas. Este artigo é um guia completo que detalha o que é a estrutura SSDF e como ela contribui para a segurança da cadeia de suprimentos de software.

As 4 práticas da estrutura de desenvolvimento seguro de software

As práticas SSDF são agrupadas em quatro categorias. Na estrutura do SSDF, cada prática é identificada por um identificador único e uma breve explicação sobre o que é, por que é benéfica e as tarefas que precisam ser executadas para implementá-la. A estrutura também inclui exemplos de ferramentas, processos e métodos para implementar as práticas com referências a documentos de práticas de desenvolvimento seguras estabelecidas. A seguir estão as quatro práticas fundamentais do Secure Software Development Framework (SSDF) versão 1.1:

Preparar a Organização (PO)

O desenvolvimento seguro de software é altamente dependente de pessoas. Portanto, o primeiro passo ao implementar o SSDF é garantir que todos na sua organização estejam suficientemente preparados para as mudanças que a estrutura exigirá. Para começar, você deve identificar os requisitos de segurança específicos do software que está desenvolvendo com base nas ferramentas que serão usadas para o desenvolvimento de software. Dessa forma, você pode começar a preparar as pessoas, os processos e a tecnologia que eles utilizam, tanto no nível organizacional quanto no individual.

A preparação da organização geralmente ocorre na forma de obter a adesão da alta administração e implementar o treinamento necessário para os funcionários. Parte dos seus esforços de preparação também pode incluir a implementação de ferramentas que ajudam a automatizar processos e criar um ambiente seguro para desenvolvimento.

Proteja o software (PS)

Uma imagem de guarda-chuva protetor

A Estrutura de Desenvolvimento Seguro de Software descreve práticas para proteger todos os componentes do seu software contra acesso não autorizado e adulteração. Esta é uma etapa importante para ajudar a evitar alterações não autorizadas no código, tanto inadvertidas quanto intencionais, e para proteger o código-fonte e a configuração do software. Proteger seu software pode envolver diferentes abordagens dependendo da situação específica. Quando o código não se destina a ser acessível publicamente, isso pode impedir o roubo do software e tornar mais difícil ou mais demorado para os invasores encontrarem vulnerabilidades.

Ao seguir as práticas descritas nesta seção do SSDF, os consumidores de software garantem que o software que adquirem é legítimo e não foi adulterado. Além disso, ajuda a identificar, analisar e eliminar vulnerabilidades em software após o lançamento, preservando as versões de software.

Produza software bem protegido (PW)

Para produzir software bem protegido com vulnerabilidades de segurança mínimas, existem etapas básicas a serem seguidas durante todo o ciclo de vida de desenvolvimento de software. Esses incluem:

  • Escolhendo configurações de software seguras
  • Avaliar qualquer componente de terceiros do seu software para garantir sua integridade
  • Garantir que o código-fonte do seu software esteja em conformidade com práticas de codificação seguras
  • Revisar, analisar e testar seu código em busca de vulnerabilidades e resolver quaisquer problemas identificados antes do lançamento do código
  • Prevenir vulnerabilidades usando recursos de ferramentas de construção, como compiladores e interpretadores

Responder a vulnerabilidades (RV)

Mesmo depois que seu software for lançado, ainda há uma chance de você descobrir vulnerabilidades nele. Testadores da sua organização, pesquisadores de segurança externos ou até mesmo clientes podem descobrir essas vulnerabilidades. Uma parte importante da segurança do seu software é responder rapidamente a essas vulnerabilidades assim que elas forem descobertas. Quanto mais tempo você ocultar uma brecha de segurança, maiores serão os danos que ela poderá causar. Toda organização precisa de um programa de divulgação de vulnerabilidades, bem como de outras políticas, para analisar novas vulnerabilidades e decidir como elas devem ser abordadas.

 

Quais são os principais pontos a considerar?

O principal objetivo do SSDF é ajudar as organizações a alinhar e priorizar a segurança nas suas atividades de desenvolvimento de software. O SSDF leva em consideração os requisitos de negócios, tolerâncias a riscos e recursos ao implementar segurança no ciclo de vida de desenvolvimento de software. Algumas das principais considerações desta estrutura incluem:

  • Integre a segurança ao SDLC

A primeira etapa na construção de software seguro é integrar a segurança nas diferentes etapas e estágios do ciclo de vida de desenvolvimento de software. Essencialmente, sua equipe de desenvolvimento deve ter uma cultura focada na segurança e isso deve começar ainda na fase inicial do processo de desenvolvimento.

Na maioria dos casos, muitas das práticas de codificação padrão introduzem inúmeras vulnerabilidades que podem ser exploradas por partes mal-intencionadas posteriormente, quando o software for lançado. É por isso que os desenvolvedores devem pensar na segurança desde o início e devem estar bem informados sobre as estratégias que ajudam a reduzir essas possíveis rotas de ataque.

Além de pensar nos aspectos humanos da proteção do seu software, você também deve considerar automatizar o processo de teste e monitoramento do seu software em busca de possíveis vulnerabilidades desde o início.

Imagem de desenvolvimento de código seguro

  • Política de desenvolvimento seguro de software

Uma política de desenvolvimento seguro de software é um conjunto formal de diretrizes que detalha as práticas e procedimentos que sua organização segue para o desenvolvimento seguro de software. Este documento de política contém instruções detalhadas para pessoas, tecnologia e processos que você segue em cada fase do ciclo de vida de desenvolvimento.

Uma política segura de desenvolvimento de software é mais do que apenas uma recomendação para aumentar a integridade do seu software. É até obrigatório em alguns casos. Por exemplo, se o seu software precisar atender aos padrões de segurança, como o ISO 27001 ou os padrões SOC Tipo 2, você precisará de documentação de política de desenvolvimento segura. Felizmente, existem guias de modelos que você pode adotar para essa finalidade. Sua equipe de segurança de software também pode criar a documentação da política do zero e adaptá-la às suas necessidades específicas.

  • Fornecedores terceirizados

Não basta escrever código seguro e seguir os requisitos de segurança internamente. A maioria dos softwares ainda utiliza componentes de fornecedores terceirizados que podem não seguir os mesmos padrões de segurança que você. Esses componentes de código de terceiros são caminhos comuns pelos quais ataques à cadeia de suprimentos de software são realizados.

Como parte dos esforços para garantir a conformidade de segurança durante todo o ciclo de vida de desenvolvimento de software, você deve monitorar todos os componentes de terceiros que usa e certificar-se de que os fornecedores estejam totalmente cientes de seus requisitos de segurança e estejam em total conformidade com os mesmos padrões de segurança que você.

  • Proteção de integridade de código

O código do seu software e todos os seus componentes são pontos potenciais de ataque que agentes mal-intencionados podem explorar para injetar vulnerabilidades no seu software. Para evitar isso, todos os códigos devem ser mantidos em repositórios seguros quando estiverem protegidos contra qualquer forma de adulteração.

Parte dos esforços para manter a integridade do código inclui garantir que apenas desenvolvedores autorizados tenham acesso ao código-fonte. O repositório de código de sua escolha deve ter recursos para garantir isso, bem como recursos adicionais para proteger o processo de login e monitorar quaisquer alterações que possam ser feitas em seu código. Você pode melhorar ainda mais a integridade do código empregando automação para monitorar dados de acesso e realizar análises periódicas de código.

  • Malware pré-instalado

Um caminho comum para ataques à cadeia de fornecimento de software é ocultar vulnerabilidades de segurança em malware pré-instalado. Pode ser um vírus, ransomware, cavalo de Tróia ou spyware que pode causar estragos no seu software. O malware pode estar pré-instalado em dispositivos ou software confiável que você usa no processo de criação de software ou até mesmo no sistema de um fornecedor terceirizado. Esse malware pode permanecer oculto por muito tempo até que um processo legítimo e assinado digitalmente permita que ele se espalhe pelo seu sistema. Proteger o desenvolvimento do seu software envolve estar atento a esse malware pré-instalado e implementar medidas para identificá-lo e removê-lo.

  • Teste de código, revisão e listas de verificação

A abordagem tradicional de desenvolvimento de software geralmente deixa o teste de código para o final do ciclo de vida de desenvolvimento de software. No entanto, esta abordagem reativa para detectar vulnerabilidades de software não é muito eficaz. Uma abordagem mais eficiente é configurar testes automatizados para detectar continuamente falhas no código à medida que você cria. Os desenvolvedores também devem revisar e verificar seu código manualmente para evitar frustrações quando falhas forem descobertas posteriormente.

Como há inúmeras peças e componentes a serem rastreados, faz sentido fazer listas de verificação durante a construção. Isso ajuda sua equipe de desenvolvimento e monitoramento de software a garantir que todas as ações estabelecidas nas políticas do SSDF sejam devidamente cumpridas.

  • Mitigação de vulnerabilidades

Apesar da conformidade com o SSDF e outros padrões de segurança, as vulnerabilidades são praticamente inevitáveis ​​no desenvolvimento de software. O mais importante é estar preparado para mitigar essas vulnerabilidades quando elas ocorrerem. Isso significaria ter uma equipe com planos e estratégias claramente definidos para lidar com incidentes de segurança assim que eles ocorrerem.

A rapidez com que sua organização pode responder às vulnerabilidades de segurança fará uma grande diferença na redução dos impactos adversos de tais ataques. Quando as falhas de software são detectadas e corrigidas rapidamente, os agentes mal-intencionados terão um período mais curto para explorá-las. Assim, a mitigação de vulnerabilidades é um aspecto importante do desenvolvimento seguro de software ao qual toda organização deve prestar atenção.

  • Configurações padrão seguras

Seu novo software deve ter configurações de segurança padrão que ajudem a proteger os usuários contra vulnerabilidades de software, mesmo sem conhecimento avançado. Você também pode implementar medidas que eduquem os usuários sobre essas configurações padrão para mantê-los protegidos mesmo nos estágios iniciais de adoção do seu software.

Conclusão

O Secure Software Development Framework (SSDF) é um conjunto de práticas avançadas que devem ser integradas ao ciclo de vida de desenvolvimento de software de cada organização. Seguindo as práticas estabelecidas nesta estrutura no início do processo de desenvolvimento, você pode reduzir as falhas de segurança na versão do software que eventualmente lançar. O SSDF também ajuda a detectar riscos de segurança e reduz o impacto potencial de vulnerabilidades não detectadas que chegam à versão final. Esta estrutura é fundamental para evitar que tais problemas de segurança se repitam no futuro.