מהו XSS (Cross-Site Scripting)?
Cross-Site Scripting, או XSS, הוא פגם אבטחה באתרים המאפשר לתוקפים להוסיף סקריפטים מזיקים לדפי אינטרנט. רוב הזמן, סקריפטים אלו נכתבים ב-JavaScript.
אם מישהו מבקר בדף שנפגע מ-XSS, הדפדפן שלו מריץ את הסקריפט של התוקף. זה יכול לגרום לגניבת עוגיות, חטיפת סשנים או פעולות שנעשות ללא רשות המשתמש.
XSS, כמו SQL Injection, מופיע באופן קבוע ברשימת OWASP Top 10 כאחת הפגיעויות הנפוצות ביותר ביישומי אינטרנט.

איך XSS עובד?
XSS לעיתים קרובות מכוון ליישומי אינטרנט שלא בודקים ומנקים כראוי קלט משתמש.
לדוגמה, אם תיבת תגובות מאפשרת HTML גולמי או JavaScript ללא כל סינון, תוקף יכול להוסיף קוד כמו זה:
<script>alert('Hacked!');</script>
כאשר הקורבנות צופים בדף, הקוד הזדוני רץ בתוך הדפדפן שלהם.
למה XSS חשוב באבטחת סייבר
XSS יכול להוביל לפריצה גדולה יותר:
- השתלטות על חשבון (גניבת עוגיות סשן כדי להתחזות למשתמשים)
- גניבת נתונים (לכידת קלטים מטפסים כמו סיסמאות או כרטיסי אשראי)
- התקפות פישינג (הזרקת טפסי כניסה מזויפים)
- הפצת תוכנות זדוניות (הפניית משתמשים לאתרים זדוניים)
סוגי XSS
- XSS מבוסס DOM
- ההתקפה מתרחשת כולה בדפדפן על ידי מניפולציה של מודל האובייקטים של המסמך (DOM) ללא מעורבות השרת.
- XSS מאוחסן
- סקריפט זדוני מאוחסן באופן קבוע בשרת, כמו במסד הנתונים או בדף הפרופיל.
- XSS מוחזר
- הסקריפט מוחזר משרת האינטרנט (למשל, ב-URL או בהודעת שגיאה), הסקריפט יבוצע כאשר הקורבן לוחץ על קישור שנוצר על ידי התוקפים.
כיצד למנוע XSS
- ניקוי קלטים וקידוד פלטים : תמיד לנקות נתוני קלט של משתמשים לפני עיבודם, להמיר קלט משתמש לפורמט בטוח
- שימוש במדיניות אבטחת תוכן (CSP) : מגביל אילו סקריפטים יכולים להתבצע בדפדפן.
- להימנע מ-eval() וג’אווה סקריפט מוטמע : כדי להפחית סיכוני הזרקה.
- בדיקות אבטחה (DAST/IAST) : להריץ בדיקות אבטחה כדי לזהות פגיעויות מוקדם
דוגמה במקרה אמיתי - תולעת סמי (MySpace, 2005)
מה קרה: סמי קאמקר פרסם פרופיל MySpace שכלל מטען XSS מאוחסן. כאשר משתמשים אחרים צפו בפרופיל, המטען רץ בדפדפנים שלהם, הוא (א) הוסיף את סמי כחבר, (ב) הוסיף את הביטוי “סמי הוא הגיבור שלי” לפרופילים שלהם, ו-(ג) שיכפל את עצמו לדפי הפרופיל של אותם משתמשים.
השפעה: התולעת התפשטה בעצמה ל-~1 מיליון משתמשים בתוך ~20 שעות, מה שאילץ את MySpace לרדת מהאוויר זמנית.
למה זה עבד: MySpace אפשרה HTML/attributes לא מסוננים בשדות פרופיל, מה שאיפשר ביצוע סקריפטים מאוחסנים בדפדפנים של המבקרים.
לקחים / תיקון: קידוד פלט נכון, סינון קלט, הסרת HTML בשדות פרופיל ותיקון מהיר. סמי מאוחר יותר עמד בפני השלכות משפטיות, ו-MySpace פרסה מסננים.
מונחים קשורים
- הזרקת SQL
- DAST (בדיקות אבטחת יישומים דינמיות)
- OWASP Top 10
- CSRF (זיוף בקשות בין אתרים)