FixVibe
Covered by FixVibehigh

حفاظت CSRF: دفاع در برابر تغییرات غیرمجاز دولت

جعل درخواست بین سایتی (CSRF) همچنان یک تهدید مهم برای برنامه های کاربردی وب است. این تحقیق بررسی می‌کند که چگونه چارچوب‌های مدرنی مانند جنگو حفاظت را پیاده‌سازی می‌کنند و چگونه ویژگی‌های سطح مرورگر مانند SameSite دفاع عمیق در برابر درخواست‌های غیرمجاز را ارائه می‌کنند.

CWE-352

تاثیر

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

علت اصلی

علت اصلی CSRF رفتار پیش‌فرض مرورگر وب برای ارسال کوکی‌های مرتبط با دامنه است، هر زمان که درخواستی به آن دامنه ارسال شود، بدون در نظر گرفتن مبدا درخواست [S1]. بدون اعتبار سنجی خاصی مبنی بر اینکه درخواستی عمداً از رابط کاربری خود برنامه اجرا شده است، سرور نمی تواند بین یک اقدام کاربر قانونی و یک اقدام جعلی تمایز قائل شود.

مکانیسم های حفاظتی جنگو CSRF

جنگو یک سیستم دفاعی داخلی برای کاهش این خطرات از طریق ادغام میان افزار و قالب [S2] ارائه می دهد.

فعال سازی میان افزار

django.middleware.csrf.CsrfViewMiddleware مسئول حفاظت CSRF است و معمولاً به طور پیش فرض [S2] فعال است. باید قبل از هر دید میان افزاری که فرض می کند حملات CSRF قبلاً [S2] مدیریت شده اند، قرار گیرد.

پیاده سازی قالب

برای هر فرم داخلی POST، توسعه دهندگان باید تگ {% csrf_token %} را در عنصر <form> [S2] وارد کنند. این تضمین می کند که یک رمز منحصر به فرد و مخفی در درخواست گنجانده شده است، سپس سرور آن را در برابر جلسه کاربر تأیید می کند.

خطرات نشت توکن

یک جزئیات پیاده سازی حیاتی این است که {% csrf_token %} هرگز نباید در فرم هایی که URL های خارجی [S2] را هدف قرار می دهند گنجانده شود. انجام این کار رمز مخفی CSRF را در اختیار شخص ثالث قرار می دهد و به طور بالقوه امنیت جلسه کاربر [S2] را به خطر می اندازد.

دفاع در سطح مرورگر: کوکی‌های SameSite

مرورگرهای مدرن ویژگی SameSite را برای هدر Set-Cookie معرفی کرده اند تا لایه ای از [S1] را با عمق دفاعی ارائه دهند.

  • سخت: کوکی فقط در زمینه شخص اول ارسال می شود، به این معنی که سایت در نوار URL با دامنه کوکی [S1] مطابقت دارد.
  • لاکس: کوکی بر روی درخواست های فرعی بین سایتی (مانند تصاویر یا فریم ها) ارسال نمی شود، اما زمانی که کاربر به سایت اصلی هدایت می شود، مانند دنبال کردن یک پیوند استاندارد [S1] ارسال می شود.

چگونه FixVibe آن را آزمایش می کند

FixVibe اکنون شامل حفاظت CSRF به عنوان یک چک فعال دروازه ای می شود. پس از تأیید دامنه، active.csrf-protection فرم‌های کشف‌شده در حال تغییر را بازرسی می‌کند، ورودی‌های CSRF-token شکل و سیگنال‌های کوکی SameSite را بررسی می‌کند، سپس یک ارسال با منبع جعلی کم تأثیر را انجام می‌دهد و تنها زمانی گزارش می‌دهد که سرور آن را بپذیرد. بررسی‌های کوکی همچنین ویژگی‌های ضعیف SameSite را علامت‌گذاری می‌کنند که دفاع عمیق CSRF را کاهش می‌دهد.