Introdução & Raciocínio

Todos nós já ouvimos falar, consideramos e sabemos o que é um padrão de design em software. Ou não? Padrões de design de software ficaram famosos em 1994 pela gangue de 4. Esses padrões forneceram a base de muitos padrões diferentes de design de software que usamos em software hoje. Steve McConnell avançou a ideia de padrões de software em seu livro Code Complete. A maioria desses padrões pode ser classificada em várias categorias principais:

No entanto, parece haver uma categoria fundamental faltando, Padrões de Segurança que vai formar a base de uma nova série em que estou trabalhando. Os padrões de segurança em si não são tão novos, a primeira ideia de um padrão de segurança surgiu em 1993 antes de realmente reconhecer todo o conceito de padrões em software. Houve mais trabalhos sobre padrões de segurança no final dos anos noventa, porém a ideia, a formalização realmente tomou forma em 2007 e depois. Pode-se argumentar que 7 anos é muito tempo, no entanto, dentro dos limites da Internet & computação, não é realmente tão longo. Vou examinar como construir vários padrões, construindo uma estrutura segura para uma variedade de padrões e ideologias diferentes.

O que é um padrão de segurança?

Descartes disse – Cada problema que eu resolver se torna uma regra que serviu depois para resolver outros problemas

De certa forma, Descartes estava certo, e quando pensado e aplicado ao contexto da segurança, Descartes estava certo sobre o dinheiro, toda vez que resolvemos um problema de segurança em nossos sistemas, garantindo uma frente, protegendo dados, prevenindo desfiguração, a maneira como fazemos isso pode ser usado como padrão no futuro para evitar tipos semelhantes de abuso contra nossos sistemas.

Eu digo, padrões de segurança ainda é um tema jovem e emergente é que há muito debate sobre o que exatamente é um padrão de segurança e como classificar um padrão de segurança. Thomas Heyman publicou um artigo em 2007, onde analisou cerca de 220 padrões de design de segurança, mas concluiu que apenas 55% deles eram padrões principais de segurança. Em 2011, Munawar Hafiz publicou um artigo próprio. Onde ele concluiu que há aproximadamente 96 padrões de segurança principais. Também não está claro quantos padrões de segurança foram realmente projetados e publicados, devido à semelhança de um padrão de segurança a uma arquitetura, é lógico que alguns padrões poderiam facilmente ter sido mal classificados.

Um padrão de segurança pode ser pensado como um tipo de padrão arquitetônico. Estes são realmente semelhantes no escopo, porque padrões arquitetônicos lidam com problemas globais dentro de sua aplicação, se você não está pensando na segurança como uma questão global em sua aplicação , você está fazendo errado. Um padrão de segurança não é um princípio de segurança, todo padrão de segurança deve tentar cumprir o maior número possível de princípios de segurança, no entanto, isso será discutido mais tarde. Enquanto um padrão de segurança tenta cumprir um princípio de segurança, os princípios de segurança em geral são amplos para serem considerados um padrão em si mesmos.

Eu não vou definir com autoridade o que é um padrão de segurança para você; Vou adiar para os acadêmicos no campo para, em última análise, dizer sim ou não a qualquer padrão em particular. No entanto, para os propósitos desta série, aqui está minha ideia simplificada do que é um padrão de segurança. Um padrão de segurança é – Uma ferramenta para capturar conhecimentos e gerenciar uma complexidade prescritiva, de questões de segurança, ao mesmo tempo em que aumenta a comunicação, aumentando o vocabulário entre o engenheiro de segurança e o engenheiro.

Para isso, acredito firmemente que um padrão de segurança deve fazer o seguinte:

  1. Descrever soluções técnicas no contexto dos problemas de negócios
  2. Verifique as propriedades de segurança essenciais
  3. Estender padrões normais de design à segurança, onde esses padrões são curtos
  4. Fornecer arquitetura de segurança conclusiva para a arquitetura do aplicativo

O que entra em um padrão de segurança?

Viegra e McGraw apresentaram uma lista de 10 princípios que cada aplicativo que quer ser seguro deve tentar cumprir. Eles são:

  1. Securer o link mais fraco
  2. Praticar defesa em profundidade
  3. Falha com segurança
  4. Princípio de menor privilégio
  5. Compartimentalizar
  6. Seja simples.
  7. Promover a privacidade
  8. Esconder segredos é difícil.
  9. Seja relutante em confiar
  10. Use recursos comunitários

Se um aplicativo pode alcançar esses 10 princípios, então é razoável dizer que o aplicativo é bastante seguro contra a atenção indesejada e tentativas de hacking. Padrões de segurança tentam ajudar um aplicativo a se tornar seguro, cumprindo alguns desses princípios, alguns padrões de segurança cumprem um outro a cumprir mais. A pergunta óbvia que se tem que perguntar agora é:

Bem, que padrão de segurança eu uso?

A resposta é um pouco complexa, tendo em mente que, assim como com os padrões de design, não há um único padrão que possa ser usado para resolver todos os seus problemas simultaneamente. Realmente não há nenhum padrão de segurança que atenda a todos esses 10 princípios e um engenheiro ou desenvolvedor pode agora empregar e dizer que sim, o aplicativo é seguro. Nem um engenheiro/desenvolvimento deve dizer que acho que cobrimos todos esses 10 princípios e, portanto, nossa aplicação é segura. Esses princípios são um guia, e devem ser usados em conjunto com outras ferramentas, como modelagem de ameaças e testes de penetração. Seria fácil dizer que nosso mecanismo de autenticação cumpre todos os 10 princípios. Mas falhamos em garantir o acesso ao banco de dados, ou há uma vulnerabilidade de falsificação de solicitações de sites cruzados em nosso aplicativo.

Portanto, com a abordagem regular do padrão de design, é imperativo ao usar padrões de segurança para construir um padrão em uma determinada área da aplicação em cima de outra. Por exemplo, pode-se usar um padrão single access point para gerenciar a autenticação de seu aplicativo e seria uma escolha apropriada. No entanto, e quanto à autorização? Portanto, seria mais apropriado usar o Padrão de Ponto de Acesso Único para autenticação e, em seguida, adiar para Check Point, padrão de acesso para autorização dentro do próprio aplicativo se você for aplicativo impõe regras/funções de autorização. O que você fez com sucesso neste momento é construir um padrão em cima de outro padrão para tornar sua aplicação muito mais segura. Agora, se o seu aplicativo não usar autorização ou autenticação, meu exemplo se torna um ponto mudo, no entanto, tenho certeza de que existem outros padrões de segurança que seriam apropriados para serem considerados.

À medida que exploro diferentes padrões implementados com diferentes amostras de código, também mergulharei nos diferentes princípios mencionados acima que cada padrão de segurança tenta cumprir para ajudar o engenheiro de aplicativos, arquiteta projetar o sistema seguro mais robusto que puder.

Sou engenheiro de uma grande empresa de segurança; Venho desenvolvendo software profissionalmente há 8 anos; Trabalhei para start-ups, pequenas empresas, grandes empresas, eu mesmo, educação. Atualmente, a empresa para a qual trabalho conta com mais de 7.000 funcionários em todo o mundo. Sou responsável pela segurança da nossa plataforma, escrevo códigos, implemento recursos, educo outros engenheiros sobre segurança, faço revisões de segurança, modelagem de ameaças, continuo me educando sobre o software mais recente. À noite, trabalho ativamente para educar outros desenvolvedores sobre questões de segurança e segurança. Também fundei um capítulo local da OWASP que organizo e dirijo.

Eu cortei meus dentes se desenvolvendo em C++ e ainda é onde meu coração está com o desenvolvimento, ultimamente eu tenho escrito um monte de C# code & alguns java, mas eu tenho um projeto ou dois saindo em C++ /DiectX 11 sempre que eu tenho o tempo.

Quando não estou desenvolvendo código estou passando meu tempo com minha esposa e filha ou estou perdido no fundo da floresta em algum lugar onde em uma viagem de acampamento com amigos. Se você não pode me encontrar com um GPS e um dispositivo SPOT, então as chances são de eu estar no campo de Rugby jogando Rugby e me divertindo muito fazendo isso.

Você pode encontrar mais sobre mim e meus pensamentos sobre segurança


Artigo Original