Requisitos Não funcionais Segurança - dsm-cefet-rj/trabalho-integrado-2020-1-grupo-5 GitHub Wiki

SEGURANÇA

OWASP - Open Web Application Security Project

O OWASP é um projeto de comunidade de segurança gratuita e aberta, que fornece uma riqueza absoluta de conhecimentos, ferramentas para ajudar qualquer pessoa envolvida nos processos de criação, desenvolvimento, testes, implementação e suporte de uma aplicação web a garantir que a segurança seja constituída desde o início e que o produto final seja tão seguro quanto possível.

Broken Authentication - Vulnerabilidades de autenticação de usuário

Definição

Processos inválidos de autenticação, implementações impŕoprias e falhas nas funções de implementação podem comprometer as informação de credenciais da aplicação. Essas falhas também podem levar a ataques cibernéticos como credential stuffing e ataques automáticos de força bruta.

Propostas de melhoria

  • Autenticação Multifator (MFA)
  • Regra paras senhas (Ex.: Sensor de força da senha)
  • Metodologia de “Esqueci minha senha” bem estruturada (Ex: Enviar e-mail para verificar se foi o usuário que requisitou a troca de senha)
  • Incorporar API para autenticação (ex: Google OAuth)

Sensitive data exposure - Exposição de dados sensíveis

Definição

A exposição de dados sensíveis de uma aplicação web é causado devido a um desenvolvimento fraco em relação aos protocolos de segurança e proteção. Atenção aos usos de APIS, a incompatibilidade pode levar a uma não intencional decodificação dos dados guardados.

Propostas de melhoria

  • Periodicamente verificar que a versão dos algoritmos de encriptação estão atualizados.

Boas práticas

  • Desabilitar o auto-preenchimento de formulários que podem pegar dados do usuário.

Broken Access Control - Problemas no controle de acesso e identificação dos usuários

Definição

Restrições ou limitações insuficientes na autenticação de usuários pode levar ao acesso não-autorizado de dados e funções da aplicação. Com esse problema, é possível que algum usuário consiga alterar qualquer funcionalidade ou informação da aplicação.

Propostas de melhoria

  • Desenvolver uma política para cada usuário. (Ex.: AWS IAM)
  • Bloquear o acesso a funções específicas da aplicação.

Boas práticas

  • Nunca permitir que todos os usuários tenham acesso livre a tudo.

Using componentes with known vulnerabilities - Usar componentes com suas próprias vulnerabilidades

Definição

Usar bibliotecas, componentes, módulos, APIs, entre outros, que tenham vulnerabilidades. Ao usar esses elementos, as suas próprias vulnerabilidades são adicionadas a aplicação que pode levar a um conjunto de vulnerabilidades ou até mesmo quebrar as implementações de segurança já feitas.

Propostas de melhoria

  • Saber bem quais falhas de segurança cada um dos elementos utilizados tem e como desenvolver uma implementação de segurança para contorná-las.

Boas práticas

  • Não incorporar componentes e dependências que tenham falhas de segurança na aplicação antes de saber criar novas implementações de segurança para contorná-las.

Componentes da aplicação com vulnerabilidades

  • React 16.4.1 ou inferior O problema de segurança permite que o invasor acione uma vulnerabilidade Cross-Site Scripting(XSS), que teria um output que permitiria o atacante injetar uma marcação arbitrária.
  • MongoDB 4.0.11 ou inferior Um usuário ou programa do MS Windows o qual pode criar um arquivo de configuração Open SSL em um local fixo pode atacar usuários conectados ao MongoDB que estejam rodando os programas de Utils.