FixVibe
Covered by FixVibehigh

অনুপস্থিত Supabase রো লেভেল সিকিউরিটি (RLS) এর মাধ্যমে অননুমোদিত ডেটা অ্যাক্সেস

Supabase-সমর্থিত অ্যাপ্লিকেশনগুলিতে, ডেটা সুরক্ষা সারি স্তরের সুরক্ষার উপর নির্ভর করে (RLS)। যদি RLS স্পষ্টভাবে সক্রিয় এবং নীতিগুলির সাথে কনফিগার করা না থাকে, তাহলে সর্বজনীন বেনামী কী সহ যেকোনো ব্যবহারকারী সমগ্র ডাটাবেস জুড়ে ডেটা পড়তে, আপডেট করতে বা মুছে ফেলতে পারে। এটি Next.js পরিবেশে বিশেষভাবে গুরুত্বপূর্ণ যেখানে Supabase ক্লায়েন্ট প্রায়ই একটি সর্বজনীন API কী দিয়ে আরম্ভ করা হয়।

CWE-284

প্রভাব

রো লেভেল সিকিউরিটি (RLS) বাস্তবায়নে ব্যর্থতা অননুমোদিত আক্রমণকারীদের একটি Supabase ডাটাবেস থেকে ডেটা জিজ্ঞাসা করার অনুমতি দেয় যখন পাবলিক টেবিলগুলি আনন বাউন্ডারি [S1] এর মাধ্যমে উন্মুক্ত হয়। যেহেতু Next.js অ্যাপ্লিকেশনগুলি সাধারণত ক্লায়েন্ট-সাইড কোডে Supabase anon কীটি প্রকাশ করে, একজন আক্রমণকারী এই কীটি ব্যবহার করে সরাসরি REST API কল করতে এবং অ্যাপ্লিকেশনটিতে কল করার মাধ্যমে ডেটা অ্যাক্সেস করতে পারে। সংবেদনশীল ব্যবহারকারীর তথ্য [S2].

মূল কারণ

ডিফল্টরূপে, Supabase-এ Postgres টেবিলের জন্য পাবলিক অ্যাক্সেস [S1] রোধ করতে সারি স্তরের নিরাপত্তার সুস্পষ্ট সক্রিয়করণ প্রয়োজন। যখন একজন বিকাশকারী একটি টেবিল তৈরি করে কিন্তু RLS সক্ষম করতে ভুলে যায় বা সীমাবদ্ধ নীতিগুলি সংজ্ঞায়িত করতে ব্যর্থ হয়, তখন ডেটাবেস প্রকল্পের anon কী [S1]-এর অধিকারী কারও কাছে ডেটা প্রকাশ করতে পারে৷ Next.js অ্যাপ্লিকেশানগুলিতে, সার্ভার-সাইড রেন্ডারিং এবং ক্লায়েন্ট-সাইড আনয়নের জন্যও যত্নশীল Supabase ক্লায়েন্ট সেটআপ প্রয়োজন যাতে প্রমাণীকৃত ব্যবহারকারীর প্রসঙ্গ ডাটাবেস স্তর [S2]-এ পৌঁছে।

কংক্রিট ফিক্স

  • RLS সক্ষম করুন: অ্যাপ ডেটা [S1] সঞ্চয় করে এমন প্রতিটি পাবলিক টেবিলের জন্য ALTER TABLE "your_table_name" ENABLE ROW LEVEL SECURITY; চালান৷
  • নীতিগুলি সংজ্ঞায়িত করুন: নির্দিষ্ট নীতিগুলি তৈরি করুন যা ব্যবহারকারীর প্রমাণীকরণ স্থিতির উপর ভিত্তি করে অ্যাক্সেস সীমাবদ্ধ করে, যেমন CREATE POLICY "Users can see their own data" ON your_table_name FOR SELECT USING (auth.uid() = user_id); [S1]৷
  • নিরাপদ সার্ভার-সাইড ক্লায়েন্ট: Next.js ব্যবহার করার সময়, পরিষেবা-রোল ক্লায়েন্টদের সার্ভার-শুধু রাখুন এবং ব্যবহারকারীদের [S2] ডেটা ফেরত দেওয়ার আগে মালিকানা ফিল্টারগুলি প্রয়োগ করুন৷

কিভাবে FixVibe এর জন্য পরীক্ষা করে

FixVibe ইতিমধ্যেই baas.supabase-rls এর মাধ্যমে একটি পঠনযোগ্য Supabase RLS চেক চালায়। স্ক্যানার একই-অরিজিন জাভাস্ক্রিপ্ট বান্ডেল থেকে Supabase প্রোজেক্ট ইউআরএল এবং পাবলিক অ্যানন কী আবিষ্কার করে, পোস্টগ্রেস্টকে পাবলিক টেবিলের মেটাডেটার জন্য জিজ্ঞাসা করে এবং ব্যবহারকারীর সেশন ছাড়াই ডেটা প্রকাশ করা হয়েছে কিনা তা নিশ্চিত করার জন্য সীমিত পঠন-পাঠন নির্বাচনের চেষ্টা করে। এটি পরিষেবা-ভূমিকা শংসাপত্র সন্নিবেশ, আপডেট, মুছে বা ব্যবহার করে না। রেপো স্ক্যানগুলি repo.supabase.missing-rls এর মাধ্যমেও এটিকে আগে ধরতে পারে, যা ENABLE ROW LEVEL SECURITY ছাড়াই পাবলিক টেবিল তৈরি করে এমন SQL মাইগ্রেশনকে ফ্ল্যাগ করে।