FixVibe
Covered by FixVibemedium

Next.js תצורה שגויה של כותרת אבטחה ב-next.config.js

יישומי Next.js המשתמשים ב-next.config.js לניהול כותרות רגישים לפערי אבטחה אם דפוסי התאמת נתיבים אינם מדויקים. מחקר זה בוחן כיצד תצורות שגויות של תווים כלליים ו-regex מובילים לכותרות אבטחה חסרות בנתיבים רגישים וכיצד להקשיח את התצורה.

CWE-1021CWE-200

השפעה

כותרות אבטחה חסרות יכולות להיות מנוצלות לביצוע קליקים, סקריפטים בין אתרים (XSS), או לאסוף מידע על סביבת השרת [S2]. כאשר כותרות כגון Content-Security-Policy (CSP) או X-Frame-Options מיושמות באופן לא עקבי על פני מסלולים, תוקפים יכולים למקד נתיבים ספציפיים לא מוגנים כדי לעקוף את בקרות האבטחה [S2].

סיבת שורש

Next.js מאפשר למפתחים להגדיר כותרות תגובה ב-next.config.js באמצעות המאפיין headers [S2]. תצורה זו משתמשת בהתאמת נתיב התומכת בתווים כלליים ובביטויים רגולריים [S2]. פרצות אבטחה נובעות בדרך כלל מ:

  • כיסוי נתיב לא שלם: דפוסי תווים כלליים (לדוגמה, /path*) עשויים שלא לכסות את כל נתיבי המשנה המיועדים, ולהשאיר דפים מקוננים ללא כותרות אבטחה [S2].
  • גילוי מידע: כברירת מחדל, Next.js עשוי לכלול את הכותרת X-Powered-By, אשר חושפת את גרסת המסגרת, אלא אם הושבתה במפורש באמצעות תצורת poweredByHeader [S2].
  • CORS תצורה שגויה: כותרות Access-Control-Allow-Origin המוגדרות בצורה לא נכונה בתוך מערך headers עלולות לאפשר גישה לא מורשית חוצה מקורות לנתונים רגישים [S2].

תיקוני בטון

  • דפוסי נתיב ביקורת: ודא שכל דפוסי source ב-next.config.js משתמשים בתווים כלליים מתאימות (למשל, /:path*) כדי להחיל כותרות גלובליות במידת הצורך [S2].
  • השבת טביעת אצבע: הגדר את poweredByHeader: false ב-next.config.js כדי למנוע את שליחת הכותרת X-Powered-By [S2].
  • הגבלת CORS: הגדר את Access-Control-Allow-Origin לדומיינים מהימנים ספציפיים במקום לתווים כלליים בתצורת headers [S2].

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

FixVibe יכול לבצע בדיקה מגודרת פעילה על ידי סריקת האפליקציה והשוואת כותרות האבטחה של מסלולים שונים. על ידי ניתוח הכותרת X-Powered-By והעקביות של Content-Security-Policy על פני עומקי נתיב שונים, FixVibe יכול לזהות פערי תצורה ב-next.config.js.