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