This post is also available in: Português
Durante o desenvolvimento de um produto, faz muito mais sentido garantir que os controles de segurança sejam incorporados ao projeto ainda nas fases iniciais de concepção. Inclusive, há um nome para esse conceito: Security by Design. Essa abordagem reduz a probabilidade de violações de segurança cibernética e se tornou comum no desenvolvimento de produtos, ainda que esteja longe de ser presença constante.
A ideia por trás do Security by Design é, ao invés de testar a segurança de algo apenas quando já está pronto, a segurança da informação é incorporada desde o início. Isso reduz custos e mitiga riscos – pois resolver problemas de segurança no início envolve custos bem menores.
Além disso, a pressão das demandas de tempo e orçamento é especialmente pesada no final do processo de desenvolvimento, ou seja, não é o melhor momento para ajustes que poderiam ter sido feitos antes. A segurança por design resulta em um sistema mais resiliente, em que a segurança é incorporada em vez de adicionada como uma correção final.
Nesse contexto, a implementação de uma variedade de medidas de segurança por design permite que eventuais falhas de segurança sejam removidas de forma mais eficaz do que por meio de testes no final do desenvolvimento. Mas como dar início a um projeto dentro dessa proposta?
Ao optar pela segurança por design, é importante lembrar-se o tempo todo que o desenvolvimento de software é um trabalho feito por humanos, que são suscetíveis a erros. A saída então é colocar os programadores em uma situação em que eles cometam menos erros, e que os eventuais equívocos possam ser encontrados. Por isso, selecionamos 9 passos que auxiliam na adoção do Security by Design:
- 1: Baseie-se em tecnologia comprovada:
Se usados corretamente, ambientes de programação modernos já oferecem um bom nível de proteção. A segurança desde o projeto começa com a escolha da tecnologia e a compreensão de como usá-la corretamente. Uma em cada três vulnerabilidades é causada pela programação de algo que já está disponível. É importante ficar a par das vulnerabilidades nas tecnologias e bibliotecas usadas e corrigir a tempo. O gerenciamento de bibliotecas – acompanhando o código externo – está se tornando uma das tarefas de programação mais importantes.
- 2: Conscientize:
é essencial alertar os desenvolvedores sobre o que é necessário e quais são as ameaças típicas para o software que estão concebendo. Exemplos e demonstrações funcionam bem nessa etapa. Envolver os desenvolvedores na modelagem de ameaças aumenta sua experiência, o que ajuda a criar ideias mais baseadas em segurança.
- 3: Limites:
o conhecimento sobre segurança é ótimo para os desenvolvedores, mas o ideal é não depender inteiramente deles. Afinal, todo conhecimento deve ser compartilhado, evitando que o mesmo fique centralizado em 1 ou 2 pessoas. De qualquer forma, é importante ensinar aos desenvolvedores os princípios de segurança desde o design, mas sem restringir esse conhecimento a eles – principalmente em equipes multidisciplinares.
- 4: Gerenciar a manutenção:
um código difícil de alterar aumenta a probabilidade de erros de segurança. Então, um código-fonte sustentável é um pré-requisito para a segurança. Portanto, deve-se definir os requisitos de manutenção e fornecer ferramentas para medi-los.
- 5: Automatize verificações:
Mais e mais ferramentas de verificação estão disponíveis para testar automaticamente determinadas vulnerabilidades de segurança, verificando o código-fonte ou testando o comportamento. Não se deve medir esforços na hora de utilizar adequadamente essas ferramentas, que podem ser muito úteis nas checagens de segurança.
- 6: Realizar verificações manualmente:
As verificações manuais são importantes porque as ferramentas de verificação automática só conseguem identificar algumas das possíveis vulnerabilidades. As verificações podem ser realizadas por membros da equipe ou por especialistas externos. É importante não limitar o especialista aos requisitos de segurança especificados, que muitas vezes estarão incompletos. Não se deve subestimar a importância da execução de um teste de penetração manual ou revisão de código. É uma tarefa que deve ficar a cargo de peritos na área, pois requer criatividade, experiência, sistemática, repetibilidade e, idealmente, a capacidade de aconselhar os desenvolvedores sobre como melhorar estruturalmente seu trabalho.
- 7: Expandir para incluir privacidade:
Privacidade por design trata do manuseio correto de dados pessoais – e a segurança dos mesmos. Assim, tem tudo a ver com conscientização, sobre conhecer os princípios e sobre verificações específicas. Um programa de segurança por design pode, portanto, ser expandido para incluir esse tópico.
- 8:Melhoria contínua:
aqui, o foco é montar um plano que defina como melhorar constantemente o desenvolvimento. Uma dica é basear-se em uma estrutura existente, como OWASP SAMM. Trata-se de uma estrutura para ajudar as empresas a avaliar, formular e implementar uma estratégia para segurança de software, que pode ser integrada ao seu ciclo de vida de desenvolvimento de software (SDLC). O OWASP SAMM oferece suporte a todo o ciclo de vida do software, incluindo desenvolvimento e aquisição, e é independente de tecnologia e processo.
- 9: Para todos:
Segurança por design não é apenas para novos desenvolvimentos, ou seja, não se pode esquecer dos sistemas existentes. Assim, é especialmente aconselhável realizar verificações de vulnerabilidades em sistemas que não foram desenvolvidos com segurança por design. Afinal, ainda que a segurança deva ser pensada desde o começo, nunca é tarde para começar a pensar em segurança.
This post is also available in: Português