پایگاه دانش

حمله CSRF چیست و چگونه با آن مقابله کنیم؟

CSRF یا Cross-Site Request Forgery یکی از حملات رایج در دنیای سایبری است که با سوءاستفاده از اعتبار کاربر، اقدامات ناخواسته‌ای را در وب‌سایت‌های معتبر انجام می‌دهد. این حمله می‌تواند به سرقت اطلاعات حساس، تغییر تنظیمات حساب کاربری یا انجام تراکنش‌های مالی منجر شود. در این مقاله به بررسی نحوه کارکرد CSRF، پیامدها و خطرات آن، تفاوتش با حملات XSS و روش‌های پیشگیری از آن خواهیم پرداخت.

CSRF چیست؟

CSRF یا Cross-Site Request Forgery یکی از حملات سایبری است که مهاجم از اعتبار کاربر معتبر برای انجام اقدامات غیرمجاز در یک وب‌سایت استفاده می‌کند. در این حمله کاربر بدون اطلاع خود و در حالی که به یک وب‌سایت معتبر وارد شده، درخواست‌هایی را ارسال می‌کند که توسط سرور به‌عنوان درخواست‌های معتبر شناخته می‌شوند. به‌عبارت‌دیگر مهاجم کاربر را فریب می‌دهد تا اقدامات ناخواسته‌ای را انجام دهد، مانند تغییر رمز عبور، انتقال وجه یا ارسال پیام. این حمله به‌دلیل استفاده از اعتبارنامه‌های معتبر کاربر، بسیار خطرناک است.

CSRF معمولاً از طریق لینک‌ها یا فرم‌های مخربی انجام می‌شود که در وب‌سایت‌های دیگر یا حتی در ایمیل‌ها قرار داده می‌شوند. به‌عنوان‌مثال مهاجم لینکی حاوی یک درخواست مخرب را به کاربر ارسال می‌کند و کاربر بدون اطلاع از نیت مخرب، روی آن کلیک می‌کند. سپس درخواست به وب‌سایت معتبری که کاربر در آن وارد شده ارسال می‌شود و به‌دلیل وجود اعتبارنامه معتبر، درخواست پذیرفته می‌شود.

حمله CSRF

نحوه کارکرد حمله CSRF

  1. فریب کاربر:

مهاجم ابتدا کاربر را فریب می‌دهد تا روی لینکی مخرب کلیک کند یا فرم مخربی را ارسال کند. این لینک یا فرم به‌گونه‌ای طراحی شده که درخواست‌های ناخواسته‌ای را به وب‌سایت معتبری که کاربر در آن وارد شده ارسال کند.

  1. ارسال درخواست مخرب:

هنگامی‌که کاربر روی لینک کلیک می‌کند یا فرم را ارسال می‌کند، درخواست مخرب به سرور وب‌سایت ارسال می‌شود. این درخواست شامل کوکی‌های کاربر است که قبلاً توسط مرورگر ذخیره شده‌اند و اعتبار کاربر را تأیید می‌کنند.

  1. تأیید اعتبار توسط سرور:

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

  1. اجرای درخواست و تغییرات ناخواسته:

پس از تأیید اعتبار، سرور عملیات درخواستی را انجام می‌دهد. این عملیات می‌تواند شامل تغییر رمز عبور، انتقال وجه یا هر اقدام حساسی باشد که کاربر به‌طور ناخواسته انجام داده است.

تفاوت CSRF با XSS

حملات CSRF و XSS (Cross-Site Scripting) هر دو از جمله حملات متداول در وب هستند، اما هدف و نحوه اجرای آن‌ها با یکدیگر متفاوت است. در CSRF مهاجم سعی می‌کند از اعتبار کاربر سوءاستفاده کند تا عملیات ناخواسته‌ای را در وب‌سایت معتبر انجام دهد. به‌عبارت‌دیگر کاربر قربانی است و از کوکی‌های معتبر او برای ارسال درخواست‌های مخرب استفاده می‌شود. در XSS مهاجم کدی مخرب را در وب‌سایت قربانی تزریق می‌کند تا در مرورگر کاربر قربانی اجرا شود. در این حالت، هدف، سرقت اطلاعات کاربر یا اجرای کدهای دلخواه در مرورگر اوست.

تفاوت CSRF با XSS

تفاوت دیگر این است که در CSRF، درخواست مخرب از مرورگر کاربر ارسال می‌شود و به‌عنوان درخواست قانونی توسط سرور شناخته می‌شود، زیرا حاوی کوکی‌های معتبر کاربر است. اما در XSS کد مخرب به‌طور مستقیم در صفحه وب تزریق می‌شود و هنگام بازدید کاربر از صفحه، در مرورگر او اجرا می‌گردد. CSRF از اعتبار کاربر سوءاستفاده می‌کند، درحالی‌که XSS از نقص امنیتی در وب‌سایت بهره‌برداری می‌کند تا کد مخرب را به کاربر منتقل کند.

پیامدها و خطرات حمله CSRF

  • تغییر یا حذف اطلاعات کاربر
  • انجام تراکنش‌های مالی بدون رضایت کاربر
  • تغییر تنظیمات حساب کاربری
  • سرقت اطلاعات حساس
  • سوءاستفاده از اعتبار کاربر برای انجام حملات بیشتر

چگونه از CSRF پیشگیری و جلوگیری کنیم؟

استفاده از CSRF Token

یکی از مؤثرترین روش‌ها برای جلوگیری از حملات CSRF استفاده از توکن‌های CSRF است. این توکن‌ها به‌طور تصادفی تولید می‌شوند و به هر درخواست معتبر پیوست می‌گردند. چون مهاجم نمی‌تواند این توکن‌ها را پیش‌بینی کند، درخواست‌های جعلی بدون توکن معتبر رد می‌شوند.

CSRF Token

تأیید هویت و احراز هویت مجدد

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

استفاده از Headerهای خاص

می‌توان درخواست‌های حساس را به‌گونه‌ای تنظیم کرد که فقط با Headerهای خاص ارسال شوند. این Headerها فقط توسط اسکریپت‌های مجاز در دامنه اصلی تنظیم می‌شوند و از ارسال درخواست‌های جعلی توسط سایت‌های دیگر جلوگیری می‌کنند.

بررسی منبع درخواست

بررسی فیلدهای Origin و Referer در Header درخواست‌ها می‌تواند منبع آن‌ها را تأیید کند. اگر درخواست از یک منبع ناشناخته یا غیرمجاز ارسال شده باشد، باید آن را مسدود کرد. این روش به جلوگیری از درخواست‌های مخرب کمک می‌کند.

مثال‌های واقعی از حملات CSRF

  • حمله CSRF به سرویس Gmail

در سال 2007 یک آسیب‌پذیری CSRF در سرویس Gmail کشف شد که به مهاجمان امکان می‌داد ایمیل‌های قربانیان را به‌طور مخفیانه به آدرس دیگری فوروارد کنند. مهاجم با ارسال یک لینک مخرب به قربانی و کلیک او بر روی آن، درخواست تغییر تنظیمات فوروارد ایمیل را به‌صورت مخفیانه ارسال می‌کرد. این حمله نشان داد که حتی سرویس‌های بزرگ نیز در برابر CSRF آسیب‌پذیر هستند.

  • حمله CSRF به سامانه بانکداری ING Direct

در سال 2008، یک محقق امنیتی نشان داد که چگونه می‌توان با استفاده از CSRF مبالغی را از حساب‌های کاربران ING Direct انتقال داد. این حمله با ارسال یک لینک مخرب به قربانی انجام می‌شد. وقتی کاربر وارد حساب بانکی خود می‌شد و سپس روی لینک کلیک می‌کرد، درخواست انتقال وجه به‌طور خودکار و بدون اطلاع او ارسال می‌شد. این واقعه اهمیت محافظت از تراکنش‌های مالی در برابر CSRF را برجسته کرد

سامانه بانکداری ING Direct

  • حمله CSRF به YouTube

در سال 2010 یک آسیب‌پذیری CSRF در YouTube کشف شد که به مهاجمان اجازه می‌داد بدون رضایت کاربران، ویدیوها را به لیست علاقه‌مندی‌های آن‌ها اضافه کنند. این حمله از طریق لینک‌های مخرب در وب‌سایت‌های دیگر یا ایمیل‌های فیشینگ انجام می‌شد. کاربران بدون این که متوجه شوند، ویدیوهایی را در پروفایل خود مشاهده می‌کردند که هرگز آن‌ها را انتخاب نکرده بودند. این حادثه اهمیت استفاده از توکن‌های CSRF در سرویس‌های رسانه‌ای را نشان داد.

جمع‌بندی…

حمله CSRF یکی از تهدیدات جدی در دنیای امنیت سایبری است که می‌تواند به مهاجمان اجازه دهد بدون اطلاع کاربر، اقداماتی را از طرف او انجام دهند. این حملات می‌توانند منجر به افشای اطلاعات حساس، تغییر تنظیمات کاربر یا حتی انتقال وجه مالی شوند. با درک نحوه کارکرد این حملات و همچنین با اجرای اقدامات امنیتی مانند استفاده از توکن CSRF می‌توان از وقوع چنین حملاتی جلوگیری کرد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دیدگاه