Introducao Codificacao Segura

2 minute read

Novas leis, normas e regulamentações exigem maior responsabilidade das empresas quanto a segurança dos produtos fornecidos aos consumidores, o que exige maior consciência dos desenvolvedores, e equipes de segurança. Além disso os usuários possuem cada vez maior preocupação com a proteção de seus dados.

Segurança não é funcionalidade; Segurança não é produto; Segurança não é negociável.

Pilares da segurança da informação

  • Confidencialidade: Nível necessário de sigilo para cada tipo de informação que será consumida por pessoas, recursos ou processos.
  • Integridade: Consistência e confiabilidade dos dados.
  • Disponibilidade: Tempo e acessibilidade aos dados.

Resolver falhas de vulnerabilidade pode ser 15 vezes mais caro na fase de testes, e 6 vezes mais barato se feito na fase de análise anterior a implementação.

Arquitetura triplo A

  • Autenticação: Quem é o usuário?
  • Autorização: O que o usuário, uma vez que autenticado, pode fazer?
  • Auditoria: O que o usuário fez?

Riscos mais comuns

  • Ataques maliciosos
  • Falhas de sistemas
  • Falhas humanas

Medidas essênciais

  • Controles de acesso
  • Permissões de usuário
  • Criptografia

Conceitos básicos

  • Fraqueza: Código implementado de forma incorreta que pode ter como consequência falhas de segurança
  • Vulnerabilidade: Fraqueza com possibilidade de exploração por usuário malicioso
  • Mitigar: Implementação de controles com o objetivo de reduzir ou eliminar os riscos de potenciais ameaças
  • Atacante: Usuário malicioso que explora vulnerabilidades de um sistema
  • Ataque: Investida ofensiva em um determinado sistema
  • Ameaças: Potencial ataque
  • CVE: Lista de vulnerabilidades e exposições comuns link
  • CWE: Lista de fraquezas comuns encontradas em software, constantemente atualizada e categorizada link

Principais elementos de uma aplicação web

Abaixo temos os principais elementos passiveis de ataques:

  • Cliente: Onde o código é interpretado (Browser)
  • Servidor: Onde o código receberá requisições e devolverá respostas
  • Bancos de dados: Onde os dados são persistidos

Modelagem de ameaças

Visa identificar:

  • Ameaças;
  • Ataques;
  • Contra medidas;
  • Vulnerabilidades.

Redução da superfície de ataque

Território que pode ser explorado e conquistado pelo usuário malicioso.

  • Quais são as possíveis vulnerabilidades resultantes de dependências do sistema (inclusive as provenientes de terceiros)?
  • Atenção a comentários no código que podem expor informações que facilitarão ataques.

Princípio do privilégio mínimo

Forneça apenas os acessos e permissões mínimas, e necessárias para que o usuário possa realizar as suas atividades.

Um ambiente mais restrito, permite maior controle, onde e possibilita que sejamos mais proativos e menos reativos.

STRIDE

É um acrônimo criado pela Microsoft, auxilia na identificação de ameaças.

Categoria Tipo Descrição
Autenticação Spoofing (falsificação) O atacante tenta se passar por outra pessoa.
Integridade Tampering (violação) O atacante tenta interceptar dados através de seu canal de transmissão para modificá-los.
Não repúdio Repudiation (repúdio) O atacante consegue realizar qualquer ação na aplicação sem que seja identificado como executor das mesmas.
Confidencialidade Information Disclosure (divulgação de informações não autorizada) O atacante consegue ler dados privados que são transmitidos ou armazenados
Disponibilidade Denial of Service (negação de serviço) O atacante consegue impossibilitar o acesso de usuários legítimos a aplicação.
Autorização Elevation of Privilege (elevação de privilégios) O atacante consegue elevar seu nível de acessos e permissões por vias não autorizadas.

Implementações práticas

  • Validação de entrada de dados: Verificar se os dados imputados pelo usuário estão no tipo e formato correto. Executada tanto no cliente quanto no servidor.
  • Autenticação: Algo que o usuário sabe, algo que o usuário possui ou algo que o usuário é.
  • Autenticação multi fator, bloqueio de contas e captcha
  • Protocolos de autenticação como Oauth, OpenId e SAML
  • Limitação para tentativas de autenticação
  • Gerenciamento de sessão
  • Logs de identificação de usuários e ações como login e logout
  • Prevenção a SQL injection
  • Mantenha as bibliotecas de terceiros atualizadas
  • Monitoramento de atividades suspeitas
  • Criptografia de dados sensíveis
  • Cuidado ao reportar mensagens de erro, para não fornecer informações valiosas a um usuário malicioso.
  • Transmitir senhas e chaves de sessão via TLS
  • Midleware entre aplicações

Ferramentas úteis

Updated:

Comments