מהו 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 (זיוף בקשות בין אתרים)