FixVibe
Covered by FixVibehigh

شناسایی و جلوگیری از آسیب پذیری های اسکریپت بین سایتی (XSS)

اسکریپت بین سایتی (XSS) زمانی اتفاق می‌افتد که یک برنامه شامل داده‌های غیرقابل اعتماد در یک صفحه وب بدون تأیید یا کدگذاری مناسب باشد. این به مهاجمان اجازه می دهد تا اسکریپت های مخرب را در مرورگر قربانی اجرا کنند که منجر به ربودن جلسه، اقدامات غیرمجاز و قرار گرفتن در معرض داده های حساس می شود.

CWE-79

تاثیر

مهاجمی که با موفقیت از آسیب‌پذیری 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 که برای کاهش XSS Content-Security-Policy طراحی شده اند.
  • پروب های فعال: تزریق رشته های الفبایی منحصر به فرد و غیر مخرب به پارامترهای URL و فیلدهای فرم برای تعیین اینکه آیا آنها در بدنه پاسخ منعکس می شوند یا نه بدون رمزگذاری مناسب [S1].
  • اسکن های Repo: تجزیه و تحلیل جاوا اسکریپت سمت سرویس گیرنده برای "سینک ها" که داده های نامطمئن را به طور ناامن مدیریت می کنند، مانند innerHTML، document.write، یا setTimeout که شاخص های رایج DXCVFIXVIBETOKEN2ZXCV هستند، XSS [S1].