FixVibe
Covered by FixVibehigh

Firebase כללי אבטחה: מניעת חשיפת נתונים לא מורשית

Firebase כללי אבטחה הם ההגנה העיקרית עבור יישומים ללא שרת המשתמשים ב-Firestore וב-Cloud Storage. כאשר הכללים הללו מתירנים מדי, כגון מתן גישה גלובלית לקריאה או כתיבה בייצור, התוקפים יכולים לעקוף את היגיון היישום המיועד כדי לגנוב או למחוק נתונים רגישים. מחקר זה בוחן תצורות שגויות נפוצות, את הסיכונים של ברירות מחדל של 'מצב בדיקה' וכיצד ליישם בקרת גישה מבוססת זהות.

CWE-284CWE-863

כללי האבטחה Firebase מספקים מנגנון מפורט, נאכף שרת, להגנה על נתונים ב-Firestore, במסד נתונים בזמן אמת וב-Cloud Storage [S1]. מכיוון שיישומי Firebase מקיימים לעתים קרובות אינטראקציה עם שירותי ענן אלה ישירות מצד הלקוח, כללים אלה מייצגים את המחסום היחיד המונע גישה לא מורשית לנתוני הקצה האחורי [S1].

ההשפעה של כללים מתירים

כללים שגויים יכולים להוביל לחשיפה משמעותית לנתונים [S2]. אם כללים מוגדרים כמתירניים מדי - לדוגמה, שימוש בהגדרות ברירת המחדל של 'מצב בדיקה' המאפשרות גישה גלובלית - כל משתמש עם ידע על מזהה הפרויקט יכול לקרוא, לשנות או למחוק את כל תוכן מסד הנתונים [S2]. זה עוקף את כל אמצעי האבטחה בצד הלקוח ועלול לגרום לאובדן מידע משתמש רגיש או להפרעה מוחלטת בשירות [S2].

סיבת שורש: לוגיקה של הרשאות לא מספקת

הסיבה העיקרית לפגיעויות אלו היא בדרך כלל הכישלון ביישום תנאים ספציפיים המגבילים את הגישה על סמך זהות המשתמש או תכונות המשאב [S3]. מפתחים משאירים לעתים קרובות תצורות ברירת מחדל פעילות בסביבות ייצור שאינן מאמתות את האובייקט request.auth [S3]. מבלי להעריך את request.auth, המערכת לא יכולה להבחין בין משתמש מאומת לגיטימי לבין מבקש אנונימי [S3].

תיקון טכני

אבטחת סביבת Firebase מצריכה מעבר מגישה פתוחה למודל ה-principal of-less-privilege.

  • אכוף אימות: ודא שכל הנתיבים הרגישים דורשים הפעלת משתמש חוקית על ידי בדיקה אם האובייקט request.auth אינו null [S3].
  • הטמיע גישה מבוססת זהות: הגדר כללים המשווים את ה-UID של המשתמש (request.auth.uid) לשדה בתוך המסמך או למזהה המסמך עצמו כדי להבטיח שמשתמשים יוכלו לגשת רק לנתונים שלהם [S3].
  • היקף הרשאה פרטנית: הימנע מתווים כלליים גלובליים עבור אוספים. במקום זאת, הגדר כללים ספציפיים עבור כל אוסף ותת-אוסף כדי למזער את משטח ההתקפה הפוטנציאלי [S2].
  • אימות באמצעות Emulator Suite: השתמש ב-Firebase Emulator Suite כדי לבדוק כללי אבטחה באופן מקומי. זה מאפשר אימות של לוגיקה של בקרת גישה מול אישיות משתמשים שונים לפני פריסה לסביבה חיה [S2].

כיצד FixVibe בודק את זה

FixVibe כולל כעת את זה כסריקת BaaS לקריאה בלבד. baas.firebase-rules מחלץ את תצורת Firebase מחבילות JavaScript מאותו מקור, כולל צורות חבילות מודרניות של initializeApp(...), ולאחר מכן בודק מסד נתונים בזמן אמת, Firestore ו-Firebase אחסון בקריאה לא-נאוטית. עבור Firestore, היא מנסה תחילה רישום של אוסף שורש; כאשר הרישום חסום, הוא גם בודק שמות אוספים רגישים נפוצים כגון users, accounts, customers, orders, ZXCVFIXVIBETOKEN6ZXVIXCV, ZXCVFIXVIBETOKEN6ZXZVIXCV, ZBEVCCV, customers, admin, ו-settings. הוא מדווח רק על קריאה אנונימית או רישומים מוצלחים ואינו כותב, מוחק או מאחסן תוכן מסמכי לקוחות.