تاثیر
مهاجمی که با موفقیت از آسیبپذیری Cross-Site Scripting (XSS) سوء استفاده میکند، میتواند به عنوان یک کاربر قربانی ظاهر شود، هر اقدامی را که کاربر مجاز به انجام آن است انجام دهد و به هر یک از دادههای کاربر [S1] دسترسی پیدا کند. این شامل سرقت کوکیهای جلسه برای ربودن حسابها، گرفتن اطلاعات کاربری ورود به سیستم از طریق فرمهای جعلی، یا انجام تخریب مجازی [S1][S2] است. اگر قربانی دارای امتیازات مدیریتی باشد، مهاجم می تواند کنترل کامل برنامه و داده های آن [S1] را به دست آورد.
علت اصلی
XSS زمانی اتفاق میافتد که یک برنامه ورودی قابل کنترل توسط کاربر را دریافت میکند و آن را بدون خنثیسازی مناسب یا رمزگذاری [S2] در یک صفحه وب قرار میدهد. این اجازه می دهد تا ورودی به عنوان محتوای فعال (جاوا اسکریپت) توسط مرورگر قربانی تفسیر شود، و از همان خط مشی مبدا که برای جداسازی وب سایت ها از یکدیگر طراحی شده است [S1][S2] را دور می زند.
انواع آسیب پذیری
- بازتاب XSS: اسکریپت های مخرب از یک برنامه وب به مرورگر قربانی منعکس می شوند، معمولاً از طریق پارامتر URL [S1].
- ذخیره شده XSS: اسکریپت به طور دائم در سرور ذخیره می شود (به عنوان مثال، در پایگاه داده یا بخش نظرات) و بعداً به کاربران ارائه می شود [S1][S2].
- XSS مبتنی بر DOM: این آسیب پذیری کاملاً در کد سمت سرویس گیرنده وجود دارد که داده ها را از یک منبع نامعتبر به روشی ناامن پردازش می کند، مانند نوشتن در
innerHTML[S1].
رفع بتنی
- Ecode Data on Output: داده های قابل کنترل توسط کاربر را قبل از رندر به یک فرم امن تبدیل کنید. از رمزگذاری موجودیت HTML برای بدنه HTML و کدگذاری جاوا اسکریپت یا CSS مناسب برای آن زمینه های خاص [S1][S2] استفاده کنید.
- ورودی فیلتر هنگام ورود: لیست های مجاز دقیق را برای قالب های ورودی مورد انتظار اجرا کنید و هر چیزی را که با [S1][S2] مطابقت ندارد رد کنید.
- از هدرهای امنیتی استفاده کنید: پرچم
HttpOnlyرا روی کوکی های جلسه تنظیم کنید تا از دسترسی از طریق جاوا اسکریپت [S2] جلوگیری کنید. ازContent-TypeوX-Content-Type-Options: nosniffاستفاده کنید تا مطمئن شوید مرورگرها پاسخ ها را به عنوان کد اجرایی [S1] اشتباه تعبیر نمی کنند. - خط مشی امنیت محتوا (CSP): یک CSP قوی برای محدود کردن منابعی که اسکریپت ها می توانند از طریق آنها بارگیری و اجرا شوند، ایجاد کنید، و یک لایه دفاعی در عمق ارائه دهید
چگونه FixVibe آن را آزمایش می کند
FixVibe می تواند XSS را از طریق یک رویکرد چند لایه بر اساس روش های اسکن تعیین شده [S1] شناسایی کند:
- اسکن های غیرفعال: شناسایی هدرهای امنیتی مفقود یا ضعیف مانند
Content-Security-PolicyیاX-Content-Type-Optionsکه برای کاهش XSSContent-Security-Policyطراحی شده اند. - پروب های فعال: تزریق رشته های الفبایی منحصر به فرد و غیر مخرب به پارامترهای URL و فیلدهای فرم برای تعیین اینکه آیا آنها در بدنه پاسخ منعکس می شوند یا نه بدون رمزگذاری مناسب [S1].
- اسکن های Repo: تجزیه و تحلیل جاوا اسکریپت سمت سرویس گیرنده برای "سینک ها" که داده های نامطمئن را به طور ناامن مدیریت می کنند، مانند
innerHTML،document.write، یاsetTimeoutکه شاخص های رایج DXCVFIXVIBETOKEN2ZXCV هستند، XSS [S1].
