Skip to content

A01:2021 – Quebra de Controle de Acesso icon

Fatores

CWEs Mapeados Taxa de Incidência Máxima Taxa de Incidência Média Exploração Média Ponderada Impacto Médio Ponderado Cobertura Máxima Cobertura Média Total de ocorrências Total de CVEs
34 55.97% 3.81% 6.92 5.93 94.55% 47.72% 318,487 19,013

Visão Geral

Saindo da quinta posição, 94% dos aplicativos foram testados para alguma forma de controle de acesso quebrado com a taxa de incidência média de 3,81% e tem o maior número de ocorrências no conjunto de dados contribuído com mais de 318 mil. Notável Common Weakness Enumerations (CWEs) incluídas são CWE-200: Exposição de Informações Confidenciais a um Ator Não Autorizado, CWE-201: Exposição de Informações Confidenciais por meio de Dados Enviados e CWE-352: requisições forjadas entre sites.

Descrição

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. Vulnerabilidades comuns de controle de acesso incluem:

  • Violação do princípio de privilégio mínimo ou negação por padrão, onde o acesso deve ser concedido apenas para determinados recursos, funções ou usuários, mas está disponível para qualquer pessoa.

  • Ignorar verificações de controle de acesso modificando a URL (adulteração de parâmetros ou navegação forçada), o estado interno do aplicativo, a página HTML ou usando uma ferramenta de ataque que modifica as requisições de API.

  • Permitir a visualização ou edição da conta de outrem, mediante a disponibilização do seu identificador único (referências diretas não seguras a objetos).

  • Acessando API sem controles de acesso para POST, PUT e DELETE.

  • Elevação de privilégio. Agir como um usuário sem estar logado ou agir como um administrador quando logado como um usuário.

  • Manipulação de metadados, como reproduzir ou adulterar um token de controle de acesso JSON Web Token (JWT), um cookie ou campo oculto manipulado para elevar privilégios ou abusar da invalidação de JWT.

  • A configuração incorreta do CORS permite o acesso à API de origens não autorizadas / não confiáveis.

  • Força a navegação para páginas autenticadas como um usuário não autenticado ou para páginas privilegiadas como um usuário padrão.

Como Prevenir

O controle de acesso só é eficaz em código confiável do lado do servidor ou API sem servidor, em que o invasor não pode modificar a verificação de controle de acesso ou metadados.

  • Exceto para recursos públicos, negar por padrão.

  • 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).

  • 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.

  • Os requisitos de limite de negócios de aplicativos exclusivos devem ser impostos por modelos de domínio.

  • 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).

  • Registrar falhas de controle de acesso e alertar os administradores quando apropriado (por exemplo, falhas repetidas).

  • Limite de taxa o acesso da API e do controlador para minimizar os danos do conjunto de ferramentas de ataque automatizado.

  • 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.

Os desenvolvedores e a equipe de QA devem incluir uma unidade de controle de acesso funcional e testes de integração.

Exemplos de Cenários de Ataque

Cenário #1: O aplicativo usa dados não verificados em uma chamada SQL que está acessando informações da conta:

 pstmt.setString(1, request.getParameter("acct"));
 ResultSet results = pstmt.executeQuery( );

Um invasor simplesmente modifica o parâmetro 'acct' do navegador para enviar o número de conta que desejar. Se não for verificado corretamente, o invasor pode acessar a conta de qualquer usuário.

 https://example.com/app/accountInfo?acct=notmyacct

Cenário #2: Um invasor simplesmente força a navegação para URLs de destino. Direitos de administrador são necessários para acessar a página de administrador.

 https://example.com/app/getappInfo
 https://example.com/app/admin_getappInfo

Se um usuário não autenticado pode acessar qualquer página, é uma falha. Se um não administrador pode acessar a página de administração, isso é uma falha.

Referências

Lista dos CWEs Mapeados

CWE-22 Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

CWE-23 Relative Path Traversal

CWE-35 Path Traversal: '.../...//'

CWE-59 Improper Link Resolution Before File Access ('Link Following')

CWE-200 Exposure of Sensitive Information to an Unauthorized Actor

CWE-201 Exposure of Sensitive Information Through Sent Data

CWE-219 Storage of File with Sensitive Data Under Web Root

CWE-264 Permissions, Privileges, and Access Controls (should no longer be used)

CWE-275 Permission Issues

CWE-276 Incorrect Default Permissions

CWE-284 Improper Access Control

CWE-285 Improper Authorization

CWE-352 Cross-Site Request Forgery (CSRF)

CWE-359 Exposure of Private Personal Information to an Unauthorized Actor

CWE-377 Insecure Temporary File

CWE-402 Transmission of Private Resources into a New Sphere ('Resource Leak')

CWE-425 Direct Request ('Forced Browsing')

CWE-441 Unintended Proxy or Intermediary ('Confused Deputy')

CWE-497 Exposure of Sensitive System Information to an Unauthorized Control Sphere

CWE-538 Insertion of Sensitive Information into Externally-Accessible File or Directory

CWE-540 Inclusion of Sensitive Information in Source Code

CWE-548 Exposure of Information Through Directory Listing

CWE-552 Files or Directories Accessible to External Parties

CWE-566 Authorization Bypass Through User-Controlled SQL Primary Key

CWE-601 URL Redirection to Untrusted Site ('Open Redirect')

CWE-639 Authorization Bypass Through User-Controlled Key

CWE-651 Exposure of WSDL File Containing Sensitive Information

CWE-668 Exposure of Resource to Wrong Sphere

CWE-706 Use of Incorrectly-Resolved Name or Reference

CWE-862 Missing Authorization

CWE-863 Incorrect Authorization

CWE-913 Improper Control of Dynamically-Managed Code Resources

CWE-922 Insecure Storage of Sensitive Information

CWE-1275 Sensitive Cookie with Improper SameSite Attribute