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

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


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

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

[caption id="attachment_687" align="aligncenter" width="300"]دسته بندی حملات جعل درخواست فرا وبگاهی انواع حملات CSRF[/caption]

حملات جعل درخواست فرا وبگاهی یا همان حملات CSRF که گاهی Sea-Surf نیز تلفظ و بیان می‌گردد بانام‌هایی همچون One-Click Attack، Session Riding و یا XSRF نیز شناخته می‌شود. حملات CSRF از یک اعتماد اشتباه به وجود می‌آید. در این اعتماد اشتباه، یک وب‌سایت به کاربر خود و مرورگرش، اعتماد می‌نماید و کاربر، قربانی حملات CSRF می‌گردد.

برای درک بهتر این نوع حملات به مثال زیر توجه کنید.

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

[caption id="attachment_688" align="aligncenter" width="1076"]مثال حملات جعل درخواست فراوبگاهی سناریوی حملات CSRF[/caption]

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

در حملات CSRF، بیشتر وب‌سایت‌های اجتماعی (مانند شبکه‌های اجتماعی و ایمیل‌ها) و وب‌سایت‌هایی که دارای گردش‌های مالی باارزش (مانند بانک‌ها، کارگذاری‌ها و پرداخت قبوض) هستند موردحمله قرار می‌گیرند. با استفاده از ترکیب حملات مهندسی اجتماعی با حملات CSRF، هکر می‌تواند کدهای HTML و یا جاوا اسکریپت مخرب را به ایمیل کاربران ارسال نماید و یا حتی این کدهای مخرب را در صفحات وب‌سایت خود جاسازی کند تا درخواست‌های URL خاص هکر اجرا شود و سپس کاربران بی‌احتیاط، به‌طور مستقیم با استفاده از آسیب‌پذیری CSRF در دام این حملات گرفتار شوند.

[caption id="attachment_689" align="aligncenter" width="256"]پیشگیری از حملات CSRF روش جلوگیری از حملات CSRF[/caption]

توصیه‌های عمومی برای دفاع از حملات CSRF


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

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

  • بررسی توکن های CSRF


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

  • همگام ساز توکن ها یا Synchronizer Tokens

  • دفاع کوکی‌های دوگانه یا Double Cookies Defense

  • رمزگذاری الگوهای توکن یا Encrypted Token Pattern

  • سربرگ سفارشی یا Custom Header


دیگر راهکارهای موجود برای جلوگیری از حملات CSRF در زیر بیان‌شده‌اند؛ که باید برنامه نویسان و طراحان وب‌سایت‌ها این موارد را در طراحی‌های خود در نظر داشته باشند.

  • استفاده از Captcha در فرم‌ها

  • استفاده از متد POST بجای متد GET

  • پرهیز استفاده از Register_Global در صفحات پردازشگر

  • گرفتن تائید مجدد پس از ارسال یک فرم از کاربر برای انجام فرآیندها

  • ایجاد متغیرهای تصادفی در سمت سرور و بازپس‌گیری آن از طرف کاربر در زمان ارسال هر فرم


انواع حملات CSRF یا حملات جعل درخواست فرا وبگاهی


در این قسمت قصد داریم تا با انواع حملات CSRF که در سطح وب وجود دارند باهم آشنا شویم.

1-حملات CSRF(Change Password)


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

در ابتدا هکر در وب‌سایت X ثبت‌نام کرده و المان‌ها و تگ‌هایی که برای تغییر پسورد نیاز دارد را یادداشت کرده و با استفاده از کد نویسی ساده HTML، یک صفحه را برای تغییر جهت یا Redirect دادن قربانی آماده می‌نماید. سپس هکر این صفحه را در قالب یک عکس یا لینک، پنهان نموده و در وب‌سایت مخرب Y خود، قرار می‌دهد. در طرف دیگر این ماجرا کاربر قربانی به وب‌سایت X لاگین کرده و کوکی‌های نشست او در مرورگر ذخیره می‌گردد. حال کاربر قربانی بدون Log Out کردن از وب‌سایت X آن را بسته و در Tab دیگر به وب‌سایت مخرب هکر به نشانی Y مراجعه می‌نماید. در ادامه این سناریو، کاربر قربانی بر روی عکس یا لینکی که هکر آن را آماده‌سازی کرده بود، کلیک می‌کند. با کلیک قربانی بر روی لینک مخرب، قربانی به سمت وب‌سایت X هدایت می‌گردد؛ ولی در این مرحله کدهایی که هکر نوشته است، مربوط به تغییر پسورد کاربر است. در انتها با ورود کاربر قربانی به وب‌سایت X، پسورد او تغییر کرده است؛ زیرا نشست کاربر قبلاً در مرورگر ذخیره‌شده است. این، یک سناریوی کاربردی درباره حملات CSRF برای تغییر پسورد است که می‌تواند به هکر اجازه تغییر پسورد را بدهد.

[caption id="attachment_690" align="aligncenter" width="256"]Change Password By CSRF تغییر پسورد با استفاده از حملات CSRF[/caption]

2-حملات CSRF(Change Secret)


در این نوع حملات، سناریوی اجرایی همانند حملات تغییر پسورد است ولی با این تفاوت که Secret ها موردحمله قرار می‌گیرند و هکر می‌تواند Secret ها را تغییر دهد.

3-حملات CSRF(Transfer Amount)


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

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

حملات CSRF هم دارای سناریوهای ساده و هم سناریوهای پیچیده هستند. اگر هکر بتواند حملات CSRF را با مهندسی اجتماعی ادغام نماید، می‌تواند خطرناک‌ترین نوع حملات در سطح وب را به وجود آورد.

Comments

Popular posts from this blog

آشنایی با دستورات کاربردی MySQL برای حملات SQL Injection بخش ششم

آشنایی با مفهوم اولیه پایگاه داده و دلیل استفاده از پایگاه‌های داده