Introducao Codificacao Segura
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
- Sonar Cloud
- Sonar Qube
- Sonar Lint
- Snyk
- OWASP Top 10
- 12 factor app
- Wazuh
- SDLC
- SIEM
- Pre-commit Hooks
- SAST
- DAST
- SCA
- RASP
- ASVS
- Dependency Check
- OWASP ZAP
- OWASP Threat Dragon
Comments