10 princípios do Security by Design

 

Cetome | Security-by-Design / DevSecOps for IoT

1. Minimizar a superfície de ataque

O princípio de minimização de superfície de área de ataque é usado para restringir as funções que os usuários têm permissão para acessar, contribuindo com a redução de vulnerabilidades. Com a integração de ferramentas de proteção já existentes, é possível desenvolver um ecossistema de monitoramento e correções em tempo real. Algumas medidas usadas para reduzir a superfície de ataque em servidores e sistemas são:

  • Implementação e configuração de uma solução de firewall.
  • Desenvolvimento seguro.
  • Monitoramento de entrada e saída dos servidores.
  • Desenvolvimento de recursos de backup para servidores e estações de trabalho.

2. Estabelecimento de padrões

Padrões de desenvolvimento ajudam a entender as implicações de segurança das práticas de desenvolvimento e implantação de código. As orientações a seguir são um começo para que as equipes de desenvolvimento construam softwares resilientes e seguros:

  • Verificação do acesso ao banco de dados.
  • Filtragem de campos de entrada do sistema.
  • Não confiar em validações implementadas no lado do cliente.
  • Fazer a codificação de resposta.
  • Evite que navegadores memorizem as informações importantes em formulários.
  • Verificação de tráfego de informações sigilosas.
  • Tratamento de erros.
  • Definição de senhas fortes.
  • Autenticação dos web services.

3. Princípio do menor privilégio

O princípio do menor privilégio sugere fornecer as permissões necessárias para que um usuário realize suas tarefas, com um tempo determinado e os direitos mínimos estabelecidos. O princípio do menor privilégio é uma estratégia que pode ser incorporado ao Security by Design promovendo a segurança das informações e privacidade. A atribuição de permissões a um usuário pode impedir que ele execute tarefas para as quais não está autorizado, como acessar, obter ou modificar informações. Algumas medidas usadas para definir o princípio do menor privilégio em servidores e sistemas são: 

  • Considerar todos os usuários do sistema como convidados.
  • Especificar o que é proibido e assim, o restante pode ser permitido.
  • Qualquer usuário ou objeto tem as permissões básicas para executar as suas tarefas e nenhuma outra a mais.
  • Definir pontos de estrangulamento no sistema onde tudo será proibido para determinados usuários.

4. Princípio da defesa em profundidade

A defesa em profundidade é um conjunto de práticas que se concentram na proteção, detecção e reação de invasões. Para isso, são usados softwares de segurança e ferramentas para a construção de uma estratégia contra ataques. O uso de ferramentas de segurança como firewalls, antivírus, filtragem de conteúdo, criptografia e controle de acesso colaboram para prevenção de ataques.

5. Falhar com segurança

A manipulação segura de erros é um aspecto importante para uma software seguro e para o Security by Design. Existem dois tipos de erros que merecem destaque:

  • O primeiro são as exceções que ocorrem no processamento de um controle de segurança. 
  • O outro tipo de exceção relevante à segurança está no código que não faz parte de um controle de segurança. 

É importante que essas exceções não permitam comportamentos que o sistema normalmente não permitiria. Um software desenvolvido com segurança deve considerar a existência de três resultados possíveis de um mecanismos de segurança: proibir a operação, permitir a operação ou lançar uma exceção.

6. Não confie nos serviços

Um modelo de confiança zero (conhecido também como Zero Trust) é composto pela recomendação de que as empresas não devem confiar em ninguém ou em nenhum dispositivo ou sistema por padrão e devem verificar todas as conexões antes de permitir o acesso à sua rede. A criação desse modelo foi uma resposta às antigas abordagens de segurança, baseadas na suposição de que a ameaça interna era inexistente e que a segurança da informação deve focar apenas na defesa contra ameaças externas. As ameaças internas são representadas por colaboradores, ex-colaboradores, parceiros de negócio, prestadores de serviços ou qualquer pessoa que tem acesso a informações privilegiadas. As empresas podem levar anos para descobrir a presença dessas ameaças em sua estrutura. Um modelo de confiança zero é composto por:

  • Conhecimento da arquitetura e infra-estrutura da empresa.
  • Criação de uma identidade de usuário forte e única.
  • Desenvolvimento de processos de autenticação.
  • Monitoramento de serviços e dispositivos.
  • Definição de políticas de acordo com o valor dos serviços e dados.
  • Controle de acesso aos serviços e dados.
  • Não confie na rede, incluindo a rede local.

7. Segregação de funções

A segregação de funções e responsabilidades é o controle de acesso baseado no papel, na atividade ou na função de um usuário dentro de um sistema. A utilização de um perfil por função (ou RBAC – Role Based Access Control) providencia um modelo para administrar privilégios de acessos aos sistemas e infraestrutura de uma empresa. O perfil por função consegue agrupar os acessos, possibilitando uma visão geral dos privilégios e controlando os acessos de uma forma segura para o Security by Design. A implementação de um processo de separação de deveres pode ser composta por:

  • Definição de regras de segregação de funções aplicáveis ao ambiente.
  • Criação de matriz de riscos.
  • Análise de riscos para identificação de violações da segregação de funções.
  • Análise de atividades conflitantes executadas por usuários alternativos.
  • Resolução de conflitos que apresentem alto risco.

8. Evitar a segurança por obscuridade

A segurança por obscuridade é quando os desenvolvedores codificam os sistemas de forma secreta acreditando que ninguém será capaz de encontrar as vulnerabilidades do software. O problema com essa técnica é a dependência em relação ao sigilo da implementação do projeto como forma principal de prover segurança para o sistema. Geralmente, as pessoas que fazem uso dessa técnica assumem que o não conhecimento das vulnerabilidades de um software é um indicativo de segurança. Para evitar a segurança por obscuridade é preciso investir em práticas comprovadas para a segurança de sistemas:

  • Utilização de senhas fortes.
  • Treinamento e conscientização de equipes.
  • Princípio do mínimo privilégio possível.
  • Utilização de softwares de proteção e backup.

9. Mantenha a segurança simples

No início de uma implementação de Security by Design é comum fazer uso de ferramentas, processos e controles em favor da segurança de sistemas, mas é necessário refletir sobre a relevância de todos esses controles, eles acrescentam mais segurança ou burocracia aos sistemas? A existência de muitas ferramentas pode aumentar as brechas de segurança em vez de extingui-las, assim como procedimentos pouco documentados ou falta de automações que podem deixar usuários esperando demais por um acesso. Buscar uma segurança simples e eficaz envolve:

  • Entender que a segurança de sistemas não envolve apenas tecnologias. Existem políticas, processos e pessoas. Busque por uma postura proativa e não apenas visando o cumprimento de checklists.
  • Investir em treinamentos e capacitação das equipes de desenvolvimento em boas práticas e comunicar a todas as partes interessadas sobre mudanças no sistema.
  • Entender os conceitos fundamentais de segurança da informação e buscar por ferramentas e controles adequados a estrutura do sistema.

10. Segurança no processo de manutenção do software

As vulnerabilidades em sistemas precisam ser estudadas pelo time de desenvolvimento para uma correção eficiente mesmo. É preciso entender o comportamento da vulnerabilidade de forma estrutural no sistema e verificar se existem outros componentes que podem ser afetados pela mesma vulnerabilidade. 

A falta de um processo ou controle para realizar as correções de problemas pode causar o surgimento de novos problemas e brechas de seguranças nos sistemas. Um processo contínuo de gestão de vulnerabilidades é visto como um aliado para as equipes de desenvolvimento, atuando na identificação, análise, classificação e tratamento das vulnerabilidades. Esse processo busca medir o progresso e avaliar os riscos aos quais os sistemas estão submetidos, colaborando com  uma estratégia de Security by Design. As principais etapas de um processo de gestão de vulnerabilidades consistem em:

  • Mapeamento dos riscos.
  • Análise e priorização dos riscos.
  • Definição de responsáveis.
  • Tratamento das vulnerabilidades.
  • Treinamento dos times de desenvolvimento.
  • Produção de relatórios de acompanhamento.

One Reply on “10 princípios do Security by Design”

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

Este site utiliza o Akismet para reduzir spam. Fica a saber como são processados os dados dos comentários.