FixVibe
Covered by FixVibehigh

CORS תצורה שגויה: סיכונים של מדיניות מתירנית מדי

שיתוף משאבים חוצה מקור (CORS) הוא מנגנון דפדפן שנועד להרגיע את מדיניות אותו מקור (SOP). אמנם הכרחי עבור אפליקציות אינטרנט מודרניות, אך יישום לא תקין - כגון הדהוד של כותרת המקור של המבקש או רישום היתרים של המקור 'null' - עלול לאפשר לאתרים זדוניים לחלץ נתוני משתמשים פרטיים.

CWE-942

השפעה

תוקף יכול לגנוב נתונים רגישים ומאומתים ממשתמשים של יישום פגיע [S2]. אם משתמש מבקר באתר אינטרנט זדוני בזמן שהוא מחובר לאפליקציה הפגיעה, האתר הזדוני יכול לשלוח בקשות צולבות ל-API של האפליקציה ולקרוא את התגובות [S1][S2]. זה יכול להוביל לגניבה של מידע פרטי, כולל פרופילי משתמש, אסימוני CSRF או הודעות פרטיות [S2].

סיבת שורש

CORS הוא מנגנון מבוסס כותרות HTTP המאפשר לשרתים לציין אילו מקורות (דומיין, סכמה או יציאה) מורשים לטעון משאבים [S1]. פגיעויות מתעוררות בדרך כלל כאשר מדיניות CORS של שרת גמישה מדי או מיושמת בצורה גרועה [S2]:

  • כותרת מקור משתקפת: שרתים מסוימים קוראים את הכותרת Origin מבקשת לקוח ומהדהדים אותה בחזרה בכותרת התגובה Access-Control-Allow-Origin (ACAO) [S2]. זה למעשה מאפשר לכל אתר אינטרנט לגשת למשאב [S2].
  • תווים כלליים לא מוגדרים: בעוד שהתו הכללי * מאפשר לכל מקור לגשת למשאב, לא ניתן להשתמש בו עבור בקשות הדורשות אישורים (כמו קובצי Cookie או כותרות הרשאה) [S3]. לעתים קרובות מפתחים מנסים לעקוף זאת על ידי יצירה דינמית של כותרת ACAO בהתבסס על הבקשה [S2].
  • רישום הלבן 'null': אפליקציות מסוימות נותנות לרשימת ההיתרים את מקור ה-null, אשר יכול להיות מופעל על ידי בקשות מנותבות או קבצים מקומיים, המאפשרים לאתרים זדוניים להתחזות למקור null כדי לקבל גישה ZXCVIXVIBETOKEN2ZVFXCVIZC.
  • שגיאות ניתוח: טעויות בהתאמת ביטויים regex או מחרוזות בעת אימות הכותרת Origin יכולות לאפשר לתוקפים להשתמש בדומיינים כמו trusted-domain.com.attacker.com [S2].

חשוב לציין כי CORS אינו הגנה מפני זיוף בקשות חוצות אתרים (CSRF) [S2].

תיקוני בטון

  • השתמש ברשימת היתרים סטטית: הימנע מיצירה דינמית של הכותרת Access-Control-Allow-Origin מהכותרת Origin של הבקשה [S2]. במקום זאת, השווה את מקור הבקשה מול רשימה מקודדת של דומיינים מהימנים [S3].
  • הימנע מהמקור 'null': לעולם אל תכלול את null ברשימת ההיתרים שלך של המקורות המותרים [S2].
  • הגבלת אישורים: הגדר את Access-Control-Allow-Credentials: true רק אם הכרחי לחלוטין לאינטראקציה צולבת מוצא ספציפית [S3].
  • השתמש באימות תקין: אם עליך לתמוך במספר מקורות, ודא שהלוגיקת האימות עבור הכותרת Origin היא חזקה ולא ניתן לעקוף אותה על ידי תת-דומיינים או דומיינים בעלי מראה דומה [S2].

כיצד FixVibe בודק את זה

FixVibe כולל כעת זאת כבדיקה אקטיבית מגודרת. לאחר אימות הדומיין, active.cors שולח בקשות API מאותו מקור עם מקור תוקף סינתטי וסוקר את כותרות התגובה של CORS. הוא מדווח על מקורות שרירותיים שיקפו, CORS עם תווים כלליים לחיפוש ו-CORS פתוח לרווחה בנקודות קצה API שאינן ציבוריות תוך הימנעות מרעש נכסים ציבוריים.