אבטחה
מה אנחנו שומרים, מה אנחנו מסרבים לשמור, ומה עומד בין אירוע שפורסם לבין הרשת של מישהו אחר.
בקצרה
- פרטי גישה נשמרים כגיבוב; את אלה שאנחנו חייבים להשתמש בהם אנחנו מצפינים, לא מגבבים.
- מסירה יוצאת מוגנת פעמיים מפני הגעה לרשתות פרטיות: בקוד ובשכבת הרשת.
- כל שאילתה על נתוני לקוח כוללת את הפרויקט; משאב של לקוח אחר עונה "לא נמצא", אף פעם לא "אסור".
- הנתונים מאוחסנים באיחוד האירופי, בפרנקפורט.
מה נשמר, ואיך
| פריט | איך הוא נשמר | למה |
|---|---|---|
| סיסמת החשבון | גיבוב עם salt ופקטור עבודה אמיתי | אדם בחר אותה, ולכן האנטרופיה נמוכה. פרמטר העלות הוא ההגנה, והוא נשמר בתוך הערך עצמו כדי שאפשר יהיה להעלות אותו בהמשך |
| מפתח API | גיבוב, ועוד הקידומת הגלויה | הקידומת מזהה מפתח ביומן בלי לחשוף אותו. המפתח עצמו אף פעם לא נשמר, ולכן מפתח שאבד מוחלף ולא משוחזר |
| סשן בדפדפן | גיבוב | הטוקן הוא 32 בתים ממחולל אקראי קריפטוגרפי (CSPRNG); אין מילון להריץ מולו, אז הגיבוב משמש לחיפוש ולא כפקטור עבודה |
| קוד כניסה | גיבוב עם מפתח בצד השרת | שש ספרות הן אנטרופיה נמוכה, ולכן הערך השמור תלוי במפתח: עותק של המסד לבדו הוא לא רשימה של קודים שעובדים |
| קישור לאיפוס סיסמה | גיבוב | לשימוש חד-פעמי, קצר מועד, ומבוטל כשמבקשים קישור חדש יותר |
| סוד החתימה של יעד | מוצפן | צריך לשחזר אותו כדי לחתום, ולכן הוא מוצפן ולא מגובב |
| פרמטרים ביומן הביקורת | גיבוב | יומן ביקורת לא אמור להפוך לעותק שני של מה שהוא מבקר |
בטיחות המסירה
שירות וובהוקים הוא מעצם הגדרתו מכונה ששולחת בקשות HTTP לכתובות שהמשתמשים שלה מספקים. זו בדיוק ההגדרה של סיכון SSRF (זיוף בקשות מצד השרת), ולכן ההגנה מפניו היא לב המוצר ולא סעיף ברשימה. פירוט מלא במדריך תעבורה יוצאת ו-SSRF.
- מתרגמים, בודקים, ואז נועלים. כתובת היעד מתורגמת, כל כתובת שחוזרת נבדקת מול הטווחים המיוחדים, והחיבור נעשה בדיוק לכתובת שנבדקה, כך ששם לא יכול להתחלף לכתובת אחרת בין הבדיקה לחיבור.
- שכבה שנייה, בלתי תלויה. הרשת עצמה חוסמת תעבורה יוצאת מחשבון השירות לטווחים פרטיים ולכתובות metadata של הענן, כך שטעות בשכבה הראשונה לא מספיקה.
- לא עוקבים אחרי הפניות. יעד שעונה בהפניה (redirect) לא זוכה לבחור כתובת שנייה.
- HTTPS בפרויקטים חיים. HTTP רגיל מותר רק בפרויקטי בדיקה.
הפרדה בין לקוחות
כל שאילתה על נתוני לקוח מקבלת את מזהה הפרויקט ומכניסה אותו לתנאי ה-where, ואין מסלול ניהולי שעוקף את התנאי. משאב ששייך ללקוח אחר מדווח כ"לא נמצא" ולא כ"אסור", כך שאי אפשר לגשש כדי ללמוד מה קיים. אי אפשר לנחש את המזהים, והם לא רצים לפי סדר.
מה נכנס לצינור
- תוכן האירוע נבדק מבנית: מפתחות של prototype pollution, קינון מופרז, תווי בקרה וסוגי תוכן שאינם JSON נדחים. הבדיקה אף פעם לא בוחנת את המשמעות של הנתונים שלכם.
- כותרות מותאמות שמשכתבות את הבקשה עצמה נדחות, וכך גם ניסיונות להזריק כותרות.
- מקורות נכנסים מאמתים את החתימה של הספק עצמו על הבתים המקוריים לפני שמשהו מתקבל.
חשבונות
- קודי כניסה פגים מהר ותקפים לשימוש אחד. אפשר לנסות קוד רק מספר קטן של פעמים, והוא קשור ללשונית שביקשה אותו.
- קישור לאיפוס סיסמה הוא חד-פעמי וקצר מועד, והוא מנתק כל סשן פתוח. בעל החשבון מקבל מייל שהסיסמה שונתה.
- הכניסה עונה בדיוק אותו דבר כשהכתובת לא מוכרת וכשהסיסמה שגויה.
- התפקידים הם דרגות: צופה, מפתח, מנהל, בעלים. הם מתורגמים להרשאות בכל בקשה, כך שהורדה בדרגה נכנסת לתוקף בכל מקום.
איפה זה רץ
בפרנקפורט, באיחוד האירופי. אין אזור אחר לבחור בו ואין תוספת מחיר על האזור הזה. מחיקה של פרויקט מוחקת את הנתונים שלו.
דיווח על בעיה. אם אתם חושבים שמצאתם חולשה, כתבו ל- [email protected] עם מספיק פרטים כדי לשחזר אותה. נאשר קבלה ונעדכן אתכם. בבקשה אל תבדקו מול נתונים של לקוחות אחרים.
מה אנחנו לא טוענים. אין היום דוח SOC 2, אין HIPAA BAA ואין אישור PCI. אם הרכש אצלכם דורש אחד מהם, אמרו לנו מוקדם. נספר לכם ביושר איפה הדברים עומדים, ולא נתחיל תהליך מאחורי הגב שלכם.
שאלות
איפה הנתונים של HookGet מאוחסנים?
באיחוד האירופי, בפרנקפורט. אין אזור אחר לבחור בו ואין תוספת מחיר על האזור הזה. מחיקה של פרויקט מוחקת את הנתונים שלו.
איך HookGet מונע ממסירה להגיע לרשת פרטית?
בשתי שכבות בלתי תלויות. בקוד, כתובת היעד מתורגמת, כל כתובת שחוזרת נבדקת מול הטווחים המיוחדים, והחיבור נעשה בדיוק לכתובת שנבדקה. ובנפרד, הרשת עצמה חוסמת תעבורה יוצאת מחשבון השירות לטווחים פרטיים ולכתובות metadata של הענן. ואחרי הפניות (redirects) אנחנו לא עוקבים אף פעם.
איך נשמרים מפתחות API וסודות חתימה?
מפתח API נשמר כגיבוב, יחד עם הקידומת הגלויה שלו, ולכן מפתח שאבד מוחלף ולא משוחזר. סוד החתימה של יעד חייב להיות זמין לחתימה, ולכן הוא מוצפן ולא מגובב.
יש ל-HookGet דוח SOC 2?
לא. אין היום דוח SOC 2, אין HIPAA BAA ואין אישור PCI. אם הרכש אצלכם דורש אחד מהם, אמרו לנו מוקדם, ונספר לכם ביושר איפה הדברים עומדים. הבקרות שקיימות היום מפורטות בעמוד התאימות.
איך מדווחים על חולשה?
כתבו ל-[email protected] עם מספיק פרטים כדי לשחזר. נאשר קבלה ונעדכן אתכם. בבקשה אל תבדקו מול נתונים של לקוחות אחרים.
להתחיל למסור וובהוקים היום
מפנים את הוובהוקים ל-HookGet ורואים את המסירה הראשונה מגיעה, חתומה, תוך פחות מדקה.
פתיחת חשבון חינם לנסות את בודק הוובהוקים החינמי
10,000 מסירות בחודש בחינם, בלי כרטיס אשראי. המסלול החינמי חוסם ולא מחייב, כך שניסיון לא יכול להסתיים בחשבונית.