FixVibe
Covered by FixVibehigh

Виявлення та запобігання вразливостям міжсайтового сценарію (XSS)

Міжсайтовий сценарій (XSS) виникає, коли програма містить ненадійні дані на веб-сторінці без належної перевірки чи кодування. Це дозволяє зловмисникам виконувати шкідливі сценарії у браузері жертви, що призводить до викрадення сеансу, несанкціонованих дій і розкриття конфіденційних даних.

CWE-79

Вплив

Зловмисник, який успішно використовує вразливість міжсайтового сценарію (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].