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'