Como avaliar a segurança do seu sistema com testes ?

             Recentemente temos visto diversos tipos de ataques hackers a sites e sistemas de governo e até em sistemas de umas das mais renomadas instituição de investigação do mundo, FBI.  Lulzsec, um grupo ativista de hackers que, apesar do curto período de 50 dias de existência,  conseguiu cumprir o seu principal objetivo: Mostrar o quão vulnerável são os sistemas ao nosso redor, inclusive sistemas de pagamentos digitais bastante usados pelo mundo.

Após ler várias reportagens sobre ataques hackers pelo mundo, fiquei curioso sobre o estado da arte de teste na área de segurança e encontrei um organização chamada OWASP, que tem a missão de fazer com que aplicações de segurança sejam visíveis para que pessoas e organizações possam tomar decisões sobre os verdadeiros riscos de segurança de uma aplicação.  A OWASP é uma organização, que qualquer pessoa pode participar e todo material disponibilizado pela mesma esta sob a licença de software aberta.

Como todo bom engenheiro de teste, sabemos que para garantir a qualidade do software, temos que nos preocupar  e procurar se envolver em todas as fases do desenvolvimento do software. Por isso apesar de muitos princípios definidos pela OWASP estarem voltados para as fase iniciais do desenvolvimento dos sistemas, os considero também relevantes para os engenheiros de testes. Estes princípios recomendados pelas OWASP são coleções de propriedades, comportamentos, design e práticas de implementação para reduzir a probabilidade de ataques e também minimizar os impactos quando os ataques acontecem. São eles:

  1. Aplique a defesa-em-profundidade – Este princípio significa a definição de mecanismos de segurança em camadas, ou seja, se em caso de ataque causar uma falha em um mecanismo de segurança, outros mecanismos devem prover a segurança necessária para proteger o sistema.
  2. Utilizar o modelo de segurança positiva – Comumente conhecida com lista branca, pode ser aplicada em diversas áreas de segurança. Em vez de definir uma lista do que é proibido e permitir o resto, o modelo de segurança positiva consiste em definir uma lista do que é permitido e rejeitar qualquer outra coisa.
  3. Falhar com segurança – Como desenvolvedor, você deve considerar que há apenas 3 possibilidades de saídas em um mecanismos de segurança: Permitir a operação;  Não permitir a operação e exceção. E quando um mecanismos de segurança gerar uma exceção, você deve garantir que ela deve seguir o caminho de não permitir a operação, ou seja, métodos comuns como isAutorized(), isAutenticated, e validate() devem retornar sempre falso caso ocorra alguma exceção.
  4. Rodar com privilegio mínimo – Este princípio recomenda que cada conta tenha o mínimo privilegio necessário para realizar seus processos dentro do sistema.
  5. Evitar a segurança por obscuridade – Segurança através da obscuridade é a confiança no sigilo da implementação de um sistema ou componentes de um sistema para mantê-lo seguro.  Um exemplo seria um sistema de criptografia, apenas a chave precisa continuar em segredo, o algoritmo não precisa ficar em segredo.
  6. Mantenha a segurança simples – Modismos de engenharia de software preferem certas abordagens excessivamente complexas para o que seria relativamente simples. Os desenvolvedores devem evitar o uso de negativos duplos e arquiteturas complexas quando uma abordagem mais simples seria mais rápida.
  7. Detecte intrusões – Detectar intrusões requer 3 elementos básicos: Capacidade de registrar eventos relevantes de segurança em logs; Procedimentos que garantem que os logs são monitorados regularmente; Procedimentos para responder adequadamente quando uma intrusão for detectada;
  8. Não confie na infraestrutura – Este principio reforça o primeiro da lista. Cada mecanismo de segurança está sujeito a falhas e por isso não se deve confiar plenamente em alguns desses mecanismos, incluindo os de infraestrutura.
  9. Não confie em serviços – Muitas organizações utilizam capacidade de processamento  de terceiros, que na maioria das vezes possuem políticas de segurança diferentes. Por isso todos os sistemas externos devem ser tratados de forma semelhantes.
  10. Estabeleça padrões de segurança – Há muitas maneiras de entregar uma experiência “fora do comum” para os usuários. No entanto esta experiência deve ser segura, e deve esta nas mãos do usuário decisão de reduzir sua segurança. Por padrão a expiração e complexidade da senha deve estar habilitada. Os usuários poderão ser autorizados a desabilitar estas duas características para simplificar o uso da aplicação e aumentar o seu risco
             Além dos princípios recomendados, a OWASP também desenvolveu um guia de testes de segurança, neste documento ele ensina algumas técnicas e ferramentas mais usadas por hackers para ataques em sistemas web e que devem ser usadas para avaliar a segurança do sistema web em desenvolvimento.  Espero que gostem e aproveitem !!!

4 comentários sobre “Como avaliar a segurança do seu sistema com testes ?

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s