FixVibe
Covered by FixVibehigh

قوانین امنیتی Firebase: جلوگیری از قرار گرفتن در معرض داده های غیرمجاز

قوانین امنیتی Firebase دفاع اولیه برای برنامه های بدون سرور با استفاده از Firestore و Cloud Storage هستند. هنگامی که این قوانین بیش از حد مجاز هستند، مانند اجازه دسترسی سراسری خواندن یا نوشتن در تولید، مهاجمان می توانند منطق برنامه مورد نظر را برای سرقت یا حذف داده های حساس دور بزنند. این تحقیق پیکربندی‌های نادرست رایج، خطرات پیش‌فرض «حالت تست» و نحوه اجرای کنترل دسترسی مبتنی بر هویت را بررسی می‌کند.

CWE-284CWE-863

قوانین امنیتی Firebase یک مکانیسم گرانول و اعمال شده توسط سرور برای محافظت از داده ها در Firestore، پایگاه داده بیدرنگ، و ذخیره سازی ابری [S1] ارائه می دهد. از آنجا که برنامه های کاربردی Firebase اغلب مستقیماً از سمت مشتری با این سرویس های ابری تعامل دارند، این قوانین تنها مانعی را نشان می دهد که از دسترسی غیرمجاز به داده های باطن [S1] جلوگیری می کند.

تاثیر قوانین مجاز

قوانین پیکربندی نادرست می تواند منجر به قرار گرفتن در معرض داده های قابل توجه [S2] شود. اگر قوانین بیش از حد مجاز تنظیم شده باشد - به عنوان مثال، با استفاده از تنظیمات پیش‌فرض "حالت تست" که امکان دسترسی سراسری را فراهم می‌کند، هر کاربری که از شناسه پروژه مطلع باشد می‌تواند کل محتوای پایگاه داده [S2] را بخواند، تغییر دهد یا حذف کند. این همه اقدامات امنیتی سمت سرویس گیرنده را دور می زند و می تواند منجر به از دست رفتن اطلاعات حساس کاربر یا اختلال کلی سرویس [S2] شود.

علت اصلی: منطق مجوز کافی نیست

علت اصلی این آسیب‌پذیری‌ها معمولاً عدم اجرای شرایط خاصی است که دسترسی را بر اساس هویت کاربر یا ویژگی‌های منبع [S3] محدود می‌کند. توسعه‌دهندگان اغلب پیکربندی‌های پیش‌فرض را در محیط‌های تولیدی فعال می‌گذارند که شی request.auth [S3] را تأیید نمی‌کنند. بدون ارزیابی request.auth، سیستم نمی تواند بین یک کاربر تایید شده قانونی و یک درخواست کننده ناشناس [S3] تمایز قائل شود.

اصلاح فنی

ایمن سازی یک محیط Firebase مستلزم حرکت از دسترسی باز به یک مدل اصلی با حداقل امتیاز است.

  • اجرای احراز هویت: با بررسی اینکه آیا شی request.auth [S3] تهی نیست، مطمئن شوید که همه مسیرهای حساس به یک جلسه کاربر معتبر نیاز دارند.
  • دسترسی مبتنی بر هویت را پیاده سازی کنید: قوانینی را پیکربندی کنید که UID کاربر (request.auth.uid) را با فیلدی در سند یا شناسه سند خود مقایسه می کند تا اطمینان حاصل شود که کاربران فقط می توانند به داده های خود [S3] دسترسی داشته باشند.
  • محدوده مجوز گرانول: از حروف عام جهانی برای مجموعه ها اجتناب کنید. در عوض، قوانین خاصی را برای هر مجموعه و زیر مجموعه تعریف کنید تا سطح حمله احتمالی [S2] را به حداقل برسانید.
  • تأیید اعتبار از طریق Emulator Suite: از مجموعه شبیه ساز Firebase برای آزمایش قوانین امنیتی به صورت محلی استفاده کنید. این اجازه می دهد تا قبل از استقرار در محیط زنده [S2]، منطق کنترل دسترسی را در برابر شخصیت های مختلف کاربر تأیید کنید.

چگونه FixVibe آن را آزمایش می کند

FixVibe اکنون این مورد را به عنوان یک اسکن BaaS فقط خواندنی شامل می شود. baas.firebase-rules پیکربندی Firebase را از بسته‌های جاوا اسکریپت با مبدا یکسان، از جمله شکل‌های بسته مدرن initializeApp(...) استخراج می‌کند، سپس پایگاه داده Realtime، Firestore، و ZXCOKVENFIXED را با BXETCV1uthenZVI بررسی می‌کند. درخواست های فقط خواندنی برای Firestore، ابتدا فهرست مجموعه root را امتحان می کند. هنگامی که فهرست مسدود می شود، نام مجموعه حساس رایج مانند users، accounts، customers، orders، users، messages، admin، و settings. فقط خواندن یا فهرست‌های ناشناس موفق را گزارش می‌کند و محتوای اسناد مشتری را نمی‌نویسد، حذف نمی‌کند یا ذخیره نمی‌کند.