טענות הניתנות לאימות.
זהו אינו עמוד שיווקי בנוסח 'אנחנו מאובטחים' אלא אוסף של טענות הניתנות לאימות (SR-N), שכל אחת מהן ניתן לערער עליה בתוכנית באג באונטי שלנו תמורת תגמול.
גישה לשרת שלכם
SR-1סיסמת ה-root משמשת פעם אחת ואינה מאוחסנת בצד שלנו.מאומת+
הסיסמה נחוצה רק כדי לפתוח את חיבור ה-SSH הראשון ולהתקין משתמש שירות. היא מועברת כאימות SSH עבור החיבור שלנו — לא כארגומנט של סקריפט או כמשתנה סביבה. במסד הנתונים שלנו אין שדה עבורה; היא אינה נכנסת לסביבות הרצת הסקריפטים ואינה נכתבת ליומנים (שגיאות חיבור מכילות רק את הכתובת והפורט, לעולם לא את הסיסמה). בזיכרון היא נמחקת (במאמץ מיטבי) לאחר השימוש — זו הגנה לעומק, לא ערובה: ייתכן ש-Go ישמור עותקים של הערך בערימה (heap) עד לאיסוף האשפה.
הסתייגות כנה: זו נותרת סיסמת ה-root על השרת שלכם. לאחר ההתקנה אנחנו משביתים כניסה באמצעות סיסמה וכניסת root דרך SSH, אך איננו משנים את הסיסמה עצמה — שנו אותה בעצמכם אם תרצו. 'איננו מאחסנים אותה' — נכון; 'היא חדלה להיות סוד' — לא.
SR-2לאחר ההתקנה, כניסה באמצעות סיסמה וכניסת root דרך SSH מושבתות.מאומת+
PasswordAuthentication no, PermitRootLogin no, SSH הועבר לפורט לא-סטנדרטי (12011 כברירת מחדל), fail2ban מופעל (חסימה של שעה לאחר 5 כישלונות), כניסה באמצעות מפתח בלבד. המפתח הציבורי עובר אימות קפדני לפני השימוש: תווי מעבר-שורה (הגנה מפני הכנסת מפתחות נוספים ל-authorized_keys) ומפתחות שגויים תחבירית — נדחים.
הגנה מפני נעילה עצמית: פורט 22 אינו נסגר עד שהקרנל מאשר (דרך ss) שהפורט החדש של SSH אכן מאזין; התצורה נבדקת באמצעות sshd -t וכלל ה-sudo באמצעות visudo -cf, ושניהם מוחזרים לאחור במקרה של שגיאה.
SR-3מפתח הניהול מאוחסן רק בצורה מוצפנת.מאומת+
הלוח עובד לא עם הסיסמה שלכם אלא עם מפתח נפרד (ed25519) שהוא מייצר בעצמו. החלק הפרטי שמור במסד הנתונים מוצפן ב-AES-256-GCM. מפתח ההצפנה (KEK) מאוחסן בנפרד ממסד הנתונים — במשתנה סביבה בשרת — ובסביבת הייצור הוא הכרחי (אין ברירת מחדל לא-מאובטחת: ללא KEK תת-מערכת ההצפנה פשוט לא תעלה). אותה הצפנה מגנה על הסודות הכבדים במסד הנתונים — סיסמת/אסימון/JWT המנהל של Marzban, מפתחות Reality, מפתחות ספק התשלומים, מטמון פרטי הזיהוי של הפרוקסי, תצורת הגיבוי.
ההצפנה לא רק מסתירה אלא גם מאמתת את הנתונים (תג האימות של GCM): שינוי זדוני של שדה מוצפן מזוהה בעת הפענוח ונדחה. כל שדה מוצפן עם nonce אקראי חדש; ערך ה-KEK לעולם אינו מגיע ליומנים — רק המזהה הקצר שלו.
לגבי אסימוני יכולת (capability tokens): אסימון המנוי /sub הוא סוד נושא (bearer). לצורך חיפוש אנחנו שומרים רק את ה-SHA-256 שלו, בעוד שהעותק הנחוץ להצגה חוזרת של קישור שכבר הונפק נשמר כטקסט מוצפן ב-AES-GCM. רשומות ישנות בטקסט גלוי עוברות מיגרציה לפורמט החדש, במצב fail-closed, לפני עליית שרת ה-HTTP. מזהה כתובת ה-URL של ה-webhook של התשלום מאוחסן בטקסט גלוי אך אינו מאמת בעצמו אירוע: האותנטיות מאומתת בנפרד באמצעות חתימת HMAC.
הסודות של מפתחות Partner API נשמרים באופן בלתי הפיך: המפתח המלא מוצג פעם אחת בלבד בעת ההנפקה, ובמסד הנתונים נשאר רק ה-SHA-256 של החלק הסודי שלו. גם אסימוני ה-access וה-refresh של הבינה המלאכותית המחוברת אינם נשמרים בטקסט גלוי; החיבור מוגבל לרמת הגישה שנבחרה, ובעל החשבון יכול לבטל אותו.
SR-4המפתח הפרטי אינו נכלל בתגובות רגילות ונמסר רק בייצוא מפורש.מאומת+
המפתח מפוענח רק בשרת, בזיכרון; ממשקי API רגילים לעולם אינם מחזירים אותו. הדרך היחידה להשיג אותו היא פונקציית ייצוא מכוונת ('קחו את המפתח שלכם'), המוגנת בהתחברות ובנוסף קוד חד-פעמי באימייל (הקוד נשמר רק כגיבוב HMAC, מושווה בזמן קבוע, TTL של 10 דקות, 5 ניסיונות). כך שאת המפתח ניתן לאחזר בכוונה, אך לא 'להדליף' דרך בקשה רגילה.
SR-5כאשר שרת נמחק, המפתח מנוקה מהרשומה שלו באופן סינכרוני.מאומת+
לפני שמצב השרת משתנה ולפני כל פעולת רשת ברקע, השדות המכילים את מפתח הניהול מאופסים באופן סינכרוני. אם מסד הנתונים אינו מאשר את הניקוי, הפעולה מחזירה שגיאה וניתן לנסות אותה שוב. המחיקה נותרת 'רכה': השורה והנתונים השירותיים הלא-סודיים נשמרים. אין פירוש הדבר מחיקה פיזית של גיבויים שכבר נוצרו — מחזור החיים שלהם נשלט על ידי מדיניות שמירת הגיבויים.
SR-16ממשקי ה-API של השותפים שנבדקו מגבילים את הגישה לבעלים של המשאב.מאומת+
במסלולי הלוח ה-partner_id נגזר מהסשן החתום, וב-Partner API — ממפתח API שאומת או מחיבור OAuth של בינה מלאכותית. מזהה הבעלים אינו נלקח מהנתיב, מפרמטרי ה-query או מגוף הבקשה. מפתחות API מוגבלים בנוסף לפי scope, תקופת תוקף ומסלול המנוי; עבור בינה מלאכותית מחוברת, סט ההרשאות מחושב בכל בקשה מתוך הרמה שבחר בעל החשבון.
לפני החזרה או שינוי של דבר, המערכת בודקת מחדש שהשרת, האשכול, ה-inbound, המסלול, משתמש ה-VPN או התשלום שייכים לחשבון זה. שאילתות מסד הנתונים מוגבלות לפי partner_id, ומפתחות ייחודיים וזרים מורכבים דוחים קישורים חוצי-שותפים לא-תקינים. מטריצת ההרשאות בבדיקות דורשת תרחיש IDOR מפורש לכל נקודת קצה עם מזהה משאב.
הסתייגות כנה: הדבר אומת באמצעות ביקורת קוד לאורך נתיב הבקשה, לא באמצעות מבחן חדירה פומבי — כך ש-SR-16, כמו השאר, פתוח להפרכה בתוכנית באג באונטי.
בכנות על הגישה של הלוח — היא גישת מנהל מלאה, לא 'מוגבלת'.הערה כנה+
כדי להגדיר הכול באופן אוטומטי (התקנת Xray+Reality, החלת תצורה, קריאת מדדים) הלוח מחזיק בגישה ניהולית מלאה על השרת (שקולת-root, דרך משתמש שירות עם sudo ללא סיסמה). הדבר הכרחי לניהול, ואיננו מכנים זאת 'מוגבלת'.
מה שמפחית את הסיכון: סודות מועברים לשרת רק דרך ה-stdin של התהליך (לא כארגומנטים של פקודה — הם אינם נראים ברשימת התהליכים); לאחר ההתקנה הראשונית, כל חיבור ניהול מאמת את מפתח המארח המוצמד (pinned host key) של השרת — החלפת שרת 'באמצע' נדחית. מה שבשליטתכם: הגישה נשענת על מפתח שתוכלו לבטל בכל עת — על ידי מחיקת השרת (המפתח מאופס) או פשוט מחיקת ה-VPS אצל ספק האירוח שלכם (ואז הכול נעלם).
הנתונים והפרטיות שלכם
SR-6משתמשי ה-VPN נמצאים על השרת שלכם; אנחנו מחזיקים במינימום של מטא-נתונים שירותיים.מאומת+
חשבונות ה-VPN עצמם (VLESS/Reality) נוצרים ונמצאים ב-Marzban על שרת המאסטר שלכם. באופן מרכזי אנחנו שומרים רק את מה שנדרש כדי להנפיק קישור מנוי: אסימון מנוי אקראי ותמונת מצב מוצפנת של פרטי הזיהוי של הפרוקסי (מטמון; מקור האמת הוא ה-Marzban שלכם). אין לנו היסטוריית תעבורה, IP, או ביקורי משתמשים.
כתובת הדוא"ל של משתמש קצה אינה נשמרת אצלנו: שם החשבון שלו נגזר באופן בלתי הפיך ואינו מכיל כתובת. את הדוא"ל עם קוד ההתחברות אנחנו שולחים, ולכן הכתובת עוברת בתור השליחה שלנו ונמחקת ממנו מיד לאחר השליחה — לזיהוי משתמש חוזר נשארת רק טביעה בלתי הפיכה, ולא ניתן לשחזר ממנה את הכתובת. את המקרה היחיד שבו כתובת בכל זאת נשארת אנחנו אומרים במפורש: בתשלום היא מגיעה ב-webhook התשלום ונרשמת ביומן התשלומים עם תקופת שמירה מוגבלת.
נתוני שירות אלה אנו שומרים רק לפרק הזמן הנדרש ומנקים אותם אוטומטית: האימייל מוסר מתור השליחה מיד לאחר השליחה, תוכן אירוע תשלום לאחר עיבודו, ואירועים הממתינים לניסיון חוזר עד לחלון של 90 יום. אתם יכולים למחוק בעצמכם את החשבון יחד עם כל הנתונים שלו, בדף «הגדרות מתקדמות», ולאשר את המחיקה בקוד שיישלח לאימייל שלכם (לפרטים ראו סיכון 7). אנו חושפים זאת בגלוי במקום להסתיר זאת מאחורי ניסוחים מעורפלים.
SR-7איננו אוספים יומנים של התעבורה או הביקורים שלכם, והשרתים אינם מנהלים יומן ביקורים.מאומת+
פלטפורמת CreateYourVPN אינה מקבלת או מאחסנת מידע על אילו אתרים אתם או המשתמשים שלכם מבקרים בהם. סכמת קליטת המדדים סגורה: פיזית אין בה שדות עבור כתובות IP, דומיינים, או ביקורים — רק צברים (מספר מחוברים ייחודיים, סך בתים, CPU/RAM/עומס). כל צומת מאמת את עצמו באמצעות אסימון HMAC הקשור למזהה שלו עצמו ויכול לכתוב מדדים רק עבור עצמו. המאזן שעל הצומת (HAProxy) עובד כנתב TCP לפי SNI ואינו מפענח תעבורה. על השרת עצמו, יומני המערכת נשמרים ללא יותר מכשעה בקירוב ואינם מועברים ל-syslog.
מעבר לרמת הפלטפורמה, גם השרתים אינם מנהלים יומן ביקורים: רישום הגישה של Xray מושבת בכפייה בכל דחיפת תצורה (הפלטפורמה מגדירה את log.access ל-none), כך שפרוקסי הקצה אינו מתעד לאילו כתובות המשתמשים מתחברים. הדבר נאכף בקוד ומופץ לכל צי השרתים.
SR-8ניתוח נתוני הרשת הוא Google Analytics; אין עוקבים אחרים.מאומת+
כדי להבין כיצד נעשה שימוש באתר ובלוח אנחנו משתמשים ב-Google Analytics (באנר העוגיות מזהיר על איסוף עוגיות וסטטיסטיקה; הפרטים במדיניות הפרטיות). בעמודי ההסכמה של OAuth ניתוח הנתונים אינו נטען בשום מצב: כתובת ה-URL מכילה מזהה קצר-מועד של בקשת חיבור בינה מלאכותית, שאסור להעביר לצד שלישי. אין עוקבים אחרים של צד שלישי: אין Sentry, PostHog, Mixpanel, או פיקסלים פרסומיים. ל-backend אין טלמטריה של צד שלישי, וחנויות משתמשי הקצה אינן מכוסות בניתוח נתונים.
הסתייגות: GA מקבל את כתובת ה-IP שלכם (בצד של Google) ואת כתובות עמודי הלוח שנצפו; כתובות ה-URL של הלוח מכילות רק מזהה אשכול, לא אימייל.
SR-9התשלומים חיצוניים — איננו מקבלים את מספר הכרטיס המלא.מאומת+
התשלום וכל נתוני הכרטיס מטופלים בצד של הספק המחובר (lava.top). אלינו מגיע רק אירוע webhook מאומת: האותנטיות שלו נקבעת בשיטה שהספק הספציפי תומך בה, לפני כל שינוי ביתרה או בגישה. איננו מקבלים את מספר הכרטיס המלא (PAN) או CVV. משלוח חוזר של אותו אירוע אינו גורם להענקה כפולה: האירועים עוברים ניכוי כפילויות.
הסתייגות: הספק עשוי לכלול מטא-נתונים של הכרטיס (המותג ו-4 הספרות האחרונות) ואת שם ואימייל המשלם בגוף ה-webhook. הגוף המקורי נחוץ ל-worker עד להשלמת העיבוד; לאחר עיבוד מוצלח הוא נמחק יחד עם רמז האימייל. אירועים הממתינים לניסיון חוזר או לבדיקה ידנית שומרים את הגוף המקורי רק עד תום חלון השמירה (90 יום ללא פעילות), ולאחר מכן מטא-נתוני הכרטיס ואימייל המשלם נמחקים אוטומטית. 'אין מספר כרטיס מלא' — נכון, אך זו תכונה של הספקים (איננו מסננים את הגוף בעצמנו); 'איננו רואים דבר על הכרטיס כלל' — לא.
מה אנחנו שומרים עליכם (השותף), בכנות.הערה כנה+
עבור החשבון נשמרים אימייל, זמן ההתחברות האחרון, מצב הממשק וההגדרות; עבור חיוב — יתרה ו-Telegram, אם צוין לצורך טעינות. לצורך הגנה על החשבון, סשן פעיל מכיל את זמן היצירה ואת זמן הפעילות האחרונה, כתובת IP ו-user-agent. היסטוריית ניסיונות הכניסה המוצלחים והכושלים, עם אותם מאפיינים טכניים, נשמרת 90 יום.
אין היסטוריה כללית של קליקים בלוח. בנפרד קיימים יומנים ייעודיים: בקשות Partner API — לכל היותר 500 הרשומות האחרונות וכ-25 שעות, אירועי תשתית ותוצאות אבחון — לכל היותר 7 ימים, פעולות הבינה המלאכותית המחוברת — כל עוד החשבון קיים. לפני רישום פעולות הבינה המלאכותית נמחקים סיסמאות, אסימונים, מפתחות וקישורי מנוי, וכתובות האימייל של המשתמשים מוסתרות חלקית.
הקשחת השרת
SR-10חומת האש חוסמת הכול מלבד מה שנדרש.מאומת+
חומת האש חוסמת תעבורה נכנסת כברירת מחדל. פתוח כלפי חוץ: 443 (VPN, Xray+Reality), SSH על פורט לא-סטנדרטי (12011 כברירת מחדל), ו — בשרת המאסטר — הפורט של לוח הניהול של Marzban, רק עבור כתובות IP של מישור הבקרה. פורט 80 נפתח בנפרד רק במצב Let's Encrypt עבור HTTP-01. פורט 22 נסגר לאחר העברת SSH.
פורטי הניהול של הצומת פתוחים רק לכתובת ה-IP של שרת המאסטר, לא כלפי חוץ (כישלון של קישור זה מבטל את ההתקנה). אם חומת האש אינה נעשית פעילה, ההתקנה נכשלת. ICMP echo מוגבל רק עבור IPv4; איננו מבטיחים שהשרת 'בלתי נראה', ו-ICMP של IPv6 נשמר כדי ש-IPv6 יעבוד כראוי.
SR-11עדכוני אבטחה אוטומטיים.מאומת+
עדכונים ללא-השגחה (unattended upgrades) מתקינים עדכוני חבילות אבטחה באופן אוטומטי. הסתייגות: אתחול אוטומטי מושבת בכוונה (כדי שקרנל לא-מאומת לא יאתחל מעצמו) — משמע תיקונים המחייבים אתחול (קרנל, לעיתים OpenSSH) חלים רק לאחר אתחול ידני או מתוזמן. 'טלאים אוטומטיים' נכון עבור מרחב המשתמש (userland), לא עבור מה שמחייב אתחול.
בכנות על 'בלתי-נראוּת' — איננו טוענים לה.הערה כנה+
איננו טוענים שהשרת 'בלתי נראה' או 'לא ניתן לסריקה'. פורט 443 פתוח ומשיב לחיבור TCP כמו כל שרת רשת. התכונה 'בחיבור שגוי הוא נראה כאתר רגיל ולא-קשור' מסופקת על ידי פרוטוקול Reality בתוך Xray — רכיב נפרד שאיננו הופכים למוחלט.
הפלטפורמה (לוח הבקרה)
SR-12התחברות לחשבון CreateYourVPN שלכם ללא סיסמה.מאומת+
התחברות השותף היא באמצעות קוד חד-פעמי בן 6 ספרות הנשלח לאימייל. אין סיסמת חשבון. הדבר אינו חל על פרטי זיהוי פנימיים של רכיבים מנוהלים, כגון סיסמת המנהל של השרת שנוצרה. הקודים נוצרים על ידי מחולל קריפטוגרפי; רק גיבוב ה-HMAC שלהם נשמר, וההשוואה מתבצעת בזמן קבוע. בהצלחה הקוד נמחק מיד, ולאחר 5 ניסיונות שגויים הוא מנוטרל מוקדם. מגבלת קצב ההנפקה נספרת גם לפי הכתובת המלאה וגם לפי תיבת הדואר הפיזית: החלפת IP, נקודות ב-Gmail ותגיות plus אינן מעניקות מגבלה נפרדת.
SR-13ניתן לבדוק סשנים ולבטל אותם מיד.מאומת+
אסימון הסשן שמור בעוגייה מסוג HttpOnly ו-Secure (JS אינו יכול לקרוא אותה), ומאומת ב-backend (לא רק בקצה). פסק-זמן של חוסר-פעילות והתנתקות אוטומטית בעת חוסר-פעילות ממומשים בצד הלקוח, לא בשרת. האסימון חתום ב-HS256; באימות אנחנו דוחים בקפדנות כל אלגוריתם אחר (כולל 'none') — התקפת החלפת-האלגוריתם הקלאסית אינה עוברת. אסימון החנות ואסימון לוח השותף מופרדים לפי קהל היעד (audience): אסימון של משתמש קצה טכנית אינו יכול להגיע ל-API של השותף (ולהפך). שותף שנמחק נדחה גם עם אסימון תקף.
לכל סשן של שותף יש מזהה יציב בצד השרת, שנשמר בעת הארכת האסימון. יציאה רגילה מבטלת את כל הסשן הנוכחי, ולא רק הנפקה אחת של האסימון. בקטע 'הפעלות החשבון' מוצגים המכשיר, כתובת ה-IP, זמן הכניסה והפעילות האחרונה; ניתן לסיים כל סשן בנפרד. הפעולה 'התנתקות מכל המכשירים' מסיימת את כל הסשנים ומנתקת את שירותי הבינה המלאכותית המחוברים.
היסטוריית הכניסות נשמרת 90 יום ומציגה כניסות מוצלחות, קודים שגויים וקודים שפג תוקפם, וכן חריגה ממספר הניסיונות. כאשר יש סימנים לשימוש חוזר בהנפקה שכבר הוחלפה, המערכת מתייחסת לסשן כמועתק, מסיימת את כל הסשנים ואת חיבורי הבינה המלאכותית ושולחת הודעה לבעל החשבון.
SR-14אסימוני סשן וסודות פנימיים אינם נגישים ל-JavaScript בצד הלקוח.מאומת+
אין אסימוני סשן באחסון המקומי של הדפדפן, רק הגדרות ממשק. את האסימון בעוגיית HttpOnly מציבה שכבת השרת של Next.js; הדפדפן אינו מקבל את הכתובת הפנימית של ה-backend ופונה אליו דרך Server Actions. CORS אינו מאפשר למקורות (origin) אחרים לקרוא תגובות API עם נתונים מורשים.
קיימים חריגים מכוונים שבשליטת בעל החשבון עצמו: ייצוא מפתח ה-SSH הפרטי לאחר קוד מהאימייל (SR-4), ומפתח Partner API חדש שהסוד המלא שלו מוצג בדפדפן פעם אחת בעת היצירה. לאחר מכן לא ניתן לשחזר אותו ממסד הנתונים — שם נשאר רק גיבוב. דומיין ה-API הציבורי נגיש מהאינטרנט כמתוכנן, אך ללא סשן תקף, מפתח API או אסימון OAuth הוא אינו מחזיר נתונים מוגנים.
SR-15הדומיינים הציבוריים של הפלטפורמה משתמשים ב־HTTPS עם כותרות אבטחה מחמירות.מאומת+
המארחים הציבוריים של CreateYourVPN מוגשים ב-HTTPS עם HSTS (max-age שנתיים, includeSubDomains). כל ממשק ווב שאנחנו מארחים — אתר הפלטפורמה, פאנל השותפים וחנויות השותפים, בין אם בתת-הדומיינים שלנו ובין אם בדומיין הפרטי של השותף — וגם דומיין ה-API שולחים את אותה מערכת כותרות אבטחה: Content-Security-Policy (ב-API default-src 'none'; בממשקים היא אוסרת הטמעה ב-iframe ומקבעת את base-uri ואת form-action), X-Content-Type-Options: nosniff, X-Frame-Options ו-Referrer-Policy נוקשה (no-referrer ב-API; strict-origin-when-cross-origin בממשקים, ששולחים גם Permissions-Policy מגבילה).
זה פועל בייצור בכל המארחים הללו וניתן לבדיקה עצמאית — עם כל כלי לבדיקת כותרות HTTP או שירות כמו SSL Labs.
חיבור בינה מלאכותית הוא גישה נפרדת הניתנת לביטול, ולא העברה של סשן החשבון.הערה כנה+
אפליקציית הבינה המלאכותית מתחברת דרך OAuth ואינה מקבלת את העוגיות של הלוח שלכם. בעמוד ההסכמה אתם בוחרים אחת משלוש רמות: צפייה בלבד; צפייה והגדרה; מחיקה ומתן גישה. השרת בודק את ההרשאות בכל קריאה. מחיקות קריטיות דורשות קוד חד-פעמי נוסף מהאימייל, ואת החיבור כולו ניתן לבטל בקטע 'בינה מלאכותית מחוברת'.
כל קריאה לכלי נרשמת ביומן הגלוי לבעל החשבון, יחד עם התוצאה ועותק בטוח של הארגומנטים. סיסמאות, אסימונים, מפתחות API, מפתחות פרטיים וקישורי מנוי מוסרים לפני הרישום; כתובות האימייל של המשתמשים מוסתרות חלקית. עם זאת, אפליקציית הבינה המלאכותית שבחרתם נשארת שירות של צד שלישי: נתונים שהטלתם עליה ביודעין לקרוא או לשנות מעובדים גם לפי הכללים של הספק שלה.
בכנות על הסיכונים (מה שאיננו מבטיחים)
להלן המגבלות שנותרו בארכיטקטורה הנוכחית ושחשוב להביא בחשבון בעת הערכת האבטחה.
לוח הבקרה שומר את מפתחות הגישה המוצפנים לכלל מערך השרתים. זהו, מטבע הדברים, הרכיב הרגיש ביותר במערכת — ואנו מגנים עליו בהתאם.
מה מגן עליו: סודות כבדים נמצאים במסד הנתונים רק כטקסט מוצפן; מפתח ההצפנה (KEK) נשמר בנפרד ממסד הנתונים; מפתחות הניהול אינם נכללים בתגובות רגילות לדפדפן ומאופסים בעת מחיקת שרת. אסימוני המנוי מוגנים בשכבה נוספת — חיפוש לפי גיבוב (hash lookup) בתוספת AES-GCM — כך שאפילו העתק (dump) של מסד הנתונים ללא ה־KEK אינו מכיל קישורי /sub פעילים.
התקרה ההוגנת: ההצפנה מגנה באופן אמין מפני גניבת מסד הנתונים עצמו — גיבוי, עותק (replica) או dump. היא אינה מבטלת את הסיכון של פריצה מלאה למארח (host) של האפליקציה, שבו לתהליך יש גישה גם ל־KEK וגם למסד הנתונים. כרגע אין שימוש ב־KMS/HSM ייעודי; לכן המוקד המרכזי של ההגנה הוא בידוד המארח, עדכונים אוטומטיים ומשטח ציבורי מינימלי.
בהוספה הראשונה של VPS, הפלטפורמה עדיין אינה מכירה את ה־SSH host key שלו ואינה מקבלת את טביעת האצבע שלו בערוץ מהימן בלתי תלוי. לכן החיבור הראשון באמצעות סיסמת ה־root שהוזנה מתבסס על מודל trust on first use: תוקף פעיל הנמצא על נתיב הרשת באותו רגע יכול תיאורטית להתחזות לשרת. איננו מכנים סיכון זה אפסי.
לאחר התקנה מוצלחת טביעת האצבע מקובעת, וכל חיבור ניהול שבא אחריו חייב להתאים לה. הסיסמה אינה נשמרת בשום מקום ואינה משמשת עוד; הכניסה באמצעות סיסמה וכ־root מושבתת, והניהול עובר למפתח נפרד.
ניתן לסגור מגבלה זו לחלוטין רק באמצעות אימות בלתי תלוי של טביעת האצבע הראשונה, למשל דרך ה־API של ספק ה־VPS או באישור של בעל החשבון. אימות כזה אינו קיים כרגע, ולכן סעיף זה נותר סיכון פתוח.
זו תכונה של כל שרת מושכר, לא רק שלנו: תמונות מצב (snapshots), מצב חילוץ (rescue) וכדומה זמינים לספק, ואף תוכנה אינה מגינה מפני כך. מנגד, בחירת ספק אמין נמצאת בידיך, והשרת כולו שלך — אפשר להחליף ספק או למחוק את המכונה בכל רגע.
אף אחד אינו מבטיח הגנה מוחלטת — פגיעויות חדשות מופיעות בכל תוכנה. מה שאנחנו עושים: עדכוני אבטחה מותקנים אוטומטית, ותיקונים המחייבים הפעלה מחדש (הליבה, לעיתים OpenSSH) חלים לאחר הפעלה מחדש — ידנית או מתוזמנת (ראו SR-11).
הכתובת שלך נחוצה להתחברות ונשמרת כל עוד החשבון קיים. כתובות של משתמשי קצה אינן נשמרות כנתוני פרופיל; החריג הוא כתובת המשלם בתוך אירוע תשלום שלא עבר עיבוד או שממתין לבדיקה, כמתואר ב-SR-6 וב-SR-9. ביומני הפעולות של הבינה המלאכותית כתובות האימייל של המשתמשים נשמרות רק במצב מוסתר חלקית.
מכיוון שההתחברות מתבססת על קוד חד־פעמי באימייל, תיבת הדואר שלך היא הלכה למעשה המפתח לחשבון — כדאי להגן עליה היטב. גורם שני עדיין אינו קיים: סביר לשלב הזה, אך כדאי לדעת.
כתובת האימייל של משתמש הקצה מוסרת מהתור לאחר שליחת ההודעה, והתוכן הגולמי של אירוע תשלום מוצלח — לאחר עיבודו. יומן Partner API מוגבל ל-500 השורות האחרונות ולתקופה של כ-25 שעות; אירועי תשתית ותוצאות אבחון נשמרים לכל היותר 7 ימים.
היסטוריית הכניסות לחשבון השותף נשמרת 90 יום. אותה תקופה מרבית ללא פעילות חלה על תוכן אירוע תשלום הממתין לניסיון חוזר או לבדיקה ידנית, ולאחריה הנתונים האישיים מאופסים.
חריג נפרד הוא יומן הפעולות של הבינה המלאכותית המחוברת: הוא נחוץ לבחינת פעולות שבוצעו בשם בעל החשבון ונשמר כל עוד החשבון קיים. סודות נמחקים וכתובות אימייל מוסתרות חלקית לפני הרישום, אך כרגע אין ליומן זה TTL קצר נפרד.
אתם יכולים למחוק את החשבון בעצמכם בדף «הגדרות מתקדמות»: מיד ובמלואו, יחד עם כל היומנים שפורטו לעיל, כולל יומן הפעולות של הבינה המלאכותית. נתונים שנמחקו נשארים בגיבויי מסד הנתונים עד שהגיבויים נדרסים, לא יותר מ-30 יום. ההתכתבות עם צוות התמיכה נשמרת בנפרד מהחשבון ונמחקת לפי בקשה.
אם תפעיל ייצוא גיבויים אל Google Drive או S3, נתוני המשתמשים עוזבים את השרת שלך, וההגנה עליהם תלויה מעתה בענן שלך — דוח זה אינו מכסה אותה בנפרד. זו בחירה מודעת שלך: את התכונה אתה מפעיל בעצמך.
כיצד לבדוק זאת.
כל טענה למעלה היא הימור פומבי. אנחנו מזמינים אתכם למצוא היכן טעינו או ייפינו את המציאות:
מסלול A — פגיעויות קלאסיות (RCE, עקיפת הרשאה, IDOR, דליפות וכן הלאה).
מסלול B — הפרכת דוח זה: הוכיחו שכל SR-N שהוא שגוי, קבלו תגמול, ואנחנו נפרסם את התיקון בפומבי.
מצאתם משהו?
כתבו לנו עם הוכחת היתכנות ניתנת-לשחזור. אנחנו מגיבים תוך 72 שעות וממיינים באופן פנימי.