FixVibe
Covered by FixVibehigh

விடுபட்ட Supabase வரிசை நிலை பாதுகாப்பு (RLS) வழியாக அங்கீகரிக்கப்படாத தரவு அணுகல் ZXCVFIXVIBESGEND ZXCVFIXVIBESEG1 Supabase-ஆதரவு பெற்ற RLS ஆப்ஸில் வரிசை நிலை பாதுகாப்பு (ZXCVFIXVIBETOKEN2ZXCV) விடுபட்டது அல்லது தவறாக உள்ளமைக்கப்பட்டிருப்பது முழு தரவுத்தள வெளிப்பாட்டிற்கு வழிவகுக்கும். ZXCVFIXVIBESGEND ZXCVFIXVIBESEG2 Supabase-ஆதரவு பயன்பாடுகளில், தரவு பாதுகாப்பு வரிசை நிலை பாதுகாப்பை (ZXCVFIXVIBETOKEN3ZXCV) சார்ந்துள்ளது. ZXCVFIXVIBETOKEN4ZXCV வெளிப்படையாக இயக்கப்பட்டு கொள்கைகளுடன் கட்டமைக்கப்படாவிட்டால், பொது அநாமதேய விசையுடன் எந்தப் பயனரும் முழு தரவுத்தளத்திலும் தரவைப் படிக்கலாம், புதுப்பிக்கலாம் அல்லது நீக்கலாம். RLS கிளையன்ட் பொது ZXCVFIXVIBETOKEN5ZXCV விசையுடன் தொடங்கப்படும் ZXCVFIXVIBETOKEN2ZXCV சூழல்களில் இது மிகவும் முக்கியமானது. ZXCVFIXVIBESGEND ZXCVFIXVIBESEG3 ## பாதிப்பு ZXCVFIXVIBESGEND ZXCVFIXVIBESEG4 வரிசை நிலை பாதுகாப்பை (ZXCVFIXVIBETOKEN6ZXCV) செயல்படுத்துவதில் தோல்வி, அங்கீகரிக்கப்படாத தாக்குபவர்கள் ZXCVFIXVIBETOKEN3ZXCV தரவுத்தளத்திலிருந்து தரவை வினவ அனுமதிக்கும். ZXCVFIXVIBETOKEN5ZXCV பயன்பாடுகள் பொதுவாக கிளையன்ட் பக்கக் குறியீட்டில் ZXCVFIXVIBETOKEN4ZXCV Supabase விசையை வெளிப்படுத்துவதால், தாக்குபவர் நேரடியாக ஓய்வு எடுக்க இந்த விசையைப் பயன்படுத்தி ZXCVFIXVIBETOKEN7ZXCEV அழைப்புகளை அணுகவும், உள்நுழையவும். முக்கியமான பயனர் தகவல் ZXCVFIXVIBETOKEN2ZXCV. ZXCVFIXVIBESGEND ZXCVFIXVIBESEG5 ## மூல காரணம் ZXCVFIXVIBESGEND ZXCVFIXVIBESEG6 இயல்பாக, ZXCVFIXVIBETOKEN4ZXCV இல் உள்ள Postgres அட்டவணைகள் பொது அணுகலைத் தடுக்க RLS வரிசை நிலை பாதுகாப்பை வெளிப்படையாக செயல்படுத்த வேண்டும். டெவலப்பர் ஒரு அட்டவணையை உருவாக்கும் போது ZXCVFIXVIBETOKEN7ZXCV ஐ இயக்க மறந்துவிட்டால் அல்லது கட்டுப்பாட்டுக் கொள்கைகளை வரையறுக்கத் தவறினால், திட்டத்தின் Supabase விசை ZXCVFIXVIBETOKEN2ZXCV வைத்திருக்கும் எவருக்கும் தரவுத்தளம் தரவை வெளிப்படுத்தலாம். ZXCVFIXVIBETOKEN6ZXCV பயன்பாடுகளில், சர்வர்-பக்கம் ரெண்டரிங் மற்றும் கிளையன்ட்-பக்கம் பெறுதல் ஆகியவை கவனமாக ZXCVFIXVIBETOKEN5ZXCV கிளையன்ட் அமைப்பு தேவைப்படுகிறது, எனவே அங்கீகரிக்கப்பட்ட பயனர் சூழல் தரவுத்தள அடுக்கை அடையும் ZXCVFIXVIBETOKEN3ZXCV. ZXCVFIXVIBESGEND ZXCVFIXVIBESEG7 ## கான்கிரீட் திருத்தங்கள் ZXCVFIXVIBESGEND ZXCVFIXVIBESEG8 1. **ZXCVFIXVIBETOKEN2ZXCVஐ இயக்கு:** பயன்பாட்டுத் தரவைச் சேமிக்கும் ஒவ்வொரு பொது அட்டவணைக்கும் RLSஐ இயக்கவும். ZXCVFIXVIBESGEND ZXCVFIXVIBESEG9 2. **கொள்கைகளை வரையறுக்கவும்:** Supabase RLS போன்ற பயனரின் அங்கீகார நிலையின் அடிப்படையில் அணுகலைக் கட்டுப்படுத்தும் குறிப்பிட்ட கொள்கைகளை உருவாக்கவும். ZXCVFIXVIBESGEND ZXCVFIXVIBESEG10 3. **Secure Server-Side Clients:** RLS ஐப் பயன்படுத்தும் போது, சேவை-பங்கு க்ளையன்ட்களை சர்வரில் மட்டும் வைத்திருக்கவும், மேலும் Supabase பயனர்களுக்கு தரவைத் தருவதற்கு முன், உரிமையாளர் வடிகட்டிகளைப் பயன்படுத்தவும். ZXCVFIXVIBESGEND ZXCVFIXVIBESEG11 ## அதை எப்படி Supabase சோதிக்கிறது ZXCVFIXVIBESGEND ZXCVFIXVIBESEG12 ZXCVFIXVIBETOKEN3ZXCV ஏற்கனவே படிக்க-மட்டும் ZXCVFIXVIBETOKEN4ZXCV ZXCVFIXVIBETOKEN6ZXCV சரிபார்ப்பை Supabase மூலம் இயக்குகிறது. ஸ்கேனர் ZXCVFIXVIBETOKEN5ZXCV திட்ட URL மற்றும் பொது அனான் விசையை அதே தோற்றம் கொண்ட ஜாவாஸ்கிரிப்ட் தொகுப்புகளிலிருந்து கண்டறிந்து, பொது டேபிள் மெட்டாடேட்டாவை PostgREST ஐக் கேட்கிறது, மேலும் பயனர் அமர்வு இல்லாமல் தரவு வெளிப்படுகிறதா என்பதை உறுதிப்படுத்த, வரையறுக்கப்பட்ட படிக்க-மட்டுமே தேர்ந்தெடுக்கிறது. இது சேவைப் பங்குச் சான்றுகளைச் செருகவோ, புதுப்பிக்கவோ, நீக்கவோ அல்லது பயன்படுத்தவோ இல்லை. ரெப்போ ஸ்கேன்கள் இதை RLS மூலமாகவும் முன்பே பிடிக்கலாம், இது ZXCVFIXVIBETOKEN2ZXCV இல்லாமல் பொது அட்டவணைகளை உருவாக்கும் SQL இடம்பெயர்வுகளைக் கொடியிடுகிறது.

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.