10 princípios para garantir segurança na metodologia Agile

A filosofia de gestão de projetos Agile valoriza a velocidade, a colaboração, a comunicação e a interação. Aqui estão algumas práticas recomendadas para manter uma forte segurança com o método.

Por Steve Durbin

O ambiente de negócios hipercompetitivo de hoje exige que as organizações se movam rapidamente e se mantenham inovadoras. Como resultado, 80% ou mais das organizações adoptaram uma abordagem de desenvolvimento Agile. Infelizmente, esta maior velocidade de desenvolvimento introduz várias oportunidades de aproveitamento por parte dos cibercriminosos, especialmente se os processos do ciclo de vida do software não estiverem protegidos.

Então, como é que as organizações podem tornar as práticas de desenvolvimento Agile mais seguras? Aqui estão 10 princípios que que o Information Security Forum (ISF) recomenda:

Defina funções e responsabilidades

Os líderes responsáveis pela direção de projectos Agile devem definir claramente as funções e responsabilidades das atividades de segurança. Isto inclui o estabelecimento de linhas formais e informais de comunicação, bem como acções de gestão de projectos, tais como protocolos de encaminhamento, reuniões obrigatórias e comunicação do estado do projeto às equipas de segurança. Isto ajudará a integrar a segurança no desenvolvimento Agile de aplicações, ao mesmo tempo que promove o empenho, a responsabilização e uma relação construtiva entre a TI da empresa e os representantes da segurança.

Invista em competências e formação

A segurança é um desporto de equipa. Todos os programadores têm de desempenhar o seu papel para garantir que o código está livre de falhas de segurança. Muitas vezes, os programadores não têm conhecimento e compreensão das questões de segurança e tendem a dar prioridade à entrega de software em detrimento da segurança. Para capacitar os programadores, as organizações devem investir recursos na formação, orientação e melhoria das competências. Isto inclui uma combinação de sessões de formação e sensibilização para a segurança, orientação por parte de programadores seniores, eventos de formação especializada em segurança Agile e acesso a recursos disponíveis gratuitamente, tais como OWASP, CWE, BSIMM (Building Security In Maturity Model), SAFECode e CERT.

Aplique um processo de gestão de riscos de informação

É menos dispendioso e mais eficiente integrar a segurança desde o início, em vez de tentar adicioná-la depois de o bolo sair do forno. A liderança deve estabelecer processos que ajudem a gerir o risco da informação ao longo de todo o ciclo de vida do desenvolvimento.

Isto inclui chegar a acordo sobre uma arquitetura de aplicações de alto nível do ponto de vista da segurança, identificar uma lista de aplicações e funcionalidades “críticas para a segurança”, efetuar uma avaliação do impacto no negócio, realizar avaliações dos riscos e vulnerabilidades da informação nas fases iniciais e um processo para comunicar os riscos recentemente identificados. A liderança deve fornecer orientações sobre a quem pertence o risco da informação, definir o processo de revisão do risco e determinar como são tomadas as decisões de gestão do risco.

Especifique os requisitos de segurança ao programador

Utilize o formato dos programadores (histórias de utilizadores, especificações de requisitos de software, mapeamento de histórias, wireframes, personas e casos de utilização) para articular os requisitos de segurança, de modo a que os programadores possam compreender, definir e implementar melhor as especificações de segurança.

Isto permite que os requisitos de segurança sejam tratados como requisitos funcionais no backlog do produto, transformando-os em tarefas (também conhecidas como decomposição), incorporando-os em ferramentas de gestão de requisitos e incluindo-os nas métricas de produtividade do projeto (como burndown e velocidade).

Conduza a modelação de ameaças

Realize exercícios regulares de modelação de ameaças para compreender o contexto de segurança da aplicação, para descobrir aspectos da conceção que não são seguros, para identificar, analisar e dar prioridade às ameaças; para descobrir as técnicas e os métodos mais comuns utilizados para atacar a aplicação (falsificação, adulteração, negação de serviços, escalonamento de privilégios), para identificar quais as ameaças que justificam testes de segurança adicionais e, mais importante ainda, para produzir estratégias e soluções para atenuar cada ameaça de forma proactiva.

Utilize técnicas de programação segura

Exija que os programadores utilizem técnicas de programação segura estabelecidas, como a programação em pares, a refacção, a melhoria contínua/desenvolvimento contínuo (CI/CD), a revisão pelos pares, as iterações de segurança e o desenvolvimento orientado para os testes.

Isto melhora as qualidades não funcionais do código da aplicação e ajuda a eliminar defeitos de programação que permitem a exploração de vulnerabilidades de segurança. As técnicas de programação segura também são úteis para orientar os programadores que não têm experiência em métodos seguros, utilizando novas tecnologias como a IA ou low-code/no-code, desenvolvendo um aspeto de uma aplicação que é complexo, integrando aplicações de terceiros ou cumprindo requisitos de conformidade.

Efectue análises de segurança independentes

Obtenha revisores independentes para efetuar análises de código estático (reveja o código fonte para analisar erros, bugs e lacunas no código da aplicação) e análises dinâmicas (examine o comportamento da aplicação durante a execução para identificar comportamentos invulgares ou inesperados). Isto dá garantias às partes interessadas de que a aplicação cumpre os requisitos de segurança e não inclui quaisquer vulnerabilidades de segurança.

Automatize os testes de segurança

Normalmente, não é viável para as equipas de segurança testarem e avaliarem manualmente cada iteração Agile. É por isso que é necessário usar uma forma de automação que possa verificar continuamente a segurança do código da aplicação em busca de defeitos e vulnerabilidades, garantir que as tarefas relacionadas com a segurança são concluídas de forma consistente e metódica, analisar eventos de segurança e reduzir a carga sobre as equipas de segurança e os programadores. No entanto, nem tudo pode ser automatizado e a automatização não pode substituir completamente os testes manuais. Por exemplo, é necessária uma revisão manual para identificar falhas lógicas.

Inclua a segurança nos critérios de aceitação

Crie, comunique e mantenha um conjunto normalizado de critérios de aceitação de segurança para confirmar que foi efectuada uma revisão independente do código da aplicação; que os testes de segurança foram concluídos; que as secções de código incorporadas na aplicação são passíveis de manutenção, rastreadas e têm origem em fontes comprovadas e de boa reputação; que os requisitos do backlog de iteração foram cumpridos com êxito; que todos os defeitos, incluindo as vulnerabilidades de segurança, foram resolvidos e que todas as alterações de conceção que possam afetar a segurança foram identificadas e aprovadas.

Isto ajuda a reduzir a dívida técnica, a dar garantias às partes interessadas e a verificar se os critérios de aceitação da segurança foram totalmente cumpridos antes de o código da aplicação ser entregue.

Avalie o desempenho da segurança

Os projectos Agile incluem normalmente uma avaliação limitada do desempenho da segurança. Isto faz com que seja difícil para as organizações determinar se a segurança das suas aplicações cumpre os requisitos comerciais. Por conseguinte, é importante que as organizações monitorizem e avaliem as métricas de segurança adequadas em relação a um conjunto acordado de KPIs.

As métricas de segurança podem incluir coisas como tipo, número e gravidade das vulnerabilidades de segurança, resultados de testes independentes, número de desvios aprovados e não aprovados da política de segurança, período de tempo sem uma violação de segurança e outras métricas de remoção de defeitos.

Se está a desenvolver um projeto Agile, então a segurança da informação deve seguir o mesmo caminho. É por isso que se recomenda que todas as organizações sigam os princípios de segurança e as práticas recomendadas acima. O sucesso da segurança depende do nível de colaboração e compromisso entre todas as partes (programadores, gestores de projectos, equipas executivas, etc.). Se os processos de segurança puderem fazer iterações e melhorias rápidas, tal como a codificação, só então será possível obter uma melhor segurança das aplicações e mudanças com impacto no terreno.




Deixe um comentário

O seu email não será publicado