FixVibe
Covered by FixVibehigh

Firebase Regras de segurança: prevenção da exposição não autorizada de dados

As regras de segurança Firebase são a principal defesa para aplicativos sem servidor que usam Firestore e Cloud Storage. Quando essas regras são muito permissivas, como permitir acesso global de leitura ou gravação na produção, os invasores podem ignorar a lógica pretendida do aplicativo para roubar ou excluir dados confidenciais. Esta pesquisa explora configurações incorretas comuns, os riscos dos padrões de “modo de teste” e como implementar o controle de acesso baseado em identidade.

CWE-284CWE-863

As regras de segurança Firebase fornecem um mecanismo granular aplicado pelo servidor para proteger dados no Firestore, Realtime Database e Cloud Storage [S1]. Como os aplicativos Firebase geralmente interagem com esses serviços em nuvem diretamente do lado do cliente, essas regras representam a única barreira que impede o acesso não autorizado aos dados de back-end [S1].

Impacto das regras permissivas

Regras mal configuradas podem levar a uma exposição significativa de dados [S2]. Se as regras forem definidas para serem excessivamente permissivas, por exemplo, usando configurações padrão de 'modo de teste' que permitem acesso global, qualquer usuário com conhecimento do ID do projeto poderá ler, modificar ou excluir todo o conteúdo do banco de dados [S2]. Isso ignora todas as medidas de segurança do lado do cliente e pode resultar na perda de informações confidenciais do usuário ou na interrupção total do serviço [S2].

Causa raiz: lógica de autorização insuficiente

A causa raiz dessas vulnerabilidades é normalmente a falha na implementação de condições específicas que restringem o acesso com base na identidade do usuário ou nos atributos de recurso [S3]. Os desenvolvedores frequentemente deixam configurações padrão ativas em ambientes de produção que não validam o objeto request.auth [S3]. Sem avaliar request.auth, o sistema não consegue distinguir entre um usuário autenticado legítimo e um solicitante anônimo [S3].

Remediação Técnica

Proteger um ambiente Firebase requer a mudança de acesso aberto para um modelo de princípio de menor privilégio.

  • Aplicar autenticação: certifique-se de que todos os caminhos confidenciais exijam uma sessão de usuário válida, verificando se o objeto request.auth não é nulo [S3].
  • Implementar o acesso baseado em identidade: Configure regras que comparam o UID do usuário (request.auth.uid) a um campo no documento ou ao próprio ID do documento para garantir que os usuários possam acessar apenas seus próprios dados [S3].
  • Escopo de permissão granular: evite caracteres curinga globais para coleções. Em vez disso, defina regras específicas para cada coleção e subcoleção para minimizar a superfície de ataque potencial [S2].
  • Validação via Emulator Suite: Use o Firebase Emulator Suite para testar regras de segurança localmente. Isso permite a verificação da lógica de controle de acesso em relação a vários usuários antes da implantação em um ambiente ativo [S2].

Como FixVibe testa isso

FixVibe agora inclui isso como uma varredura BaaS somente leitura. baas.firebase-rules extrai a configuração Firebase de pacotes JavaScript de mesma origem, incluindo formatos de pacote initializeApp(...) modernos e, em seguida, verifica o Realtime Database, o Firestore e o armazenamento Firebase com solicitações somente leitura não autenticadas. Para o Firestore, ele primeiro tenta listar a coleção raiz; quando a listagem é bloqueada, ele também investiga nomes de coleções confidenciais comuns, como users, accounts, customers, orders, payments, messages, admin e settings. Ele relata apenas leituras ou listagens anônimas bem-sucedidas e não grava, exclui ou armazena conteúdo de documentos do cliente.