تزریق کد عبارت‌است از بهره‌جویی از باگ‌های یک سامانهٔ رایانه‌ای که منجر به اجرایِ کد‌های ناخواسته در سامانه می‌شود. رخنه‌گر با استفاده از حملات تزریق می‌تواند مسیر برنامه را به سمتی که می‌خواهد تغییر دهد.[۱]

تزریق کد در برنامه نویسی

یکی از زمینه‌سازهای رایج برای حمله‌های تزریق کد اعتماد نابجای توسعه‌دهندگان نرم‌افزارها به ورودی کاربران است که در پی آن حمله‌کننده با سوءاستفاده از این موضوع کد خود را در کنار ورودی کاربر جاسازی می‌کند.[۲]

به طور کلی روش‌های رایج xss به دو دسته تقسیم می‌شوند:

  1. reflected:این روش در هر لحظه از حمله، تنها برای یک درخواست اعتبار دارد. به‌صورت ساده‌تر می‌توان گفت رابطه ایجاد شده بین رخنه گر و قربانی به صورت یک به یک است
  2. stored:این روش برخلاف روش پیشین بسیار خطرناک است. چون اسکریپت مخرب درون برنامه کاربردی جاسازی شده و در یک لحظه به تعداد زیادی از کاربران حمله کرد.

به بیانی دیگر حمـلات XSS در سـه طبقـه اصلی دسته بندی شده اند: مداوم Persistent، غیر مداوم Non-persistent و حملات DOM- XSS Based. حملات مداوم و غیر مداوم جزو آسیب‌پذیری‌های سمت سرور و حملات DOM مربوط به سمت کلاینت هستند.

حمله‌ی Persistent XSS

این نوع از حمله‌ی XSS به عنوان حمله‌ی XSS ذخیره‌شده شناخته شده است که معمولا می‌توان آن را در آن دسته از برنامه‌های وبی که کاربران مجاز به انتقال اطلاعات از طریق ورودی HTML/Javascript هستند (مثلا در کادر متن جستجو)، یافت. این نوع حمله بر روی برنامه وب قربانی ذخیره می‌شود. در زیر سناریوی سوء‌استفاده از آسیب‌پذیری در حمله‌ی Persistent XSS توضیح داده شده است:

• مهاجم از فرم‌های برنامه وب برای تزریق یک رشته جاوا اسکریپت مخرب در مخزن وب‌سایت استفاده می‌کند.

• مرورگر قربانی از وب‌سایتِ آسیب پذیر، یک صفحه وب را درخواست می کند.

• برنامه وب، رشته جاوا اسکریپت مخرب را به همراه پاسخ HTTP وب به مرورگر قربانی انتقال میدهد.

• مرورگر وب، کد جاوا اسکریپت مخرب را در پیام پاسخ HTTP اجرا می‌کند، و سرانجام اطلاعات کاربری قربانی را به وب سرور مهـاجم انتقال می‌یابد.

حمله Non-Persistent XSS

این نوع حمله XSS به عنوان حمله‌ی Reflected XSS نیز شناخته می‌شود و این‌گونه است که اسکریپت اضافه‌شده به صورت یک پیغام خطا از طریق نرم‌افزار وب قربانی بازگردانده می‌شود؛ بنابراین در این نوع حمله نیازی به ذخیره کد مخرب روی نرم‌افزار قربانی نیست. سناریوی این نوع حمله به صورت زیر است:

• در ابتدا مهاجم یک آدرس URL شامل کد مخرب جاوا اسکریپت می‌سازد و آن را به مرورگر انتقال می‌دهد.

• قربانی توسط درخواستی با آدرسی از برنامه وب آسیب‌پذیر فریب می‌خورد.

• برنامه وب آسیب‌پذیر کد مخرب جاوا اسکریپت را با آدرس در Response HTTP ترکیب می‌کند.

• مرورگر قربانی کد مخرب را با پیغام داخل Response HTTP اجرا می‌کند و به همراه پیام، اطلاعات قربانی شامل رمـز عبـور و ... به سرور مهاجم ارسال می کند.

حمله XSS مبتنی بر DOM

این روش جایگزینی برای دو روش قبلی می‌باشد. در این حالت کد مخرب تا زمانیکه کد خوش‌خیم برنامه وب آسیب‌پذیر اجرا شده باشد، اجرا نمی‌شود. مراحل اجرای این حمله به صورت زیر است:

• مهاجم آدرسی درست می‌کند و به همراه کد مخرب به مرورگر قربانی انتقال می‌دهد.

• قربانی توسط آدرسی که توسط مهاجم داخل درخواست قرارداده شده و از طرف برنامه وب آسیب‌پذیر ارسال شده فریب می‌خورد.

• برنامه وب آسیب‌پذیر درخواست را قبول می‌کند، هرچند که احتمال دارد در پاسخ کد مخرب وجود نداشته باشد.

• مرورگر وب، کد خوش‌خیم داخل پاسخ را اجرا می‌کند، در نتیجه کد جاوا اسکریپت مخرب داخل صفحه وب تزریق می‌شود. سپس مرورگـر قربـانی کد مخرب را اجرا می‌کند و باعث انتقال اطلاعات قربانی شامل رمز عبور و ... به سرور مهاجم می‌شود.[۳]

جستارهای وابسته ویرایش

پانویس ویرایش

  1. Popescu-Zeletin et al, E-Infrastructure and E-Services for Developing Countries: Second International ICST Conference, AFRICOM 2010, Cape Town, South Africa, November 25-26, 2010, Revised Selected Papers, 38.
  2. Talukder and Chaitanya, Architecting Secure Software Systems, 338.
  3. پایگاه اطلاع‌رسانی فناوری گرداب، Gerdab IR | (۲۹ اردیبهشت ۱۴۰۱). «پرونده / حملات XSS چیست؟». fa. دریافت‌شده در ۲۰۲۳-۰۶-۰۶.[پیوند مرده]

منابع ویرایش

  • Popescu-Zeletin, R.; Rai, I.A.; Jonas, K.; Villafiorita, A. (2011). E-Infrastructure and E-Services for Developing Countries: Second International ICST Conference, AFRICOM 2010, Cape Town, South Africa, November 25-26, 2010, Revised Selected Papers. Lecture Notes of the Institute for Computer Sciences, Social Informatics and Telecommunications Engineering (به انگلیسی). Springer. Retrieved 2015-05-10.
  • Talukder, A.K.; Chaitanya, M. (2008). Architecting Secure Software Systems (به انگلیسی). CRC Press. Retrieved 2015-05-10.