רשימה של יותר מ-100 אלף לקוחות של שירות חניה אמריקאי, ובה מספרי טלפון, 78 אלף מספרי רישוי ותיעוד ביקורים, הייתה פתוחה לקריאה לכל מי שידע לבקש אותה. לא הייתה שם פריצה ולא נוזקה. מסד הנתונים פשוט ענה על השאלה. חברת המחקר UpGuard, שפרסמה את הממצאים ב-25 בספטמבר, מדווחת שמצאה 16,326 מסדי נתונים במצב הזה מתוך כ-300 אלף אתרים שבדקה.

מה קרה

הרבה אפליקציות ואתרים קטנים כבר לא בונים שרת משלהם. במקום זה הם שוכרים מסד נתונים מוכן בענן, והאפליקציה שרצה בטלפון או בדפדפן פונה אליו ישירות עם מפתח גישה שממילא גלוי לכל מי שפותח את קוד העמוד. אחת הפלטפורמות הפופולריות לזה נקראת Supabase.

השיטה עובדת כל עוד מישהו הגדיר מי רשאי לקרוא מה. בפלטפורמה יש מנגנון שמגביל כל משתמש לשורות שלו בלבד בכל טבלה, ובלעדיו אותו מפתח גלוי לא מחזיר רק את הפרופיל שלכם, הוא מחזיר את הטבלה כולה. קוראים לו Row Level Security.

וכאן נכנס לתמונה הפרט שמסביר את הסדר גודל. לפי UpGuard, טבלה שנוצרת דרך ממשק הניהול של Supabase מקבלת את המנגנון דלוק כברירת מחדל, אבל טבלה שנוצרת ישירות בפקודות SQL לא. יותר מ-60% מהמסדים החדשים בפלטפורמה נבנים היום בעזרת כלי פיתוח מבוססי AI, שכותבים בדיוק את סוג הפקודות האלה, וכך נוצר פער בין שתי דרכים לעשות את אותו דבר. את ההסבר הזה מציעים החוקרים עצמם, והוא הערכה ולא ממצא נמדד.

ביותר ממחצית מהמסדים החשופים היה מידע מזהה על אנשים אמיתיים. בחלק קטן יותר נמצאו גם סיסמאות ו-token-ים של התחברות, ובמספר מצומצם מאוד של מקרים גם משהו שנראה כמו פרטי כרטיס אשראי. שירות הגירה קנדי החזיק כ-5,000 רשומות משתמשים, ובתוכן 884 סיסמאות שנשמרו בטקסט גלוי. שירות קודי אימות בפיליפינים חשף יותר מ-100 אלף הודעות SMS. קונסוליה של מדינה אפריקאית השאירה פתוחות 25 אלף רשומות ובהן כתובות מגורים.

למה זה חשוב לכם

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

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

מה עושים?

אל תשתמשו באותה סיסמה באפליקציה קטנה ובחשבון הדואר או הבנק. זה בדיוק התרחיש שבו סיסמה ששירות אחד שמר בטקסט גלוי פותחת חשבון אחר לגמרי.

הפעילו אימות דו-שלבי בחשבונות החשובים. גם אם הסיסמה דלפה, בלי הקוד השני היא שווה הרבה פחות.

לפני שאתם ממלאים טופס בשירות קטן, שאלו אם הוא באמת צריך את מספר תעודת הזהות או את פרטי האשראי. שדה שלא מילאתם לא יכול לדלוף.

ואם אתם בצד שבונה: בממשק הניהול של Supabase יש בדיקה שמסמנת טבלאות פתוחות לקריאה. שווה להריץ אותה היום, גם אם אתם בטוחים שהכול מוגדר.

מי שבנה את האפליקציה בחר את ההגדרה. מי שנרשם אליה משלם על הטעות.