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 recursos [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.authnã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.
