HookGet English להתחיל בחינם

וובהוקים ו-SSRF

למה שירות מסירה הוא מכונת SSRF מעצם הגדרתו, ואיך תוחמים אותו.

בקצרה

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

SSRF (Server-Side Request Forgery) היא מתקפה שבה תוקף גורם לשרת לשלוח בקשה בשמו, אל כתובת שהתוקף עצמו לא יכול להגיע אליה, בדרך כלל כתובת ברשת הפנימית.

למה זה בלב המוצר

מסירה פירושה לשלוח בקשה לכתובת URL שלקוח הקליד. אם הכתובת מובילה למשהו בתוך הרשת (שירות metadata, מסד נתונים, לוח ניהול פנימי), השירות הופך לפרוקסי לתוך התשתית של עצמו, בשביל מי שהקליד אותה. זה לא מקרה קצה. זו הפעולה הרגילה של המוצר, רק מכוונת קצת אחרת.

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

הבדיקה שבאמת מחזיקה

שלבלמה הוא בסדר הזה
מנתחים את ה-URL בקפדנותדוחים פרטי הזדהות בתוך הכתובת, סכמות שאינן HTTP ופורטים מחוץ לרשימה המותרת
מפענחים את שם המארחמקבלים את כל הכתובות שהשם מצביע עליהן כרגע
בודקים כל כתובתכתובת פרטית אחת מתוך כמה מספיקה כדי לסרב
מתחברים לכתובת שנבדקהלא לשם. אחרת, שאילתת DNS שנייה עלולה להחזיר משהו אחר
שומרים את שם המארח המקורי ל-TLS ול-Hostכדי שאימות התעודה ו-virtual hosting ימשיכו לעבוד
לא עוקבים אחרי הפניותהפניה (redirect) היא בעצם היעד שבוחר כתובת שנייה אחרי הבדיקה

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

שתי שכבות, לא אחת

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

אם אתם מריצים מערכת משלכם

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

איך HookGet ניגש לאבטחה, בהרחבה: בעמוד האבטחה.

שאלות

מה זה SSRF ולמה הוא קשור לוובהוקים?

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

למה לא מספיק לבדוק את שם המארח לפני השליחה?

כי בין הבדיקה לחיבור ה-DNS יכול לענות אחרת, וזו מתקפת ה-rebinding. צריך לפענח, לבדוק כל כתובת שחזרה, ולהתחבר בדיוק לכתובת שנבדקה, ולא להעביר את השם ללקוח ה-HTTP.

למה שירות וובהוקים לא צריך לעקוב אחרי הפניות?

כי הפניה היא היעד שבוחר כתובת שנייה אחרי שהבדיקה כבר עברה. אם בכל זאת עוקבים, צריך להריץ את כל הבדיקה מחדש על הכתובת החדשה.

אם הקוד בודק את הכתובות, למה צריך גם שכבת רשת?

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

מה עם יעד מקומי בזמן פיתוח?

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

להתחיל למסור וובהוקים היום

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

פתיחת חשבון חינם לנסות את בודק הוובהוקים החינמי

10,000 מסירות בחודש בחינם, בלי כרטיס אשראי. המסלול החינמי חוסם ולא מחייב, כך שניסיון לא יכול להסתיים בחשבונית.