XSS (באנגלית: Crisscross Site Scripting) היא התקפת סייבר נגד גולש אינטרנט. התוקף מצליח להזריק קוד זדוני שירוץ בדפדפן של המשתמש. כך הקוד יכול לבצע פעולות בשם המשתמש בשירות. הדבר מתאפשר על ידי ניצול נקודות תורפה באפליקציות אינטרנט ובמגבלות פרוטוקול HTTP, ובדרך כלל כולל גניבת מזהה המשתמש (session id), שהוא הזיהוי שהאתר משתמש בו כדי לדעת מי אתה.
כשהחלו להשתמש ב-JavaScript (שפת תסריטים שמריצה קוד בדפדפן), התבררה סכנה: קוד שמגיע מהשרת יכול לגשת למידע בדפדפן. כדי לצמצם זאת פותחה מדיניות "אותו המקור" (same origin policy). משמעותה: קוד יכול לגשת רק למידע מאותו דומיין ואותו פרוטוקול. פרצות XSS נועדו לעקוף מדיניות זו ולהזריק קוד שיקבל גישה למידע מדומיינים אחרים.
נחלקים לשלושה סוגים עיקריים.
הנקרא גם "זמנית" או Reflected. מתרחש כאשר אתר משתמש בקלט של משתמש כדי לבנות דף HTML דינמי, בלי לנקות את הקלט. דוגמה פשוטה היא מנוע חיפוש שמציג את מחרוזת החיפוש בלי לסנן אותה. אם המחרוזת כוללת קוד זדוני, הקוד ייכנס לעמוד התשובות וירוץ בדפדפן.
בתחילה זה נראה מוגבל, כי הקוד מופיע רק בעמוד שהמשתמש רואה. אך הנדסה חברתית יכולה לשכנע משתמש לפתוח קישור מושכב. כך התוקף ישיג שליטה בעמוד.
הנקרא גם "קבועה" או Stored. זה הסוג המסוכן ביותר. הקוד הזדוני נשמר באתר (למשל בהודעה בפורום) ומוצג לכל מי שנכנס לצפות בתוכן. אם התוקף שם קוד בתוך הודעה, כל הצופים עלולים להיפגע והאקר יכול לגנוב נתוני אימות ולהתחזות אליהם.
הנקרא גם DOM Based XSS או "מקומית". כאן הבעיה היא בסקריפט צד-לקוח (JavaScript) שמשתמש בקלט כדי לבנות דפים, בלי לבדוק אותו. נניח קוד שמקבל כתובת אינטרנט ומייצר איתה HTML; אם הכתובת מכילה קוד, הוא עלול לרוץ בתוך הדף.
להלן שלושה תרחישים המראים איך XSS מנוצלת.
1. מלורי שולח אליס קישור שהוא שולט בתוכנו.
2. אליס פותחת את האתר.
3. האתר מפנה לדף פגיע במחשב של אליס.
4. קוד של מלורי רץ בהרשאות הדף המקומי.
5. הקוד יכול לבצע פעולות בהרשאות המשתמש של אליס.
1. אליס נכנסת לחשבון הבנק שלה באתר של בוב.
2. מלורי מגלה פרצת XSS זמנית באתר של בוב.
3. מלורי שולח לאליס קישור מנוצל ומזייף את כתובת השולח.
4. אליס לוחצת על הקישור בזמן שהיא באתר הבנק.
5. הקוד הזדוני רץ בהרשאות אתר הבנק וגונב את סיסמתה.
1. בוב מנהל פורום.
2. מלורי כותב הודעה המכילה קוד זדוני.
3. משתמשים רבים קוראים את ההודעה.
4. הקוד שולח את נתוני האימות של הצופים למלורי.
5. מלורי יכול להתחזות אליהם לאחר מכן.
יש באינטרנט דוגמאות רבות לניצול פרצות XSS. הן ממחישות את מגוון הטכניקות והסיכונים.
הדרך הנפוצה להגן היא לקודד (quoting או escaping) את כל התווים המיוחדים ב-HTML בתוכן שמגיע מהמשתמש. כך המחרוזת תוצג כטקסט ולא תתבצע כקוד. דוגמה: המחרוזת alert('xss'); מוצגת כטקסט אם היא מקודדת נכון, והקוד לא ירוץ.
הקושי הוא שאם רוצים לאפשר למשתמש תוכן שאינו טקסט פשוט (כמו תגיות HTML מסוימות), יש להפריד בין תגיות חוקיות ולא חוקיות. זהו תהליך מסובך ודורש טיפול מיוחד בכל מקרה.
פרצות XSS קשורות לקבוצת בעיות רחבה של מערכי אבטחה באינטרנט, שכוללות פגיעויות שיכולות לאפשר גישה או גניבת מידע.
XSS (Crisscross Site Scripting) היא דרך שבה קוד רע רץ בתוך דפדפן של משתמש. התוקף דוחף קוד לתוך אתר, והדפדפן מריץ אותו כאילו הוא חוקי.
כשהתחילו להשתמש ב-JavaScript (שפת קוד לדפדפן), היה חשש שקוד רע ישתלט על דפים. לכן נוצרה חוקת "אותו מקור" (same origin policy). חוק זה אומר שאתר לא יכול לקרוא מידע מאתרים אחרים.
יש שלושה סוגים עיקריים.
הוא קורה כשאתר מציג מה שהמשתמש הקליד בלי לבדוק. אם הקלט כולל קוד, הקוד ירוץ. התוקף יכול לשלוח קישור שמכניס את הקוד.
כאן הקוד נשמר באתר, כמו הודעה בפורום. כל מי שקורא את ההודעה עלול להפעיל את הקוד.
זה קורה בתוך הקוד שרץ בדפדפן. אם הקוד משתמש בכתובת או במידע אחר בלי לבדוק אותו, הקוד הרע עשוי לרוץ.
- בקישור מסוכן תוקף יכול לגרום לקוד לרוץ.
- בהודעה בפורום תוקף יכול לשים קוד ולפגוע בקוראים.
המפתחים מקודדים תווים מיוחדים בטקסט שהמשתמשים כותבים. כך הדפדפן מציג את הטקסט במקום להריץ אותו. הבעיה קשה יותר אם רוצים לאפשר למשתמש תגיות או עיצוב, כי אז צריך לבחור אילו תגיות בטוחות.
XSS היא חלק ממשפחה של בעיות אבטחה שעוסקות בגישה בלתי רצויה למידע.
תגובות גולשים