Alto

Tabela auth.users fora do alcance da chave anônima

Pede /rest/v1/users com o cabeçalho Accept-Profile: auth, que seleciona o schema auth, e falha se a resposta for 200.

Por que importa

A tabela auth.users guarda e-mails, provedores de login e metadados de cada usuário. Se a chave anônima consegue lê-la, a lista de usuários do app fica disponível para qualquer pessoa.

Como corrigir

Não exponha o schema auth pela API. Em Settings → API → Exposed schemas, deixe apenas os schemas que o app usa e rode REVOKE ALL ON SCHEMA auth FROM anon.

Como conferir a correção

SB-009
# 401, 403, 404 ou 406 é o resultado esperado.
curl -s -o /dev/null -w '%{http_code}\n' "$SUPABASE_URL/rest/v1/users?select=id" \
  -H "apikey: $ANON_KEY" -H "Authorization: Bearer $ANON_KEY" \
  -H 'Accept-Profile: auth'

Referências