מהו 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/תכונות לא נמלטות בשדות פרופיל, מה שאיפשר ביצוע סקריפט מאוחסן בדפדפנים של מבקרים.
שיעורים / תיקון: קידוד פלט נכון, סינון קלט, הסרת HTML בשדות פרופיל ותיקון מהיר. סמי בהמשך התמודד עם השלכות משפטיות, ומייספייס פרסמה מסננים.
מונחים קשורים
- הזרקת SQL
- DAST (בדיקות אבטחת יישומים דינמיות)
- OWASP Top 10
- CSRF (זיוף בקשות בין אתרים)