השפעה
תוקף המנצל בהצלחה פגיעות של Scripting Cross-Site (XSS) יכול להתחזות למשתמש קורבן, לבצע כל פעולה שהמשתמש מורשה לבצע ולגשת לכל אחד מנתוני המשתמש [S1]. זה כולל גניבת קובצי Cookie כדי לחטוף חשבונות, לכידת אישורי כניסה באמצעות טפסים מזויפים, או ביצוע השחתה וירטואלית [S1][S2]. אם לקורבן יש הרשאות ניהול, התוקף יכול להשיג שליטה מלאה על האפליקציה ועל הנתונים שלה [S1].
סיבת שורש
XSS מתרחש כאשר אפליקציה מקבלת קלט הניתן לשליטה על ידי המשתמש וכוללת אותה בדף אינטרנט ללא נטרול או קידוד הולם [S2]. זה מאפשר לפרש את הקלט כתוכן פעיל (JavaScript) על ידי הדפדפן של הקורבן, תוך עקיפת מדיניות אותו מקור שנועדה לבודד אתרים זה מזה [S1][S2].
סוגי פגיעות
- משתקף XSS: סקריפטים זדוניים משתקפים מאפליקציית אינטרנט לדפדפן של הקורבן, בדרך כלל באמצעות פרמטר URL [S1].
- מאוחסן XSS: הסקריפט מאוחסן באופן קבוע בשרת (למשל, במסד נתונים או קטע הערות) ומוגש למשתמשים מאוחר יותר [S1][S2].
- XSS מבוסס DOM: הפגיעות קיימת כולה בקוד בצד הלקוח שמעבד נתונים ממקור לא מהימן בצורה לא בטוחה, כגון כתיבה ל-
innerHTML[S1].
תיקוני בטון
- קוד נתונים בפלט: המר נתונים הניתנים לשליטה על ידי המשתמש לצורה בטוחה לפני עיבודם. השתמש בקידוד ישות HTML עבור גוף ה-HTML, ובקידוד JavaScript או CSS מתאים עבור ההקשרים הספציפיים הללו [S1][S2].
- סנן קלט בהגעה: הטמע רשימות הרשאות קפדניות עבור פורמטי קלט צפויים ודחה כל דבר שאינו תואם [S1][S2].
- השתמש בכותרות אבטחה: הגדר את הדגל
HttpOnlyבקובצי Cookie של הפעלה כדי למנוע גישה באמצעות JavaScript [S2]. השתמש ב-Content-Typeו-X-Content-Type-Options: nosniffכדי להבטיח שדפדפנים לא יפרשו תגובות לא נכון כקוד הפעלה [S1]. - מדיניות אבטחת תוכן (CSP): פרוס CSP חזק כדי להגביל את המקורות שמהם ניתן לטעון ולבצע סקריפטים, ולספק שכבת הגנה מעמיקה ZXCVIXVIBETOKEN0ZXCVZXCVFIXXVIBETOKEN1.
כיצד FixVibe בודק את זה
FixVibe יכול לזהות XSS באמצעות גישה רב-שכבתית המבוססת על מתודולוגיות סריקה מבוססות [S1]:
- סריקות פסיביות: זיהוי כותרות אבטחה חסרות או חלשות כמו
Content-Security-PolicyאוX-Content-Type-Optionsשנועדו למתן את XSS [S1]. - בדיקות אקטיביות: הזרקת מחרוזות אלפאנומריות ייחודיות שאינן זדוניות לפרמטרים של כתובת URL ולשדות טופס כדי לקבוע אם הם משתקפים בגוף התגובה ללא קידוד מתאים [S1].
- סריקות ריפו: ניתוח JavaScript בצד הלקוח עבור "כיורים" המטפלים בנתונים לא מהימנים בצורה לא בטוחה, כגון
innerHTML,document.writeאוsetTimeout, שהם אינדיקטורים נפוצים שלinnerHTML,document.write, אוsetTimeout, שהם אינדיקטורים נפוצים שלinnerHTML. [S1].
