Вплив
Зловмисник, який успішно використовує вразливість міжсайтового сценарію (XSS), може маскуватися під користувача-жертву, виконати будь-яку дію, на виконання якої користувач має право, і отримати доступ до будь-яких даних користувача [S1]. Це включає в себе крадіжку сеансових файлів cookie для викрадення облікових записів, отримання облікових даних для входу за допомогою підроблених форм або виконання віртуального пошкодження [S1][S2]. Якщо жертва має адміністративні привілеї, зловмисник може отримати повний контроль над програмою та її даними [S1].
Основна причина
XSS виникає, коли програма отримує контрольовані користувачем дані та включає їх на веб-сторінку без належної нейтралізації чи кодування [S2]. Це дозволяє веб-переглядачу жертви інтерпретувати введені дані як активний вміст (JavaScript), обходячи політику того самого походження, призначену для ізоляції веб-сайтів один від одного [S1][S2].
Типи вразливості
- Відображено XSS: Шкідливі сценарії відображаються від веб-програми до браузера жертви, як правило, через параметр URL-адреси [S1].
- Зберігається XSS: Сценарій постійно зберігається на сервері (наприклад, у базі даних або в розділі коментарів) і надається користувачам пізніше [S1][S2].
- XSS на основі DOM: уразливість існує виключно в коді на стороні клієнта, який обробляє дані з ненадійного джерела небезпечним способом, наприклад записом у
innerHTML[S1].
Конкретні виправлення
- Кодувати дані на виході: Перетворюйте дані, якими керує користувач, у безпечну форму перед їх рендерингом. Використовуйте кодування сутності HTML для тіла HTML і відповідне кодування JavaScript або CSS для цих конкретних контекстів [S1][S2].
- Фільтрувати вхідні дані після надходження: Запроваджуйте суворі списки дозволених для очікуваних форматів вхідних даних і відхиляйте все, що не відповідає [S1][S2].
- Використовуйте заголовки безпеки: Встановіть прапорець
HttpOnlyдля файлів cookie сеансу, щоб запобігти доступу через JavaScript [S2]. ВикористовуйтеContent-TypeіX-Content-Type-Options: nosniff, щоб браузери не сприймали відповіді як виконуваний код [S1]. - Політика безпеки вмісту (CSP): Розгорніть надійну CSP, щоб обмежити джерела, з яких можна завантажувати та виконувати сценарії, забезпечуючи глибокий рівень захисту [S1][S2].
Як FixVibe перевіряє це
FixVibe може виявити XSS за допомогою багаторівневого підходу на основі встановлених методологій сканування [S1]:
- Пасивне сканування: Виявлення відсутніх або слабких заголовків безпеки, таких як
Content-Security-PolicyабоX-Content-Type-Options, які призначені для пом’якшення XSS [S1]. - Активні зонди: введення унікальних нешкідливих буквено-цифрових рядків у параметри URL-адреси та поля форми, щоб визначити, чи відображаються вони в тілі відповіді без належного кодування [S1].
- Сканування Repo: Аналіз JavaScript на стороні клієнта на наявність «приймачів», які небезпечно обробляють ненадійні дані, наприклад
innerHTML,document.writeабоsetTimeout, які є загальними показниками XSS на основі DOM [S1].
