FixVibe
Covered by FixVibehigh

Откриване и предотвратяване на уязвимости на междусайтови скриптове (XSS)

Cross-Site Scripting (XSS) възниква, когато приложение включва ненадеждни данни в уеб страница без подходящо валидиране или кодиране. Това позволява на атакуващите да изпълняват злонамерени скриптове в браузъра на жертвата, което води до отвличане на сесия, неразрешени действия и излагане на чувствителни данни.

CWE-79

Въздействие

Хакер, който успешно експлоатира уязвимост на Cross-Site Scripting (XSS), може да се маскира като потребител жертва, да извърши всяко действие, което потребителят е упълномощен да извърши, и да получи достъп до която и да е от данните на потребителя [S1]. Това включва кражба на сесийни бисквитки за кражба на акаунти, прихващане на идентификационни данни за вход чрез фалшиви формуляри или извършване на виртуално обезобразяване [S1][S2]. Ако жертвата има административни привилегии, нападателят може да получи пълен контрол над приложението и неговите данни [S1].

Първопричина

XSS възниква, когато приложение получи контролиран от потребителя вход и го включи в уеб страница без правилно неутрализиране или кодиране [S2]. Това позволява входът да бъде интерпретиран като активно съдържание (JavaScript) от браузъра на жертвата, заобикаляйки политиката за същия произход, предназначена да изолира уебсайтове един от друг [S1][S2].

Типове уязвимости

  • Отразено XSS: Злонамерените скриптове се отразяват от уеб приложение към браузъра на жертвата, обикновено чрез URL параметър [S1].
  • Съхранен XSS: Скриптът се съхранява постоянно на сървъра (напр. в база данни или раздел за коментари) и се сервира на потребителите по-късно [S1][S2].
  • DOM-базиран XSS: Уязвимостта съществува изцяло в кода от страна на клиента, който обработва данни от ненадежден източник по несигурен начин, като например запис в innerHTML [S1].

Конкретни поправки

  • Кодиране на данни при извеждане: Преобразувайте контролирани от потребителя данни в безопасна форма, преди да ги изобразите. Използвайте HTML кодиране на обект за тялото на HTML и подходящо JavaScript или CSS кодиране за тези специфични контексти [S1][S2].
  • Филтриране на входа при пристигане: Внедрете строги разрешени списъци за очакваните входни формати и отхвърлете всичко, което не отговаря на [S1][S2].
  • Използвайте заглавки за сигурност: Задайте флага HttpOnly на сесийните бисквитки, за да предотвратите достъп чрез 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, които са често срещани индикатори за базиран на DOM XSS [S1].