Skip to content

Authorization

Falhas de Autorização acontecem quando não verificamos adequadamente se o usuário logado pode ou não realizar determinada ação sobre um recurso.

Esta vulnerabilidade (relacionada a Broken Access Control) está no Top 1 do OWASP Top 10.

Cenários Vulneráveis

Normalmente encontramos problemas de autorização quando:

  • Um usuário não poderia acessar uma informação (como fazer request para uma api ou acessar um documento) e mesmo assim consegue.
  • Quando um usuário logado poderia fazer apenas alguma ação em específico (como acesso de leitura) mas acaba por também poder fazer acessos de outros tipos (como atualizar, criar, deletar, administrar).
  • Quando definimos regras para acesso à alguma funcionalidade (como a pesquisa de clientes) mas não verificamos o conteúdo a ser visualizado (digamos, os dados do cliente em si) e permitimos acessos a conteúdo sigiloso que não deveria estar sendo exposto.

Riscos

Ao não validarmos corretamente as permissões de acesso a informação ou funcionalidades, corremos risco de:

  • Termos nossos dados vazados por acesso indevido a dados pessoais e sensíveis.
  • Ter corrompida a integridade dos dados, uma vez que alguém pode ter acesso a uma funcionalidade na qual não deveria, podendo modificar as informações do sistema.
  • Comprometer os sistemas como um todo através de uma conta ou serviço com acesso indevido a nossa infraestrutura.

Como mitigar

Algumas práticas comuns para evitarmos problemas com relação a Autorização são:

  • Definir permissões a nível de funcionalidade, com o descritivo do tipo de acesso (exemplo: purchases:read). Caso não seja possível neste nível de granularidade, definir pelo menos Perfis de acesso (exemplo: store:customer) e garantir que cada usuário logado tenha o perfil / permissões corretas associadas a ele.
  • Garantir que todas as operações críticas necessitem de um perfil ou permissão em específico para ser executada.
  • Para nós do time de TI, garantir que tenhamos apenas as permissões necessárias para executar nossas atividades.
    • Se não preciso criar infra na AWS, que eu não tenha credenciais para isso.
    • Se eu preciso fazer consultas ao banco de dados apenas para ler informações, que eu tenha acessos apenas a este tipo de operação.
    • Se eu preciso de alguma permissão crítica (como ver dados PII de clientes, ou corrigir algo no ambiente de produção), que esta permissão seja criada nominalmente e dure apenas o tempo necessário para finalizar a atividade.

Para se aprofundar, pode consultar o OWASP Application Security Verification Standard - Access Control

Referências