FixVibe
Covered by FixVibehigh

తప్పిపోయిన Supabase వరుస స్థాయి భద్రత (RLS) ద్వారా అనధికార డేటా యాక్సెస్ ZXCVFIXVIBESGEND ZXCVFIXVIBESEG1 Supabase-మద్దతు గల RLS యాప్‌లలో రో లెవెల్ సెక్యూరిటీ (ZXCVFIXVIBETOKEN2ZXCV) మిస్ లేదా తప్పుగా కాన్ఫిగర్ చేయబడి పూర్తి డేటాబేస్ ఎక్స్‌పోజర్‌కి దారితీయవచ్చు. ZXCVFIXVIBESGEND ZXCVFIXVIBESEG2 Supabase-మద్దతు గల అప్లికేషన్‌లలో, డేటా భద్రత వరుస స్థాయి భద్రత (ZXCVFIXVIBETOKEN3ZXCV)పై ఆధారపడి ఉంటుంది. ZXCVFIXVIBETOKEN4ZXCV స్పష్టంగా ప్రారంభించబడకపోతే మరియు విధానాలతో కాన్ఫిగర్ చేయబడకపోతే, పబ్లిక్ అనామక కీని కలిగి ఉన్న ఏ వినియోగదారు అయినా మొత్తం డేటాబేస్లో డేటాను చదవవచ్చు, నవీకరించవచ్చు లేదా తొలగించవచ్చు. RLS క్లయింట్ తరచుగా పబ్లిక్ ZXCVFIXVIBETOKEN5ZXCV కీతో ప్రారంభించబడే ZXCVFIXVIBETOKEN2ZXCV పరిసరాలలో ఇది చాలా కీలకం. ZXCVFIXVIBESGEND ZXCVFIXVIBESEG3 ## ప్రభావం ZXCVFIXVIBESGEND ZXCVFIXVIBESEG4 రో లెవెల్ సెక్యూరిటీని అమలు చేయడంలో వైఫల్యం (ZXCVFIXVIBETOKEN6ZXCV) అనాన్ బౌండరీ RLS ద్వారా పబ్లిక్ టేబుల్‌లు బహిర్గతం అయినప్పుడు ZXCVFIXVIBETOKEN3ZXCV డేటాబేస్ నుండి డేటాను ప్రశ్నించడానికి అనధికార దాడి చేసేవారిని అనుమతిస్తుంది. ZXCVFIXVIBETOKEN5ZXCV అప్లికేషన్‌లు సాధారణంగా క్లయింట్-సైడ్ కోడ్‌లో ZXCVFIXVIBETOKEN4ZXCV Supabase కీని బహిర్గతం చేస్తాయి కాబట్టి, దాడి చేసే వ్యక్తి ఈ కీని ఉపయోగించి నేరుగా REST ZXCVFIXVIBETOKEN7ZXCEV కాల్‌లను యాక్సెస్ చేయడం ద్వారా డేటాను లాగ్ చేయడం ద్వారా యాక్సెస్ చేయవచ్చు. సున్నితమైన వినియోగదారు సమాచారం ZXCVFIXVIBETOKEN2ZXCV. ZXCVFIXVIBESGEND ZXCVFIXVIBESEG5 ## మూల కారణం ZXCVFIXVIBESGEND ZXCVFIXVIBESEG6 డిఫాల్ట్‌గా, ZXCVFIXVIBETOKEN4ZXCVలోని పోస్ట్‌గ్రెస్ టేబుల్‌లకు RLS పబ్లిక్ యాక్సెస్‌ను నిరోధించడానికి రో లెవల్ సెక్యూరిటీ యొక్క స్పష్టమైన యాక్టివేషన్ అవసరం. డెవలపర్ టేబుల్‌ని సృష్టించినప్పుడు కానీ ZXCVFIXVIBETOKEN7ZXCVని ఎనేబుల్ చేయడం మరచిపోయినప్పుడు లేదా నిర్బంధ విధానాలను నిర్వచించడంలో విఫలమైనప్పుడు, ప్రాజెక్ట్ యొక్క Supabase కీ ZXCVFIXVIBETOKEN2ZXCVని కలిగి ఉన్న ఎవరికైనా డేటాబేస్ డేటాను బహిర్గతం చేస్తుంది. ZXCVFIXVIBETOKEN6ZXCV అప్లికేషన్‌లలో, సర్వర్-సైడ్ రెండరింగ్ మరియు క్లయింట్-సైడ్ ఫెచింగ్‌లకు కూడా జాగ్రత్తగా ZXCVFIXVIBETOKEN5ZXCV క్లయింట్ సెటప్ అవసరం కాబట్టి ప్రామాణీకరించబడిన వినియోగదారు సందర్భం డేటాబేస్ లేయర్ ZXCVFIXVIBETOKEN3ZXCVకి చేరుకుంటుంది. ZXCVFIXVIBESGEND ZXCVFIXVIBESEG7 ## కాంక్రీట్ పరిష్కారాలు ZXCVFIXVIBESGEND ZXCVFIXVIBESEG8 1. **ZXCVFIXVIBETOKEN2ZXCVని ప్రారంభించండి:** అనువర్తన డేటా RLSని నిల్వ చేసే ప్రతి పబ్లిక్ టేబుల్ కోసం Supabaseని అమలు చేయండి. ZXCVFIXVIBESGEND ZXCVFIXVIBESEG9 2. **విధానాలను నిర్వచించండి:** Supabase RLS వంటి వినియోగదారు ప్రామాణీకరణ స్థితి ఆధారంగా ప్రాప్యతను పరిమితం చేసే నిర్దిష్ట విధానాలను సృష్టించండి. ZXCVFIXVIBESGEND ZXCVFIXVIBESEG10 3. **సెక్యూర్ సర్వర్-సైడ్ క్లయింట్‌లు:** RLSని ఉపయోగిస్తున్నప్పుడు, సర్వీస్-రోల్ క్లయింట్‌లను సర్వర్-మాత్రమే ఉంచండి మరియు ఇప్పటికీ వినియోగదారులకు డేటాను తిరిగి ఇచ్చే ముందు యాజమాన్య ఫిల్టర్‌లను వర్తింపజేయండి Supabase. ZXCVFIXVIBESGEND ZXCVFIXVIBESEG11 ## దాని కోసం Supabase ఎలా పరీక్షిస్తుంది ZXCVFIXVIBESGEND ZXCVFIXVIBESEG12 ZXCVFIXVIBETOKEN3ZXCV ఇప్పటికే Supabase ద్వారా చదవడానికి మాత్రమే ZXCVFIXVIBETOKEN4ZXCV ZXCVFIXVIBETOKEN6ZXCV తనిఖీని అమలు చేస్తోంది. స్కానర్ ZXCVFIXVIBETOKEN5ZXCV ప్రాజెక్ట్ URL మరియు అదే-మూలం JavaScript బండిల్‌ల నుండి పబ్లిక్ అనన్ కీని కనుగొంటుంది, పబ్లిక్ టేబుల్ మెటాడేటా కోసం PostgRESTని అడుగుతుంది మరియు వినియోగదారు సెషన్ లేకుండా డేటా బహిర్గతం చేయబడిందో లేదో నిర్ధారించడానికి పరిమిత రీడ్-ఓన్లీ ఎంపికలను ప్రయత్నిస్తుంది. ఇది సేవా పాత్ర ఆధారాలను చొప్పించదు, నవీకరించదు, తొలగించదు లేదా ఉపయోగించదు. ZXCVFIXVIBETOKEN2ZXCV లేకుండా పబ్లిక్ టేబుల్‌లను సృష్టించే SQL మైగ్రేషన్‌లను ఫ్లాగ్ చేసే RLS ద్వారా రెపో స్కాన్‌లు దీన్ని ముందుగా పట్టుకోగలవు.

In Supabase-backed applications, data security relies on Row Level Security (RLS). If RLS is not explicitly enabled and configured with policies, any user with the public anonymous key can read, update, or delete data across the entire database. This is particularly critical in Next.js environments where the Supabase client is often initialized with a public API key.

CWE-284

Impact

Failure to implement Row Level Security (RLS) allows unauthenticated attackers to query data from a Supabase database when public tables are exposed through the anon boundary [S1]. Because Next.js applications typically expose the Supabase anon key in client-side code, an attacker can use this key to make direct REST API calls to the database, bypassing the intended application logic and accessing sensitive user information [S2].

Root Cause

By default, Postgres tables in Supabase require explicit activation of Row Level Security to prevent public access [S1]. When a developer creates a table but forgets to enable RLS or fails to define restrictive policies, the database may expose data to anyone possessing the project's anon key [S1]. In Next.js applications, server-side rendering and client-side fetching also require careful Supabase client setup so authenticated user context reaches the database layer [S2].

Concrete Fixes

  • Enable RLS: Execute ALTER TABLE "your_table_name" ENABLE ROW LEVEL SECURITY; for every public table that stores app data [S1].
  • Define Policies: Create specific policies that restrict access based on the user's authentication status, such as CREATE POLICY "Users can see their own data" ON your_table_name FOR SELECT USING (auth.uid() = user_id); [S1].
  • Secure Server-Side Clients: When using Next.js, keep service-role clients server-only and still apply ownership filters before returning data to users [S2].

How FixVibe tests for it

FixVibe already runs a read-only Supabase RLS check through baas.supabase-rls. The scanner discovers the Supabase project URL and public anon key from same-origin JavaScript bundles, asks PostgREST for public table metadata, and attempts limited read-only selects to confirm whether data is exposed without a user session. It does not insert, update, delete, or use service-role credentials. Repo scans can also catch this earlier through repo.supabase.missing-rls, which flags SQL migrations that create public tables without ENABLE ROW LEVEL SECURITY.