FixVibe
Covered by FixVibehigh

הגנת CSRF: הגנה מפני שינויים לא מורשים במדינה

זיוף בקשות חוצה אתרים (CSRF) נותר איום משמעותי על יישומי אינטרנט. מחקר זה בוחן כיצד מסגרות מודרניות כמו Django מיישמות הגנה וכיצד תכונות ברמת הדפדפן כמו SameSite מספקות הגנה מעמיקה מפני בקשות לא מורשות.

CWE-352

השפעה

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

סיבת שורש

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

מנגנוני הגנה של Django CSRF

Django מספקת מערכת הגנה מובנית כדי להפחית את הסיכונים הללו באמצעות שילוב תוכנת ביניים ותבנית [S2].

הפעלת תוכנת אמצעית

ה-django.middleware.csrf.CsrfViewMiddleware אחראי על הגנת CSRF והוא מופעל בדרך כלל כברירת מחדל [S2]. זה חייב להיות ממוקם לפני כל תוכנת תצוגה שמניחה שהתקפות CSRF כבר טופלו [S2].

יישום תבנית

עבור כל טפסי POST פנימיים, מפתחים חייבים לכלול את התג {% csrf_token %} בתוך האלמנט <form> [S2]. זה מבטיח כי אסימון ייחודי וסודי נכלל בבקשה, שאותו השרת מאמת לאחר ההפעלה של המשתמש.

סיכוני דליפת אסימונים

פרט יישום קריטי הוא שלעולם אין לכלול את ה-{% csrf_token %} בטפסים הממקדים לכתובות URL חיצוניות [S2]. פעולה זו תדלוף את אסימון ה-CSRF הסודי לצד שלישי, ועלולה לסכן את אבטחת ההפעלה של המשתמש [S2].

דפדפנים מודרניים הציגו את התכונה SameSite עבור הכותרת Set-Cookie כדי לספק שכבת הגנה מעמיקה [S1].

  • קפדנית: קובץ ה-cookie נשלח רק בהקשר של צד ראשון, כלומר האתר בשורת ה-URL תואם לדומיין [S1] של קובץ ה-cookie.
  • רפיון: קובץ ה-cookie אינו נשלח בבקשות משנה חוצות אתרים (כגון תמונות או מסגרות) אלא נשלח כאשר משתמש מנווט לאתר המקור, כגון על ידי ביצוע קישור סטנדרטי [S1].

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

FixVibe כולל כעת הגנת CSRF כבדיקה אקטיבית מגודרת. לאחר אימות הדומיין, active.csrf-protection בודק טפסים משנים מצבים שהתגלו, בודק כניסות בצורת אסימון CSRF ואותות קובצי Cookie של SameSite, ולאחר מכן מנסה שליחת מקור מזויף בעל השפעה נמוכה ומדווח רק כאשר השרת מקבל זאת. בדיקות עוגיות מסמנות גם תכונות חלשות של SameSite שמפחיתות את ההגנה לעומק של CSRF.