OWASP Top 10 Flashcards
Sobre OWASP
O Open Web Application Security Project (OWASP) é uma comunidade aberta dedicada a capacitar as organizações a desenvolver, adquirir e manter aplicações e APIs que podem ser confiáveis.
A01:2021 – Quebra de Controle de Acesso
O controle de acesso impõe a política de modo que os usuários não possam agir fora de suas permissões pretendidas. As falhas normalmente levam à divulgação, modificação ou destruição de informações não autorizadas de todos os dados ou ao desempenho de uma função comercial fora dos limites do usuário.
A01:2021 – Quebra de Controle de Acesso - Como Prevenir
1- Exceto para recursos públicos, negar por padrão.
2- Implemente mecanismos de controle de acesso uma vez e reutilize-os em todo o aplicativo, incluindo a minimização do uso de Cross-Origin Resource Sharing (CORS).
3- Os controles de acesso ao modelo devem impor a propriedade do registro em vez de aceitar que o usuário possa criar, ler, atualizar ou excluir qualquer registro.
4- Os requisitos de limite de negócios de aplicativos exclusivos devem ser impostos por modelos de domínio.
5- Desative a lista de diretórios do servidor da web e certifique-se de que os metadados do arquivo (por exemplo, o .git) e os arquivos de backup não estejam presentes nas raízes da web (web roots).
6- Registrar falhas de controle de acesso e alertar os administradores quando apropriado (por exemplo, falhas repetidas).
7- Limite de taxa o acesso da API e do controlador para minimizar os danos do conjunto de ferramentas de ataque automatizado.
8- Os identificadores de sessão com estado devem ser invalidados no servidor após o logout. Os tokens JWT sem estado devem ter vida curta, para que a janela de oportunidade para um invasor seja minimizada. Para JWTs de longa duração, é altamente recomendável seguir os padrões OAuth para revogar o acesso.
A02:2021 – Falhas Criptográficas
A primeira coisa é determinar as necessidades de proteção dos dados em trânsito e armazenados. Por exemplo, senhas, número de cartão de crédito, registros de saúde, informações pessoas e segredos de negócios que requerem proteção extra, principalmente se esses dados se enquadrarem nas leis de privacidade, alguns exemplos são a da Europa General Data Protection Regulation (GDPR) ou regulamentos de proteção de dados financeiros, como PCI Data Security Standard (PCI DSS).
A02:2021 – Falhas Criptográficas - Como Prevenir
1- Certifique-se de criptografar todos os dados confidenciais armazenados.
2- Aplique os controles de segurança necessários de acordo com a classificação de dados.
3- Não armazene dados confidenciais desnecessariamente. Descarte-o o mais rápido possível ou use tokenização compatível com PCI DSS ou mesmo truncamento. Os dados não retidos não podem ser roubados.Como Prevenir
A03:2021 – Injeção
Uma aplicação é vulnerável a ataques quando:
1- Os dados fornecidos pelo usuário não são validados, filtrados ou higienizados pelo aplicativo.
2- Consultas dinâmicas ou chamadas não parametrizadas sem escape ciente do contexto são usadas diretamente no interpretador.
3- Dados hostis são usados nos parâmetros de pesquisa de mapeamento relacional de objeto (ORM) para extrair registros confidenciais adicionais.
A03:2021 – Injeção - Prevenção
1- A opção preferida é usar uma API segura, que evita usar o interpretador inteiramente, fornece uma interface parametrizada ou migra para uma ferramenta de Mapeamento Relacional de Objeto (ORMs).
Nota: Mesmo quando parametrizados, os procedimentos armazenados ainda podem introduzir injeção de SQL se PL/SQL ou T-SQL concatenar consultas e dados ou executar dados hostis com EXECUTE IMMEDIATE ou exec().
2- Use validação de entrada positiva ou “safelist” do lado do servidor. Esta não é uma defesa completa, pois muitos aplicativos requerem caracteres especiais, como áreas de texto ou APIs para aplicativos móveis.
3- Para quaisquer consultas dinâmicas residuais, escape os caracteres especiais usando a sintaxe de escape específica para esse interpretador..
Nota: Estruturas SQL, como nomes de tabelas, nomes de colunas e assim por diante, não podem ter escape e, portanto, nomes de estruturas fornecidos pelo usuário são perigosos. Este é um problema comum em software de elaboração de relatórios.
4- Use LIMIT e outros SQL de controle em consultas para evitar a divulgação em massa de registros no caso de injeção de SQL.
A04:2021 – Design Inseguro
O design inseguro é uma categoria ampla que representa diferentes pontos fracos, expressos como “design de controle ausente ou ineficaz”. O design inseguro não é a fonte de todas as outras 10 categorias principais de risco de segurança. Há uma diferença entre design inseguro e implementação insegura. Nós diferenciamos entre falhas de design e defeitos de implementação por um motivo, eles têm diferentes causas raízes e remediação. Um design seguro ainda pode ter defeitos de implementação que levam a vulnerabilidades que podem ser exploradas. Um design inseguro não pode ser corrigido por uma implementação perfeita, pois, por definição, os controles de segurança necessários nunca foram criados para a defesa contra ataques específicos. Um dos fatores que contribuem para um design inseguro é a falta de perfis de risco de negócios inerentes ao software ou sistema que está sendo desenvolvido e, portanto, a falha em determinar o nível de design de segurança necessário.
design seguro
O design seguro é uma cultura e metodologia que avalia constantemente as ameaças e garante que o código seja desenvolvido e testado de forma robusta para evitar métodos de ataque conhecidos.
A04:2021 – Design Inseguro - Prevenção
1- Estabeleça e use um ciclo de vida de desenvolvimento seguro com profissionais de AppSec para ajudar a avaliar e projetar controles relacionados à segurança e privacidade.
2- Estabeleça e use bibliotecas de padrões de projeto seguros ou componentes de paved road prontos para usar.
3- Use Modelagem de Ameaças para autenticação crítica, controle de acesso, lógica de negócios e fluxos de chaves.
A05:2021 – Configuração Incorreta de Segurança
1- Falta de proteção de segurança apropriada em qualquer parte da stack das aplicações ou permissões configuradas incorretamente em serviços em nuvem.
2- Recursos desnecessários são ativados ou instalados (por exemplo, portas, serviços, páginas, contas ou privilégios desnecessários).
3- As contas padrão e suas senhas ainda estão ativadas e inalteradas.
A05:2021 – Configuração Incorreta de Segurança - Prevenção
1- Um processo de proteção repetível torna mais rápido e fácil implantar outro ambiente que esteja devidamente bloqueado. Os ambientes de desenvolvimento, controle de qualidade e produção devem ser todos configurados de forma idêntica, com credenciais diferentes usadas em cada ambiente. Este processo deve ser automatizado para minimizar o esforço necessário para configurar um novo ambiente seguro.
2- Uma plataforma mínima sem recursos, componentes, documentação e outros desnecessários. Remova ou não instale recursos e estruturas não utilizados.
3- Uma tarefa para revisar e atualizar as configurações apropriadas para todas as notas de segurança, atualizações e patches como parte do processo de gerenciamento de patch (consulte A06: 2021-Componentes Vulneráveis e Desatualizados). Revise as permissões de armazenamento em nuvem (por exemplo, S3 bucket permissions).
A06:2021 – Componentes Vulneráveis e Desatualizados
Você provavelmente está vulnerável:
1- Se você não souber as versões de todos os componentes que usa (tanto do lado do cliente quanto do lado do servidor). Isso inclui componentes que você usa diretamente, bem como dependências aninhadas.
2- Se o software for vulnerável, sem suporte ou desatualizado. Isso inclui o sistema operacional, servidor web/application, sistema de gerenciamento de banco de dados (DBMS), aplicações, APIs e todos os componentes, ambientes de tempo de execução e bibliotecas.
3- Se você não faz a varredura de vulnerabilidades regularmente e não assina os boletins de segurança relacionados aos componentes que você usa.
4- Se você não corrigir ou atualizar a plataforma, as estruturas e as dependências subjacentes de maneira oportuna e baseada em riscos. Isso geralmente acontece em ambientes em que a correção é uma tarefa mensal ou trimestral sob controle de alterações, deixando as organizações abertas a dias ou meses de exposição desnecessária a vulnerabilidades corrigidas.
5- Se os desenvolvedores de software não testarem a compatibilidade de bibliotecas atualizadas, atualizações ou com patches.
A06:2021 – Componentes Vulneráveis e Desatualizados - Prevenção
Deve haver um processo de gerenciamento de dependências para:
1- Remova dependências não utilizadas, recursos, componentes, arquivos e documentação desnecessários.
2- Atualizar continuamente um inventário com as versões dos componentes do lado do cliente e do lado do servidor e suas dependências usando ferramentas como versions, OWASP Dependency Check, retire.js, etc.
3- Obtenha componentes apenas de fontes oficiais por meio de links seguros.
4- Monitore bibliotecas e componentes sem manutenção ou que não criem patches de segurança para versões anteriores. Se o patch não for possível, considere implantar um patch virtual para monitorar, detectar ou proteger contra o problema descoberto.
A07:2021 – Falhas de identificação e autenticação
Confirmação da identidade, autenticação e sessão do usuário gerenciamento é fundamental para proteger contra autenticação relacionada ataques. Pode haver pontos fracos de autenticação se o aplicativo:
1- Permite ataques automatizados, como preenchimento de credenciais, onde o invasor tem uma lista de nomes de usuários e senhas válidos.
2- Permite força bruta ou outros ataques automatizados.
3- Permite senhas padrão, fracas ou conhecidas, como “Senha1” ou “admin/admin”.
A07:2021 – Falhas de identificação e autenticação - Prevenção
1- Sempre que possível, implemente a autenticação multifator para evitar preenchimento automatizado de credenciais, força bruta e credenciais roubadas
2- Não permita ou implante nenhuma credencial padrão, especialmente para usuários administradores.
3- Implementar verificações de senha fraca, como testar novas ou alteradas contra a lista das 10.000 piores senhas.
4- Alinhe o comprimento da senha, a complexidade e as políticas de rotação com Instituto Nacional de Padrões e Tecnologia (NIST) as diretrizes do 800-63b na seção 5.1.1 para segredos memorizados ou outras políticas de senha modernas e baseadas em evidências.