// docs / baas security / umbrella scanner
סורק תצורות שגויות של BaaS: מצא נתיבי נתונים ציבוריים לפני שהמשתמשים יעשו זאת
ספקי Backend-as-a-Service — Supabase, Firebase, Clerk, Auth0, Appwrite, Convex — כולם נכשלים באבטחה באותה צורה: הפלטפורמה שולחת ברירות מחדל הגיוניות, המפתח (או כלי הקוד מבוסס-AI) מושיט יד לקיצור דרך, ונפתח נתיב ציבורי בין תוקף לא-מאומת לנתוני לקוחות. סורק תצורות שגויות של BaaS הוא הכלי היחיד שבוחן את הנתיב הזה מבחוץ בדרך שתוקף היה. המאמר הזה ממפה את חמש מחלקות התצורה השגויה החוזרות, מסביר איך סריקת ה-BaaS המקיפה של FixVibe עובדת, משווה את ארבעת הספקים העיקריים, ומנגיד את הסורק המודע-ל-BaaS מול כלי DAST כלליים.
מדוע לתצורות שגויות של BaaS יש צורה חוזרת
כל פלטפורמת BaaS עוקבת אחר אותו אדריכלות: backend מנוהל עם SDK לקוח דק שמדבר איתו מהדפדפן. הלקוח מול-הדפדפן צריך איזשהו אישור — מפתח anon, מפתח publishable, מזהה פרויקט Firebase — כדי לזהות את עצמו בפני ה-backend. האישור הזה ציבורי בכוונה; בטיחות האדריכלות נחה על בקרות גישה ברמת-פלטפורמה (RLS, חוקים, רשימות היתר) שעושות את עבודתן.
כלי קוד מבוססי-AI בונים על האדריכלות הזו מבלי להפנים את שכבת בקרות-הפלטפורמה. הם מחברים את ה-SDK של הלקוח נכון, מקבלים את חוקי ברירת המחדל המתירניים של הפלטפורמה (שקיימים לידידותיות-מדריך), ושולחים לייצור. הצורה החוזרת היא: אישור ציבורי + חוק ברירת מחדל מתירני + override חסר = חשיפת נתונים. חמש מחלקות התצורה השגויה למטה הן כולן וריאציות של הצורה הזו.
חמש מחלקות התצורה השגויה החוזרות
אלה מופיעות על פני כל ספק BaaS. סריקה מלאה מכסה את כל החמש מול כל ספק בשימוש:
מחלקה 1: מפתח שגוי בחבילת הדפדפן
הדפדפן שולח את המפתח הסודי/admin (Supabase service_role, מפתח פרטי של Firebase Admin SDK, Clerk sk_*, סוד לקוח של Auth0) במקום את המקבילה הציבורית/anon. הדפדפן הופך ללקוח admin בלתי-מוגבל. מכוסה על-ידי בדיקת bundle-secrets של FixVibe.
מחלקה 2: שכבת בקרת-גישה מושבתת או מתירנית
RLS כבוי, חוקי Firebase הם if true, רשימת ה-callback של Auth0 היא wildcarded. האישור בדפדפן הוא הנכון — אבל הגבול ברמת-הפלטפורמה שהיה אמור להגביל אותו לא עושה את עבודתו.
מחלקה 3: קריאות אנונימיות של משאבים רגישים
אוספי Firestore הניתנים לקריאה אנונימית, דליי אחסון Supabase הניתנים לרישום אנונימי, API ניהול של Auth0 הנגיש אנונימית. הסריקה שואלת: "ללא אישורים, מה אני יכול לקרוא?"
מחלקה 4: ארטיפקטים של מצב-בדיקה בייצור
מפתחות בדיקה (pk_test_*, sb_test_*) ב-deploy של ייצור; אפליקציות Firebase במצב-dev נגישות מהדומיין החי; אפליקציות Auth0 של דייר-בדיקה עם הגדרות חלשות יותר מהייצור. הסריקה משווה את מפתחות ה-runtime מול קידומות הייצור הצפויות.
מחלקה 5: אימות חתימת webhook חסר
Webhooks של Clerk, Stripe, ו-Supabase כולם חותמים על ה-payloads שלהם. handler שלא מאמת את החתימה הוא פרימיטיב לכתיבה למסד נתונים עבור כל תוקף שמנחש את ה-URL. מזוהה דרך צורת תגובה — בקשה לא-חתומה שמקבלת 200 אומרת שאימות מדולג.
איך סריקת ה-BaaS המקיפה של FixVibe עובדת
שלב ה-BaaS של FixVibe רץ בשלושה שלבים, כל אחד מפיק ממצאים נפרדים:
- <strong>Stage 1 — provider fingerprinting.</strong> The scanner crawls the deployed app, parses every JavaScript chunk, and identifies which BaaS providers the app uses. Each provider has a distinctive runtime signature: Supabase uses <code>*.supabase.co</code>; Firebase uses <code>firebase.initializeApp({ projectId: ... })</code>; Clerk uses <code>pk_*</code> keys with a known prefix; Auth0 uses <code>clientId</code> and <code>domain</code>. The scanner records which providers are present and extracts the project identifiers.
- שלב 2 — בחינות ספציפיות-לספק. עבור כל ספק שזוהה, הסורק מריץ את הבדיקה הספציפית-לספק:
baas.supabase-rlsבוחן PostgREST;baas.firebase-rulesבוחן Firestore + RTDB + אחסון;baas.clerk-auth0מאמת את הקידומת של מפתחות מצורפים; בדיקת ה-bundle-secrets מאמתת שאישורים בדרגת service לא דלפו. כל בחינה רצה עצמאית — ממצא Supabase לא חוסם את סריקת ה-Firebase. - שלב 3 — מתאם חוצה-ספקים. הסורק עושה הצלבה של ממצאים. מפתח Supabase service-role שדלף לצד RLS חסר חמור יותר מכל אחד מהממצאים לבד — הדוח מציף זאת. ריבוי ספקי זהויות (Clerk + Auth0 + אימות מותאם) באותה אפליקציה הוא ממצא מבני שמסומן לסקירה.
כל בחינה היא פסיבית: לכל היותר קריאה אנונימית אחת לכל משאב, עם צורת תגובה רשומה אבל תוכן שורות שלעולם לא מדפדף או מאוחסן. בחינות כתיבה ושינוי מוגבלות מאחורי אימות בעלות על דומיין — הן לעולם לא רצות מול מטרות לא-מאומתות.
מה הסורק מוצא לכל ספק
לכל ספק BaaS יש משטח שונה ואסטרטגיית סריקה שונה. הנה מה שמכוסה:
- Supabase: RLS חסר על טבלאות, דליי אחסון הניתנים לרישום אנונימי, JWT
service_roleשדלף או מפתחsb_secret_*בחבילה, סכמות חשופות דרך רישום OpenAPI אנונימי. ראה סורק Supabase RLS ו-רשימת בדיקה לאחסון. - Firebase: חוקי
if trueעל Firestore, Realtime Database, ו-Cloud Storage; דליי אחסון הניתנים לרישום אנונימי; אכיפת App Check חסרה. ראה סורק חוקי Firebase ו-הסבר חוק if-true. - Clerk: מפתחות סוד
sk_*מצורפים,pk_test_*בייצור, אימות חתימת webhook חסר, מקורות מותרים עם wildcard. ראה רשימת בדיקה ל-Clerk. - Auth0: סודות לקוח מצורפים, grant של Implicit מופעל, callback / logout URLs עם wildcard, PKCE חסר ב-SPAs. ראה רשימת בדיקה ל-Auth0.
איך סורק BaaS משתווה לכלי DAST ו-SAST כלליים
סורק מודע-ל-BaaS עושה עבודה ספציפית שכלים אחרים לא עושים. ההשוואה:
| היבט | FixVibe (DAST מודע-ל-BaaS) | DAST כללי (Burp / ZAP) | SAST / SCA (Snyk / Semgrep) |
|---|---|---|---|
| כיסוי BaaS | בדיקות מקוריות עבור Supabase, Firebase, Clerk, Auth0, Appwrite | זחילת web גנרית; אין בחינות ספציפיות-לספק | ניתוח סטטי של המאגר בלבד; אין אימות ייצור |
| זמן הגדרה | URL → הרץ → תוצאות תוך 60 שניות | שעות: הגדר spider, אימות, היקף | יום: שלב ב-CI של המאגר |
| מה הוא מוכיח | חשיפת runtime של ייצור עם ראיות ברמת HTTP | פגיעויות אפליקציות web (XSS, SQLi); BaaS דרך תצורה ידנית | דפוסי קוד שעשויים או לא להיפרס |
| בדיקת חבילת JavaScript | מפענח JWTs, תואם קידומות סוד, צועד chunks | מוגבל — grep מבוסס-מחרוזות בלבד | כן, אבל רק בצד-מאגר, לא פרוס |
| סריקה רציפה | חודשית / ב-deploy דרך API + MCP | ידני; הגדר לוח זמנים בעצמך | לכל commit (טוב לקוד, עיוור ל-runtime) |
| מחיר לסולו / צוות קטן | שכבת חינם; בתשלום מ-$19/חודש | Burp Pro $499/שנה; ZAP חינם אך עם חיוביים שגויים גבוהים | Snyk חינם / Semgrep חינם; שכבות בתשלום מ-$25/מפתח |
היקף הוגן: מה הסורק הזה לא מחליף
סורק DAST מודע-ל-BaaS הוא כלי ממוקד, לא תוכנית אבטחה מלאה. הוא לא:
- מחליף SAST או SCA. ניתוח סטטי מוצא CVEs של תלויות (Snyk, Semgrep) ופגיעויות ברמת-קוד (SonarQube) שסורק DAST לא יכול. הרץ את שניהם.
- מחליף בדיקות חדירה ידניות. פנטסטר אנושי מוצא פגמי לוגיקה עסקית, מקרי קצה של הרשאה, ופגיעויות משורשרות שאף סורק לא יכול. שכור פנטסטר לפני השקה גדולה או audit תאימות.
- מבצע audit לקוד או למאגר שלך עבור סודות בהיסטוריית git. בדיקת ה-bundle-secrets מכסה את מה שפרוס כרגע, לא את מה שעבר commit היסטורי. השתמש ב-
git-secretsאו ב-gitleaksלהיגיינת מאגר. - מכסה שירותי backend שאינם BaaS. אם האפליקציה שלך משתמשת ב-backend מותאם (Express, Rails, Django, FastAPI), FixVibe סורק את משטח ה-HTTP שלו אבל לא בוחן את מסד הנתונים או התשתית מאחוריו. זה טריטוריית DAST + SAST כללית.
שאלות נפוצות
האם הסריקה המקיפה עובדת אם האפליקציה שלי משתמשת בשני ספקי BaaS (למשל, Supabase + Clerk)?
כן — fingerprinting של ספק ובחינות לכל ספק הן עצמאיות. הסורק מזהה את שניהם, מריץ את שתי חבילות הבדיקה, ומדווח על מתאמים חוצי-ספקים (למשל, תבנית JWT של Supabase מ-Clerk ששולחת email כ-claim לצד RLS חסר).
במה זה שונה מהרצת Burp Suite Pro מול האפליקציה שלי?
Burp הוא שולחן עבודה כללי של DAST. מחוץ-לקופסה, Burp לא יודע מה זה PostgREST, Firestore, או נתיב ה-callback של Auth0 — אתה צריך להגדיר היקף ידנית, לכתוב הרחבות, ולפרש תגובות. FixVibe נשלח עם בחינות BaaS מובנות ועיצוב ראיות בצורת-BaaS. Burp מנצח בכיסוי כללי של אפליקציות web (XSS, SQLi, לוגיקה עסקית); FixVibe מנצח בממצאים ספציפיים-ל-BaaS.
מה לגבי App Check (Firebase) או attestation (Apple / Google)?
App Check גורם לסריקות חיצוניות הזדמנותיות להחזיר 403 על כל בחינה — התוצאה הנכונה עבור בוט זדוני. סריקת FixVibe מלקוח לא-מאומת מתנהגת באותה דרך. אם יש לך App Check מופעל ו-FixVibe עדיין מדווח על ממצאים, זה אומר שהחוקים שלך פתוחים גם ללקוחות מאומתים, שזה הסיכון האמיתי. App Check + חוקים נכונים הוא דפוס הגנה-לעומק.
האם הסורק יכול לאמת את התיקון שלי?
כן — הרץ מחדש אחרי החלת התיקון. מזהי הבדיקה (למשל, baas.supabase-rls) יציבים על פני ריצות, אז אתה יכול לבצע diff של ממצאים: ממצא שהיה open בריצה 1 ונעדר בריצה 2 הוא הוכחה שהתיקון נחת.
צעדים הבאים
הרץ סריקת FixVibe חינמית מול URL הייצור שלך — בדיקות שלב ה-BaaS נשלחות בכל תוכנית, כולל השכבה החינמית. לצלילות עומק ספציפיות-לספק, המאמרים האישיים בסעיף הזה מכסים כל ספק בפירוט: Supabase RLS, חשיפת מפתח service של Supabase, אחסון Supabase, חוקי Firebase, Firebase if-true, Clerk, ו-Auth0.
