Въздействие
Хакер, който успешно експлоатира уязвимост на 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].
