criticalCWE-798

Service Role Key Expuesta

La service_role key de Supabase está hardcodeada en código frontend, comiteada en un repo o expuesta en bundles del cliente, dando acceso admin completo a la base de datos a cualquiera.

Cómo Funciona

La service_role key de Supabase bypasea todas las políticas RLS y da acceso CRUD completo a cada tabla. Cuando esta key se expone en bundles de JavaScript del frontend, repos públicos o variables de entorno del cliente (NEXT_PUBLIC_), cualquiera puede extraerla del DevTools del navegador o del código fuente. Con esta key, un atacante puede leer, modificar y eliminar todos los datos, crear o eliminar usuarios y acceder a buckets de storage — efectivamente convirtiéndose en superusuario de la base de datos.

Código Vulnerable
// In a React component or Next.js client code
const supabase = createClient(
  'https://abc123.supabase.co',
  'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoic2VydmljZV9yb2xlIn0...'
);
Código Seguro
// Client-side: always use the anon key
const supabase = createClient(
  process.env.NEXT_PUBLIC_SUPABASE_URL!,
  process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!
);

// Server-side only (API routes, server actions):
const supabaseAdmin = createClient(
  process.env.SUPABASE_URL!,
  process.env.SUPABASE_SERVICE_ROLE_KEY!
);

Ejemplo Real

En 2023, una auditoría de seguridad de proyectos Supabase open-source en GitHub reveló cientos de repos con service_role keys comiteadas en texto plano. Varias aplicaciones en producción tuvieron sus bases de datos exfiltradas antes de que las keys fueran rotadas.

Cómo Prevenirlo

  • Nunca uses el prefijo NEXT_PUBLIC_ o VITE_ para la service_role key
  • Solo usa service_role en código del servidor (API routes, webhooks, cron jobs)
  • Agrega las keys de Supabase a .gitignore y usa variables de entorno
  • Rota las keys inmediatamente si aparecen en cualquier historial de commits

Tecnologías Afectadas

SupabaseNode.jsNext.jsReact

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas